一道题:
public class Test{
public static void main(String[] args) {
int []a,b[];
int [][]c;
int d[][];
a=null;
b=null;
c=null;
d=null;
//b=a;
//d=a;
}
}
int []a,b[];表达了什么意思?如果去掉注释,那两句为什么是错的?
public class Test{
public static void main(String[] args) {
int []a,b[];
int [][]c;
int d[][];
a=null;
b=null;
c=null;
d=null;
//b=a;
//d=a;
}
}
int []a,b[];表达了什么意思?如果去掉注释,那两句为什么是错的?
d=a;//理由同上,且一个为二维一个为一维
二个理由都完全一样,同为下一个。null赋值,1.5应该可以
int []a ---> int a[];
而b就相当于b[][]
int []a ---> int a[];
而b就相当于b[][]
----------------------
抱歉,我还是不懂。我知道int []a ---> int a[];但为什么“b就相当于b[][]”?如果把“int []a,b[];”改为“int a[],b[];”,那b=a就可以通过。
这是因为在编译int []a,b[];时,先编译了int [],然后再分别定义了a和b[],定义后的a和b[]就变成了a[]和b[][]了.
equals to
int[]a;
int[]b[];
equals to
int[]a;
int[][]b;
equals to
int a[];
int b[][];
你的程序改为
class Test{
public static void main(String[] args) {
int []a,b;
int [][]c;
int d[];
a=null;
b=null;
c=null;
d=null;
b=a;
d=a;
}
}
也就是说使得a,b,d的维数都相等的话就可以赋值了。不相信的话可以复制去运行下看。