-1

次のコードを実行すると:

public class LianXi1 
{ 
   public static void main(String args[]) 
   { 
     int a=12; 
     int b=23; 
     System.out.println("case 1"+a); //

     System.out.println("case 2"+b); //

   } 
} 

私はこの結果を得る:

@ubuntu:~/mycode/test$ java LianXi1 
case 112
case 223

しかし、私は結果を理解していません、誰が助けることができますか?

4

7 に答える 7

14

文字列と整数を一緒に追加すると、「文字列連結」が実行され、整数が文字列に変換されて、もう一方の文字列の末尾に貼り付けられます。

"Case 1" + 12 

...と同じです

"Case 1" + "12"

したがって、結果は、文字12が後に続く最初の文字列になります。

したがって: Case 112

文字列に関するJavaドキュメントから:

「Java言語は、文字列連結演算子(+)、および他のオブジェクトの文字列への変換を特別にサポートします。文字列連結は、StringBufferクラスとそのappendメソッドを介して実装されます。文字列変換は、Objectによって定義されたメソッドtoStringを介して実装されます。文字列の連結と変換の詳細については、「Java言語仕様」の「Gosling」、「Joy」、および「Steele」を参照してください。

ただし、注意してください。作品を左から右に追加すると、次のようになりますか?

System.out.println(1 + 2 + "test" + 3 + 4);

まず、それは1 + 2、に等しい3です。

次に、3(最後のステップの結果)+ "test"を実行します。"3test"

次に、それは"3test" + 3、結果として"3test3"

そして最後に"3test3 + 4です"3test34

ご覧のとおり、物事を括弧で囲んで、希望どおりに出てくるようにすることをお勧めします。

(1 + 2) + "test" + (3 + 4)括弧内の計算が優先されるため、「3test7」になります。

于 2012-07-25T14:11:09.060 に答える
2

文字列とint、または文字列と他のプリミティブデータ型(float、long、shortなど)の間で連結操作が実行されると、プリミティブは常に元の文字列に追加される文字列に変換されます。出力には、文字列に加えて、変数aとbの文字列表現が表示されます。

参照:http ://www.java-samples.com/showtutorial.php?tutorialid = 217

于 2012-07-25T14:14:06.813 に答える
1

'+'演算子を使用する場合、 "toString()"のような暗黙の関数呼び出し

タイプint=>Integerを変更してから、これを試してください。

public class Main { 
   public static void main(String args[]) { 
     Integer a=12; 
     Integer b=23;

     System.out.println("case 1" + a.toString()); //
     System.out.println("case 2" + b.toString()); //
   } 
} 

なぜなら

"case 1" + a => "case 1" + a.toString(); => "case 1" + "12";

他のタイプと同じように

 this + a => this.toString() + a.toString() 

幸運を!

于 2012-07-25T14:18:35.670 に答える
0

文字列と整数を「追加」するとはどういう意味ですか?Javaでは、目的のアクションを実行するには、演算子の両側に同じタイプが必要です。多くの場合、不一致があると、Javaは一方の値をもう一方の値と同じタイプに変換します。この場合、一般に文字列をintに変換するのは難しいため、intは文字列に変換されます。これで、+演算子は、最初のprintln()呼び出しで2つの文字列「ケース1」と「12」を「連結」します。「連結」とは、2つの文字列を1つの文字列に結合することを意味します。この場合、出力に表示される文字列「case112」が作成されます。

于 2012-07-25T14:14:58.577 に答える
0

これはJavaのデフォルトです。「string」+「int」を実行すると、javaは最初に整数を文字列に変換してから、文字列と「int」文字列を連結します。したがって、あなたの場合:「Case1」はint「12」の文字列値と連結され、結果は「Case112」になります。同じことが「ケース223」です。加算操作をさせたい場合。このようにする必要がありますSystem.out.println( "case" +(1 + a)); その場合、出力は次のようになります。ケース13

于 2012-07-25T14:16:50.650 に答える
0

Java言語仕様#15.18.1文字列連結演算子+を読む必要があると思います

于 2012-07-25T14:21:25.827 に答える
-2

文字列のほかに整数を出力すると、文字列のように機能します。ただし、次の場合:

System.out.println(1+1);

2が出力されます。これは、整数が隣にあるためです。

あなたがした場合:

System.out.println("Test"+1+1);

Test2を出力します。なぜなら、最初に数字の足し算を見るからです。私が助けてくれたことを願っています。

于 2012-07-25T14:17:21.713 に答える