zoukankan      html  css  js  c++  java
  • 谈谈对final的理解

        1、final修饰类

          类不能被继承,类中的所有方法都是final的

        2、final修饰方法

          方法不能被覆盖,private修饰的方法隐性的添加了final

        3、final修饰方法内参数

          方法内的参数不会被改变,但如果是类或者引用其值可以被改变   

      public static void main(String[] args){
            StringFinal stringFinal = new StringFinal();
            StringBuffer buffer = new StringBuffer("hello");
            StringFinal.changeValue(buffer);
            System.out.println(buffer);
        }
        public static void changeValue(final StringBuffer buffer){
            //final修饰引用类型的参数,不能再让其指向其他对象,但是对其所指向的内容是可以更改的。
            //buffer = new StringBuffer("hi"); //error
            buffer.append("world");
        }
    

         输出“helloworld”

        4、final修饰变量

          final修饰变量,变量一旦被赋值,就不可被改变。如果变量被赋值为简单数值时,是可以被编译器当成常量调用。

            

    public static void main(String[] args) {
            String a = "hello2";
            final String b = "hello";
            String d = "hello";
            String c = b + 2;
            String e = d + 2;
            System.out.println((a == c));//true
            System.out.println((a == e));//false    String e = d + 2 相当于  String e = new String(d + 2)
    }

      

          如果变量被方法赋值时,也就是说被其他引用赋值时,所以,只能运行时被赋值 

    public class Test { 
        public static void main(String[] args)  { 
            String a = "hello2";   
            final String b = getHello(); 
            String c = b + 2;   
            System.out.println((a == c)); //false   此时的  String c = b + 2;相当于 String c = new String(b + 2)
    } public static String getHello() { return "hello"; } }

      

        总结,在Java里,本质是值传递,所以被final修饰后基本数据变量的值是不变的,final类所指向的引用时不会变的。

    参考:https://www.cnblogs.com/xiaoxi/p/6392154.html;

  • 相关阅读:
    CentOS7 64位下MySQL5.7安装与配置(YUM)
    在windows 7中vagrant up 无反应,没任何信息输出
    vagrant在windows下的安装和配置
    html中嵌入flvplayer.swf播放器,播放视频
    FileItem 出现部分中文乱码解决办法
    华为P6-C00电信版,刷机总是失败? FAIL
    MyEclipse发布按钮无效的办法
    Ubuntu 下建立WiFi热点的方法
    Android系统源码学习步骤
    android源代码在线阅读
  • 原文地址:https://www.cnblogs.com/nicknailo/p/8796452.html
Copyright © 2011-2022 走看看