添加有什么区别?

时间:2012-01-31 01:11:14

标签: java

我开始学习Java ..我很兴奋。
第一个代码不是我想要的返回结果..

import java.util.Scanner;
public class Yusuf
{
    public static void main(String args[])
    {
        Scanner text = new Scanner(System.in);
        int a,b;
        System.out.print("Enter first number:");
        a = text.nextInt();
        System.out.print("Enter second number:");
        b = text.nextInt();
        System.out.print("a + b = " + a+b);
    }
}

此代码的结果为“a + b = 1525”(如果a = 15且b = 25(例如我给出随机数))

为什么上面的代码不起作用,比如这段代码:

import java.util.Scanner;
public class Yusuf
{
    public static void main(String args[])
    {
        Scanner text = new Scanner(System.in);
        int a,b,c;
        System.out.print("Enter first number:");
        a = text.nextInt();
        System.out.print("Enter second number:");
        b = text.nextInt();
        c = a+b;
        System.out.print("a + b = " + c);
    }
}

此代码返回40为相同的数字.. 有什么不同?我绝对需要使用不同的变量吗?

5 个答案:

答案 0 :(得分:4)

与字符串一起使用时,+运算符会进行字符串连接。如果您使用+将数字添加到字符串的末尾,则数字将首先转换为字符串。

您的陈述:

System.out.print("a + b = " + a+b); 

获取字符串"a + b"并将a中的值连接为字符串,然后将b中的值连接为字符串。

如果你这样做,它应该按照你想要的方式工作:

System.out.print("a + b = " + (a+b) );

(a+b)的额外parens将导致在字符串连接发生之前评估该添加(作为int添加)。

答案 1 :(得分:0)

+并不总是意味着加法。与字符串一起使用时,它会进行连接。

当你这样做时

System.out.print("a + b = " + a+b);

您正在将ab连接到字符串上。

换句话说,你正在做

(("a + b = " + a) + b);

评估为

"a + b = 15" + b

评估为

"a + b = 1525"

当你这样做时

c=a+b

然后

System.out.print("a + b = " + c);

首先添加 ,然后将结果值(40)连接到字符串上。

答案 2 :(得分:0)

在你说"a + b = " + a + b的第一段代码中,你正在进行字符串连接。无论你添加到字符串中的是什么都将成为一个字符串。

在您的示例中,

首先"a + b = " + a将成为"a + b = 15",然后b将被联系。

因此,它将成为a + b = 1525

在第二个示例中,您分别进行添加,然后连接到字符串。所以你得到了理想的结果。

你也可以做"a + b = " + (a + b)

答案 3 :(得分:0)

问题出在这一行:

System.out.print("a + b = " + a+b);

'a + b'中的'+'运算符被解释为字符串连接而不是整数加法。

将其更改为:

System.out.print("a + b = " + (a+b));

您必须这样做的原因是'+'运算符的重载解析规则和基本Java运算符优先级规则的组合。

  • 如果“+”的操作数是一个字符串,则运算符是字符串连接,非字符串操作数(如果有)将转换为字符串。

  • 如果x op y op z其中'op'是同一个运算符,那么它等同于(x op y) op z


如果将它们组合在一起,"a + b = " + a+babint)相当于:

    ("a + b = " + a) + b

因此

    "a + b = ".concat(Integer.toString(a)).concat(Integer.toString(b))

更正后的版本"a + b = " + (a + b)相当于:

    "a + b = ".concat(Integer.toString(a + b))

答案 4 :(得分:0)

只需执行System.out.print("a + b = " + (a+b));,以便编译器能够理解它必须首先添加a and b而不是连接。