final修饰对象

final修饰对象final修饰对象,那么这对象就是不可变的么,示例demopublicclassFinalObject{staticfinalInteger[]a={1,2,3};publicstaticvoidmain(String[]args){System.out.println(“a原来的内存地址:”+System.identityHashCode(a));for(inti=0;i<3;i++).

final修饰对象,那么这对象就是不可变的么,示例demo

public class FinalObject { 
   
    static final Integer[] a = { 
   1, 2, 3};

    public static void main(String[] args) { 
   
        System.out.println("a原来的内存地址:" + System.identityHashCode(a));
        for (int i = 0; i < 3; i++) { 
   
            a[i] = a[i] + 10;
        }
        System.out.println(Arrays.toString(a));
        System.out.println("修改后a的内存地址:" + System.identityHashCode(a));
    }
}

运行结果:
在这里插入图片描述
可以发现a对象的内容是可以变的,只是即使内容变了后,引用却是没变。

那么重新赋值a对象,是否是可以的呢?

在这里插入图片描述
可以发现编译就报错了。

总结

final修饰的对象引用不可变,内容可变。

今天的文章final修饰对象分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/11939.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注