Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于java中带有System.out.print的运算符的问题_Java - Fatal编程技术网

关于java中带有System.out.print的运算符的问题

关于java中带有System.out.print的运算符的问题,java,Java,有人能告诉我区别和原因吗???????? 我举一个例子: int a = 2; int b = 7; System.out.println(a+b); System.out.println(a+b+"String"); System.out.println("String"+a+b+"String"); System.out.println(a+b+"String"+a+b+"String");

有人能告诉我区别和原因吗???????? 我举一个例子:

int a = 2;
int b = 7;
System.out.println(a+b);
System.out.println(a+b+"String");
System.out.println("String"+a+b+"String");
System.out.println(a+b+"String"+a+b+"String");
System.out.println("String"+a+b+"String"+a+b);

output

9
9String
String27String
9String27String
String27String27
代码

System.out.println("String"+a+b+"String");
假设要执行
字符串
串联

你可以

System.out.println("String"+(a+b)+"String");


请先理解字符串中“+”的含义在Java中,加号可以用来执行算术加法


它还可以用于连接字符串。以这种方式使用加号时,右侧的操作数将自动转换为字符串,然后再与左侧的操作数串联。

确定
+
是指加法还是串联的过程:

  • 将标准运算符优先级规则应用于表达式,以确定运算符的应用顺序

  • 检查每个
    +
    。如果
    +
    的左操作数表达式和右操作数表达式都是原语或包装数字,则
    +
    是加法。否则就是字符串连接

  • 例如:

    将优先规则应用于

    a+b+"String"+a+b+"String"
    
    意味着它相当于

    ((((a+b)+"String")+a)+b)+"String"
    
    然后:

    • a+b
      是加法
    • (a+b)+“String”)
      是串联
    • ((a+b)+“String”)+a
      是串联
    • (((a+b)+“String”)+a)+b
      是串联
    • (((a+b)+“String”)+a+b)+“String”
      是串联

    <>这与java的输出<代码> 9STRIGIN 27字符串< /> >。将
    int
    +
    int
    相加的结果是两个值的算术和。使用
    字符串添加
    int
    的结果相当于将
    int
    转换为其
    字符串
    表示,然后在两个
    字符串
    之间执行
    +
    操作,将两个值连接起来。因此,

    a+b+"String"` => (a + b) + "String"
                  => (2 + 7) + "String"
                  => 9 + "String"
                  => "9String"
    

    您最好查看java规范中的,您将看到如下说明,这些说明将为您提供答案


    我想知道它什么时候运行是为了区分这是串联还是计算如果字符串先出现,它将执行串联我想知道它什么时候运行是为了区分这是串联还是计算所有输出之间的差异?是的,我理解+,但我不明白为什么a+b+“String”进行计算,“String”+a+b+“String”进行串联,这是我的问题。如果先执行a+b,那么它就是int类型。如果是+string,你认为这是一个错误还是输出字符串类型?所以问题是string=int+string代表string+a+b,我认为是这样。字符串的+等于string.append如果它以字符串开头,它将继续追加字符串addition是一种特殊情况。您可以将其视为编译器具有运算符重载。对所有非字符串调用ToString。Int被装箱并评估您的答案,以将该信息放入其中-不要将其留在注释中。
    a+b+"String"` => (a + b) + "String"
                  => (2 + 7) + "String"
                  => 9 + "String"
                  => "9String"
    
    a+b+"String"+a+b+"String"` => ((((a + b) + "String") + a) + b) + "String"
                               => ((((2 + 7) + "String") + 2) + 7) + "String"
                               => (((9 + "String") + 2) + 7) + "String"
                               => (("9String" + 2) + 7) + "String"
                               => ("9String2" + 7) + "String"
                               => "9String27" + "String"
                               => "9String27String"