为什么添加String和int这样做?

时间:2012-07-25 14:10:04

标签: java

当我运行以下代码时:

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

但是我不明白结果,谁可以帮忙?

7 个答案:

答案 0 :(得分:14)

当你一起添加一个字符串和一个整数时,它会执行“字符串连接”,它将整数转换为一个字符串并将其粘贴在另一个字符串的末尾。

"Case 1" + 12 

...与

相同
"Case 1" + "12"

所以你的结果将是第一个字符串12后面的字符串。

因此:Case 112

来自字符串的Java文档:

  

“Java语言为字符串提供特殊支持   连接运算符(+),以及将其他对象转换为   字符串。字符串连接是通过StringBuffer实现的   类及其追加方法。字符串转换已实现   通过方法toString,由Object定义并继承所有   Java中的类。有关字符串连接的其他信息   和转换,请参阅Gosling,Joy和Steele,Java语言   说明书中,“

但要小心!从左到右添加作品,那么下面会有什么打印?

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”,因为括号中的数学优先。

答案 1 :(得分:2)

当在字符串和int之间执行连接操作,或者在字符串和任何其他原始数据类型(如float,long,short等)之间执行连接操作时,该原语始终转换为要附加在原始字符串上的字符串。您的输出显示字符串以及变量a和b的字符串表示。

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

答案 2 :(得分:1)

如果使用'+'运算符隐含函数调用,如“toString()”

更改您的类型int =>然后整数尝试这个。

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() 
祝你好运!

答案 3 :(得分:0)

对"添加"意味着什么?一个字符串和一个int?在Java中,必须在运算符的两侧具有相同的类型才能执行所需的操作。在许多情况下,当存在不匹配时,Java会将一个值转换为与另一个值相同的类型。在这种情况下,int被转换为String,因为通常很难将String转换为int。现在+运算符"连接"两个字符串"案例1"和" 12"在第一次println()调用中。 "串联"只是意味着将两个字符串连接成一个字符串,在这种情况下创建字符串" case112"你看到输出。

答案 4 :(得分:0)

它是java中的默认值。如果你执行“string”+“int”,java将首先将整数转换为字符串,然后连接字符串和“int”字符串。 所以在你的情况下: “情况1”与字符串值“12”连接,结果为“情况112”。同样是“案例223”。 如果你想让它做加法操作。你应该这样做 System.out.println(“case”+(1 + a)); 然后输出将是: 案例13

答案 5 :(得分:0)

答案 6 :(得分:-2)

当你打印一个整数时,除了字符串之外,它就像一个字符串。但是,如果你这样做了:

System.out.println(1+1);

它会打印2.这是因为整数紧挨着另一个。

如果你这样做了:

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

它会打印Test2。因为,你首先看一下数字的加法。希望我帮忙。