在Java中我们通常会这样做:
Class myObject = new Class();
Run Code Online (Sandbox Code Playgroud)
因为new
关键字返回一个地址.
但为什么我们这样做呢?:
String myString = "Hello";
Run Code Online (Sandbox Code Playgroud)
仿佛String
是一个原始人?
我向老师问了这个问题,他回答说这是因为引号中的内容相当于一个地址,但他不确定.你确定吗?
"Hello"是否存储在String类的实例变量中?
Java Wrapper类应该是不可变的.这意味着一旦创建了一个对象,例如,
Integer i = new Integer(5);
Run Code Online (Sandbox Code Playgroud)
它的价值无法改变.但是,干嘛
i = 6;
Run Code Online (Sandbox Code Playgroud)
完全有效.
那么,在这种情况下,不变性意味着什么呢?这与自动装箱/拆箱有关吗?如果是这样,有没有办法阻止编译器这样做?
谢谢