我对以下代码感到困惑:
import java.util.*;
public class HelloWorld {
private int x;
public HelloWorld(int x) {
this.x = x;
}
public static void main(String[] args) {
HelloWorld o1 = new HelloWorld(5);
HelloWorld o2 = new HelloWorld(5);
System.out.println(o1);
System.out.println(o2);
Integer i = new Integer(1);
Integer j = new Integer(10);
System.out.println(i);
System.out.println(j);
}
}
很明显,我制作了两个对象HelloWorld类和两个对象Integer类。当我打印它们时,输出就像:
HelloWorld@6d06d69c
HelloWorld@7852e922
1
10
我的疑问是,当我创建helloWorld类的Object时,对象存储了一些引用,但是当我创建Integer类的实例时,值存储在对象中。为什么会这样。
是否也可以将值直接存储在HelloWorld类对象中。
我还注意到,每当我为Java中的任何内置类(如String,Character,List,Map ...)创建对象时,它们都会存储值。那么这些内置类中还存在什么?
答案 0 :(得分:3)
我的疑问是,当我创建helloWorld类的对象时,对象存储了一些引用,但是当我创建Integer类的实例时,值存储在对象中。
否,在两种情况下,值都作为字段存储在实例中(HelloWorld
或Integer
)。
是否也可以将值直接存储在HelloWorld类对象中。
这就是您的代码所做的。
如果要更改HelloWorld
类的实例转换为字符串的方式,请覆盖toString
。例如:
@Override
public String toString() {
return String.valueOf(this.x);
}
您现在看到的输出是默认toString
from Object
的输出。
答案 1 :(得分:0)