【发布时间】:2017-10-05 12:03:10
【问题描述】:
代码:
class Foo
{
public static void main(String[] args)
{
int x[] = new int[5];
for(int i=0;i<5;i++)
x[i]=i*i;
for(int i=0;i<5;i++)
{
System.out.println("Value #" + i+1 + " = " + x[i]);
}
}
}
输出:
tk@insomniac-tk:~$ java Foo
Value #01 = 0
Value #11 = 1
Value #21 = 4
Value #31 = 9
Value #41 = 16
那么,这里发生了什么?我在哪里弄乱了我的java代码?我的意思是为什么在 Java 中,i+1 的字面意思是 i concat 1?
【问题讨论】:
-
连接是从左到右完成的。所以
"Value #" + i首先被执行,Sting+Integer被解释为字符串连接。使用括号表示要在串联之前执行 i+1。 -
你在做两件不同的事情。在 Java 中,您打印一个连接的字符串,而在 C++ 中,您打印单独的“项目”。
-
修复它:
System.out.println("Value #" + (i+1) + " = " + x[i]); -
+在 C++ 中的运算符优先级高于<<。 -
这个问题已经被问过很多次了。这是重复问题的副本。
标签: java