Java中的打印对象
我运行了以下代码Java中的打印对象,java,tostring,Java,Tostring,我运行了以下代码 String str = null; System.out.println(str); 输出为空 起初,我认为当打印对象隐式调用toString方法时,会抛出NullPointerException。所以,我对结果感到惊讶 然后我考虑了一下输出,认为上面的String语句实际上没有创建任何对象,只创建了不指向任何对象的引用。因此,这可能是这种输出的原因 谁能告诉我我的理解是否正确。用于null的print()方法 public void print(String s) {
String str = null;
System.out.println(str);
输出为空
起初,我认为当打印对象隐式调用toString
方法时,会抛出NullPointerException
。所以,我对结果感到惊讶
然后我考虑了一下输出,认为上面的String语句实际上没有创建任何对象,只创建了不指向任何对象的引用。因此,这可能是这种输出的原因
谁能告诉我我的理解是否正确。用于null
的print()
方法
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
检查它是否为null
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
从Javadoc检查它是否为null
:
打印字符串。如果参数为null,则打印字符串“null”。否则,字符串的字符将根据平台的默认字符编码转换为字节,并且这些字节完全按照write(int)方法的方式写入
NullPointerException
仅当您使用指向null
的引用来调用某个方法或访问某个值时才会发生。仅打印null
值不会导致NullPointerException
因此,在下面的代码中,您将获得NPE
:-
String str = null;
System.out.println(str.length());
如果您看到方法的源代码,如下所示:-
public void print(String s) {
if (s == null) {
s = "null";
}
write(s);
}
因此,它会检查
null
值,并相应地打印“null”
。使用null
引用打印对象应该不会给您带来问题。调用null
引用(或指针,如果愿意)上的操作应该会得到NPE。试着做一个测试
System.out.println(str.toString())
这会给你一个不错的NPE,默认情况下检查null
System.out.print(str.toString());
现在您将获得NullPointerException
+1。看见