Java中有不可变类型。如果将不可变对象传递给方法,则在调用该方法后,即使在该方法中更改了值,也不会更改它。我知道所有原语都是不可变的。 String
也是不可变的
我编写了一个简单的代码来检查Java中的功能,看起来原语的包装类也是不可变的。任何人都可以在java中列出所有不可变类型吗?
答案 0 :(得分:4)
即使在该方法中更改了值
,也不会在调用该方法后更改它
与immutable无关。
void change(SomeType st) {
st.setValue(123);
}
会改变真实的东西。而
void change(SomeType st) {
st = new SomeType(123);
}
不会。这里的区别在于您是要更改引用还是对引用的对象进行操作。
字符串和那些包装类被称为不可变,因为绝对没有像setValue
这样的成员函数可以更改该对象。
希望你明白这一点。如果您有任何疑问,可以自由发表评论并提出要求。
答案 1 :(得分:1)
不,那是不可能的。
每个人都可以添加自己的不可变类型,我很确定每个不同版本的java引入了一些新的
答案 2 :(得分:-1)
任何用于保存原始值的类,在jdk中提供都应该通过此列表。
示例 - Integer,Long,Double,String等。