当我得到一个奇怪的输出时,我执行了下面提到的代码.任何人都可以解释为什么我得到这个输出?
码:
public class Bar {
static void foo( int... x ) {
System.out.println(x);
}
static void foo2( float... x ) {
System.out.println(x);
}
public static void main(String args[])
{
Bar.foo(3,3,3,0);
Bar.foo2(3,3,3,1);
Bar.foo(0);
}
}
Run Code Online (Sandbox Code Playgroud)
产量
[I@7a67f797
[F@3fb01949
[I@424c2849
Run Code Online (Sandbox Code Playgroud)
为什么我们要获取"[I@"/ "[F@"前缀和8个字母数字字符,它们是内存地址吗?
以下是合法的数组声明:
int i[][];
int []j[];
int [][]k;
int[][] l;
Run Code Online (Sandbox Code Playgroud)
但是如果我们在一行中声明数组,我们就会收到SYNTAX错误
int [] []i, []j[], k[], l[][];
ERROR: Syntax Error.
Run Code Online (Sandbox Code Playgroud)
为什么会显示此行为?
我已经浏览了本论坛中与此主题相对应的所有问题,我觉得提出一个不同的问题,因为这个问题没有得到明确回答.这是我的场景:我有这个类Test1:
public class Test1 {
public static void main(String args[]) {
int i=0, j=2;
do {
i= i+1;
j--;
} while(j>0);
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是我的问题:a)如果我用++ i替换'i = i + 1'的递增操作,我得到所需的输出为
1
2
Run Code Online (Sandbox Code Playgroud)
但是如果我用i ++替换'i = i + 1'的递增操作,我得到所需的输出为
0
0
Run Code Online (Sandbox Code Playgroud)
我确实理解在for循环中使用前缀和后缀运算符的区别,但为什么在do-while循环中该值根本没有增加?