zoukankan      html  css  js  c++  java
  • Java之final的解析

    在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。

    1. 当用final修饰一个类时,表明这个类不能被继承。
    2. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
    3. final修饰的成员变量,必须在定义时或者构造函数中初始化赋值,而且一旦赋值则不能改变。
    4. 当一个变量被定义成final 类型时,在编译时能知道其确切的值,则被当成常量使用。

      

    final String a = "hello";
    String b = "hello";
    String c = "helloworld";
    String d = a + "world";
    String e = b + "world";
    System.out.println(c == d);
    System.out.println(c == e);

        输出结果:

          true

          false

      5.  final 修饰的对象内容可变,但是对象是不可变的。如:

        final MyClass myClass = new MyClass();

        myClass.i = myClass.i + 3;

        System.out.println(++myClass.i);

       输出结果:

        4

      但是如果重新给myClass赋值则会编译错误。

        myClass = new MyClass();

      6. 对于方法参数是final类型的

        

     public void testString(final String str){
    
          str += "333";
    
       }//编译产生错误,不可重新赋值
    
       public void testStringBuilder(final StringBuilder str){
    
          str.append("333");
    
    }//可顺利编译执行,并输出333

    总结一下。我认为final所不能改变的只是引用的,而不是引用的内容。当final修饰的变量的引用地址没有发生改变而只是值的改变则是可以的。

  • 相关阅读:
    scala之伴生对象的继承
    scala之伴生对象说明
    “Failed to install the following Android SDK packages as some licences have not been accepted” 错误
    PATH 环境变量重复问题解决
    Ubuntu 18.04 配置java环境
    JDBC的基本使用2
    DCL的基本语法(授权)
    ZJNU 1374
    ZJNU 2184
    ZJNU 1334
  • 原文地址:https://www.cnblogs.com/woniu4/p/4641665.html
Copyright © 2011-2022 走看看