一位面试官在下面这个问题上问我,该程序的输出是什么。
但是我最终还是尝试了第一行编译而第二行没有编译的原因。
任何人都可以告诉我。
package swain.javainterviewhub.blogspot.in;
import java.util.Scanner;
public class JavaInterviewHub {
public static void main(String[] args) {
String str=null;
System.out.println(str);//Line 1 Compile
System.out.println(null);/Line 2 Not compile
}
}
真正的null是什么,它是字符串,字符还是整数。我的问题是null类型是什么。感谢Sitansu
第二行不编译,因为它System.out
是一个PrintStream
实例,并且PrintStream
有多个println
采用引用类型参数(println(String x)
和println(char x[])
)的方法。当您传递时null
,编译器无法决定选择哪种重载方法。
System.out.println(str)
由于参数(String
)的类型仅匹配println
-的重载版本之一,因此可以通过编译println(String x)
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句