どうすれば可能ですか?私が試してみました:同じPrintlnステートメント(JAVA)でプレーンテキストと変数を使用する方法
System.out.println("Your answer is: " + answer);
と
System.out.println("Your answer is: ", answer);
どうすれば可能ですか?私が試してみました:同じPrintlnステートメント(JAVA)でプレーンテキストと変数を使用する方法
System.out.println("Your answer is: " + answer);
と
System.out.println("Your answer is: ", answer);
をあなたはその
System.out.println("Your answer is: " + answer);
作品を発見しただろう! :)
そしていくつか1つは私のためにdownvoted :) LOL –
あなたは彼らが知っていた唯一の答えに答えた...笑 –
何とかOPが答えたいと思う: –
が動作します。
answer
がオブジェクトを指している(つまりプリミティブではない)場合、toString()
メソッドが暗黙的に呼び出されることに注意してください。
プリミティブは文字列表現に変換されます。
プリミティブは、toString()
が呼び出される対応するラッパークラス(下記の私のコメントを参照)によってラップされます。それでも、プリミティブの場合はラッパーが(プリミティブint i = 100
の場合は100
が出力される)をオーバーライドするので、それについては心配する必要はありません。
String
の場合、文字列自体を返しますが、クラス名とメモリアドレスだけの任意のオブジェクトを返すオブジェクトです。
例:
Your answer is: [email protected]
このようなtoString()
オーバーライド:
class Answer {
private String text;
Answer(String t) {
text = t;
}
public String toString() {
return text;
}
}
が、その後につながるAnswer
がtoString()
をオーバーライドしない場合
mypackage.Answer answer = new mypackage.Answer("yes");
System.out.println("Your answer is: " + answer);
これはちょうど、次を印刷可能性があります:
Your answer is: yes
文字列を連結して出力するので、コードの最初の行は問題ありません。
しかし、2行目は有効ではありません(インデントされた結果が最初のものと同じ場合)、namelオブジェクトをパラメータとしてprintlnメソッドに渡しています。 String.format
のようなものを使用して、printfスタイルの文字列を使用することができます(私はそれを...と呼ぶことができます)。
例:あなたの例ではそう
String.format("Blah %d Blah", i)
:
System.out.println(String.format("Your answer is: %s", answer));
は、このコードをテストした私の頭の上のそれを書いていないことがあります。
System.out.println("Your answer is: " + answer);
あなたは
そのため答えオブジェクトtoString()
方法で、それが可能である方法を求めている場合。println()
は文字列を受け取り、最初に文字列を見ると、次の変数/ ObjectのメソッドtoString()
を呼び出して文字列にします。値がint
の場合は、AutoBoxing
となり、Integer()
オブジェクトに変換され、toString()
メソッドが呼び出されます。
どういった問題がありますか?あなたの最初のコードスニペットはうまくいくようです。 – ddso