2015-08-24 62 views
1

一位面試官問我下面這個問題,程序的輸出是什麼。java中的Println null參數

但我嘗試在我的最後一行編譯,但第二行沒有編譯它背後的原因是什麼。

任何人都可以告訴我。

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 
    } 

} 

什麼是real.Its字符串或性格特徵或integer.My問題null是什麼null類型。 由於 Sitansu

+0

什麼錯誤不會編譯器給你?這會給你提示原因。 –

+0

方法println(char [])對於PrintStream類型不明確 – Sitansu

+0

編譯器在第二種情況下無法區分是否System.out.println((Object)null)或System.out.println( (String)null)'或確實'System.out.println((char [])null)'。請注意,可能還有一些其他的'println'重載也可能帶有'null'引用。 – msandiford

回答

7

兩線不編譯因爲System.outPrintStream實例,PrintStream具有多於一個println方法採取引用類型參數(println(String x)println(char x[]))。當你通過null時,編譯器無法決定選擇哪種重載方法。

System.out.println(str)通過彙編由於參數(String)的種類只匹配的println重載版本之一 - println(String x)

+3

需要注意的是,您可以修復此問題,添加顯式強制轉換:'println((String)null)'。 –

-1

我不爲什麼要印刷Null。您可以在Print Statement上輸入s String。 您可以用這樣認爲:

String str=null; 
System.out.println(str);//Line 1 Compile 
System.out.println("null");Print Null 
2

,你可以將它轉換,使其工作

System.out.println((String)null);