Java 为什么添加一个字符串和一个int会这样做?
当我运行以下代码时:Java 为什么添加一个字符串和一个int会这样做?,java,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 Lian
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
但是我不明白结果,谁能帮上忙?当你把一个字符串和一个整数加在一起时,它会执行“字符串连接”,将你的整数转换成一个字符串,并粘贴在另一个字符串的末尾
"Case 1" + 12
。。。与
"Case 1" + "12"
因此,您的结果将是第一个字符串,该字符串后面的字符12
一直保持打开状态
因此:案例112
从关于字符串的Java文档中:
“Java语言为字符串提供了特殊支持
连接运算符(+),用于将其他对象转换为
字符串连接是通过StringBuffer实现的
类及其append方法。实现字符串转换
通过方法toString,由Object定义并由所有
有关字符串连接的更多信息
和转换,参见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”,因为括号中的数学具有优先权 当在字符串与int或字符串与任何其他基元数据类型(如float、long、short等)之间执行连接操作时,基元总是转换为要附加在原始字符串上的字符串。您的输出显示字符串加上变量a和b的字符串表示形式
请参阅:添加字符串和int是什么意思?在Java中,要执行所需的操作,必须在运算符的两侧具有相同的类型。在许多情况下,当存在不匹配时,Java会将一个值转换为与另一个值相同的类型。在本例中,int被转换为字符串,因为通常很难将字符串转换为int。现在+运算符在第一次println()调用中“串联”两个字符串“case1”和“12”。“Concatenate”只是指将两个字符串连接成一个字符串,在本例中,该字符串创建您看到输出的字符串“case112”。这是java中的默认值。如果执行“string”+“int”,java将首先将整数转换为字符串,然后将字符串与“int”字符串连接起来。 因此,在你的情况下: “case1”与int“12”的字符串值串联,结果是“case112”。“案件223”也是如此。 如果你想让它做加法运算。你应该这样做 System.out.println(“case”+(1+a)); 那么输出将是:
案例13当您打印一个整数时,除了一个字符串外,它的作用就像一个字符串。但是,如果您这样做了:
System.out.println(1+1);
System.out.println("Test"+1+1);
它将打印出2。这是因为该整数紧挨着另一个整数
如果您这样做了:
System.out.println(1+1);
System.out.println("Test"+1+1);
它将打印Test2。因为,你先看数字的加法。希望我能帮上忙。如果使用“+”操作符隐式调用函数,比如“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()
祝你好运 我认为你需要阅读你的疑问到底是什么?你期望什么?如果你想执行加法,你可以使用
String.valueOf(1+12)
No,System.out.println(“Test”+1+1)
会打印“Test11
。试试看。非常感谢您如此详细的解释!它真的很有帮助!