本人在做开发的过程中,使用了数组,但赋值后的结果确跟我想象的并不一样,请哪位大虾帮忙解释一下!以下是我的测试程序:public class StringArrayTest {
public StringArrayTest() {
}
public void testStringArray() {
String[] sa=null;
int[] ia=null;
for (int i=0;i<3;i++) {
sa=new String[3];
ia=new int[3];
sa[i]=String.valueOf(i);
ia[i]=i;
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
System.out.println("---------------------"+String.valueOf(0));
for (int i=0;i<sa.length;i++) {
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
}
public static void main(String[] args) {
StringArrayTest stringArrayTest1 = new StringArrayTest();
stringArrayTest1.testStringArray();
}}----------------------------
我这里输出的竟然是如下结果:
sa[0]=0ia[0]=0sa[1]=1ia[1]=1sa[2]=2ia[2]=2---------------------0sa[0]=nullia[0]=0sa[1]=nullia[1]=0sa[2]=2ia[2]=2
public StringArrayTest() {
}
public void testStringArray() {
String[] sa=null;
int[] ia=null;
for (int i=0;i<3;i++) {
sa=new String[3];
ia=new int[3];
sa[i]=String.valueOf(i);
ia[i]=i;
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
System.out.println("---------------------"+String.valueOf(0));
for (int i=0;i<sa.length;i++) {
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
}
public static void main(String[] args) {
StringArrayTest stringArrayTest1 = new StringArrayTest();
stringArrayTest1.testStringArray();
}}----------------------------
我这里输出的竟然是如下结果:
sa[0]=0ia[0]=0sa[1]=1ia[1]=1sa[2]=2ia[2]=2---------------------0sa[0]=nullia[0]=0sa[1]=nullia[1]=0sa[2]=2ia[2]=2
ia=new int[3];
这个是不是应该放在循环的外边?
ia=new int[3];
放在循环里面了。最后一次循环,他各自新建3个长度的数组。sa [null][null][null]
但因为你赋了一次值,所以变为[null][null][2]而
ia [0][0][0](整形数组初始值为0)赋值以后为[0][0][2]
public StringArrayTest() { }
public void testStringArray() {
String[] sa=new String[3];
int[] ia=new int[3];
for (int i=0;i<3;i++) {
//sa=new String[3];
sa[i]=String.valueOf(i);
//ia=new int[3];
ia[i]=i;
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
System.out.println("---------------------"+String.valueOf(0));
for (int i=0;i<sa.length;i++) {
System.out.println("sa["+i+"]="+sa[i]);
System.out.println("ia["+i+"]="+ia[i]);
}
}
public static void main(String[] args) {
StringArrayTest stringArrayTest1 = new StringArrayTest();
stringArrayTest1.testStringArray();
}
}
不知道数组的长度你的for循环次数(3)怎么确定的?还有你的数组到最后一重循环的时候sa=new String[3],你说此时sa的各个位置的值是多少?肯定是null,接下来只对sa[2]进行了赋值,剩下两个肯定是null