java中所有不可变类型

shi*_*t66 2 java types immutability

Java 中有不可变类型。如果将不可变对象传递给方法,则在调用该方法后它不会更改,即使它的值在该方法中发生了更改。我知道所有原语都是不可变的。并且String也是一成不变的。
我编写了一个简单的代码来检查 Java 中的功能,并且基元的包装类似乎也是不可变的。有人能列出java中所有不可变类型吗?

Hao*_*hun 5

即使在该方法中更改了它的值,调用该方法后它也不会更改

与不可变无关。

void change(SomeType st) {
    st.setValue(123); 
}
Run Code Online (Sandbox Code Playgroud)

会改变真实的事情。尽管

void change(SomeType st) {
    st = new SomeType(123);
}
Run Code Online (Sandbox Code Playgroud)

惯于。这里的区别在于您是更改引用还是对引用的对象进行操作。

String 和那些包装类被称为不可变的,因为绝对没有像setValue这样的成员函数可以更改该对象。

希望你明白这一点。如果您还有疑问,可以自由评论和提问。