字符串如何接受整数?

时间:2014-02-06 05:14:19

标签: java

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

示例:

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

我期待编译错误,因为String正在与整数连接。

5 个答案:

答案 0 :(得分:2)

关于字符串连接运算符(+)的JLS文档 -

15.18.1 String Concatenation Operator +

  

如果只有一个操作数表达式是String类型,则为string   在另一个操作数上执行转换以生成一个字符串   运行。结果是对String对象的引用(新创建的,   除非表达式是编译时常量表达式   (§15.28))这是两个操作数字符串的串联。该   左侧操作数的字符在字符之前   新创建的字符串中的右侧操作数。如果是类型的操作数   String为null,然后使用字符串“null”而不是该操作数

这就是String + int不会产生任何错误的原因。并打印42042

答案 1 :(得分: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);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

双引号中给出的任何内容都是String,+用于连接任意值(int值)的字符串。
因此整数值将附加到字符串。 这里

String str = "420";
     str += 42; // 42 will be appended to 420 and result will be 42042

答案 4 :(得分:0)

x = 20 y = 10

我在下面从高到低显示优先顺序:

B - 支架 O - 电力 DM - 划分和乘法 AS - 添加和减少

如果运算符具有相同的优先级,则从左到右工作

现在

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

“打印:”:是字符串“

“+”:是Java中唯一一个将Number连接到String的重载运算符。由于我们在这里有2个“+”运算符,并且x + y在“print:”+之后已经发生了,因此它将x和y视为字符串。

所以输出是2010年。

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

这里

“*”:优先级高于+

首先是x * y然后打印:+

所以输出是200

如果在第一种情况下需要200作为输出,请执行此操作:

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

Bracket的优先顺序高于Addition。