java中的常量编程 常量被修改?

我们都知道String是java中的常量中的字苻串,是不可变的对String类的任何改变,都是返回一个新的String类对象但如果非要改变它也不是不可以,利用反射就可以做到

v = new char[1];// 目测因为是get到嘚是引用的复制,这个引用改变不影响原引用

可见一旦修改了一个String常量的值,所有字符串和它相等的变量的值都会改变据说是因为它們在底层都是用的同一份数据,没验证。

嗯,强行改人家String的值有什么意义呢除了真的很危险暂时还没想出来。。

我们知道java中的常量是面向对象語言,但不是完全的面向对象的因为它还有包装类型,比如int的包装类型 Integer(这点应该和java中的常量历史有关系)像.net这种后来的语言是没有这個说法的

基本数据类型对象包装类

 我们可以看到String使用private final char value[]来实现字符串的存储,也就是说String对象创建之后,就不能再修改此对象中存储的字符串內容,就是因为如此,传统来说的话String类型是不 可变的(immutable)。

但在java中的常量 1.5之后我们可以通过反射来改变String的值

 //从java中的常量1.5开始对象属性可以通过反射來修改

我要回帖

更多关于 java中的常量 的文章

 

随机推荐