JAvaトラップ3最後の笑い声

832 ワード

次のプログラムで印刷した内容は?
Javaコード
public class LastLaugh{   
  public static void main(String[] args){   
    System.out.println("H"+"a");   
    System.out.println('H'+'a');   
  }   
}  

このプログラムはHaHaを印刷しません.Ha 169を印刷します.
1番目の出力については、1つの文字列接続を実行するHaが呼び出され、2番目の呼び出しについては、「H」および「a」が文字型文字列定数であるため、+オペレータは文字列接続ではなく加算を実行する.
では、どのように文字を接続すればいいですか?クラスライブラリを使用できます.たとえば、文字列バッファを使用できます.
Javaコード
StringBuffer sb = new StringBuffer();   
sb.append('H');   
sb.append('a');   
System.out.println(sb);  

これにより、正常に動作しますが、醜いため、少なくとも1つのオペランドが文字列タイプであることを確認することで、加算ではなく+オペレータに文字列接続操作を強制することができます.慣用は空の文字列(")です.
文字列接続は、+オペレータのオペランドの少なくとも1つがStringタイプである場合にのみ実行されます.