2014-02-06 57 views
1

变量String也可以接受整数值。或者我们可以用字符串连接整数吗?字符串如何接受整数?

例子:

public class TestString1 { 
     public static void main(String[] args) { 
     String str = "420"; 
     str += 42; 
     System.out.print(str); 
    } 
} 

我所期待的编译错误,在这里,因为该字符串得到一个整数连接起来。

回答

0

int添加到String将int附加到字符串,从而将int转换为字符串。

+0

为了便于比较,请考虑'System.out.print(“值为”+42)“。添加到字符串意味着附加到它,它意味着必要时将第二个参数转换为字符串。 – keshlam

0

任何用双引号给出的字符串都是字符串,而+用于将字符串与任何值(int值)连接起来。
所以整数值将被附加到字符串。 这里

String str = "420"; 
    str += 42; // 42 will be appended to 420 and result will be 42042 
2
上字符串concatination操作者

JLS文档(+) -

15.18.1 String Concatenation Operator +

如果只有一个操作数的表达是字符串类型,那么串 转换在另一个操作数执行在 运行时产生一个字符串。结果是对String对象的引用(新创建, ,除非表达式是编译时常量表达式 (第15.28)),它是两个操作数字符串的串联。左侧操作数的 字符位于新创建的字符串中右侧操作数的 字符的前面。如果 String类型的操作数为null,则字符串“null”被使用的操作数

这就是为什么字符串+ INT不产生任何错误而不是。它打印42042

1

没有其他答案解释了这里实际执行的内容。

您的代码将被转换为类似:

String str = "420"; 

// str += 42; 
StringBuilder sb = new StringBuilder(str); 
sb.append(42); // which internally does something similar to String.valueOf() 
str = sb.toString(); 

System.out.print(str); 
0

X = 20 Y = 10

我显示的优先顺序低于从高至低:

乙 - 支架 O - 电源 DM - 除法和乘法 AS - 加法和减法

T他的作品从左至右如果运营商是相同的优先级的现在

的System.out.println( “打印:” + X + Y);

“打印”:是一个字符串”

“+”:是在Java中,只有重载操作,这将串联数为String。由于我们在这里有2个“+”运算符,并且x + y落在已经发生的“printing:”+之后,所以它将x和y视为字符串。

所以输出是2010

的System.out.println( “打印:” + X * Y);

这里

“*” 的优先级高于+

所以它的X * Y第一,然后打印:+

所以输出200

像这样做如果你想在第一种情况下将200作为输出:

System.out.println(“printing:”+(x + y));

括号的优先顺序高于添加。