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;

  • 相关阅读:
    array_count_values源码
    php 编译安装记录
    mysql 安装的过程做个记录
    初识highcharts 库
    php 不重新编译增加新扩展的方法
    备考PMP
    Beyond Compare4破解--写reg脚本删除注册表
    SourceTree 跳过登录
    正则 (?=exp)
    springmvc--处理器的返回参数
  • 原文地址:https://www.cnblogs.com/nicknailo/p/8796452.html
Copyright © 2011-2022 走看看