十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
对象数组(也是你上面所说的引用数组)你在声明初始化后,JAVA给它的默认值就是为null值的,只有自己再去实例化具体的对象,它才不为null。所以你不去实例化,调用它的方法就会报那个空指针的异常!
创新互联服务项目包括谯城网站建设、谯城网站制作、谯城网页制作以及谯城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,谯城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到谯城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
附:注意下声明并初始化不同类型的数组时它给的默认值是什么就好了,相当于int[] a = new int[3],则表明数组a里面的元素默认都为0
你想写引用数组,首先要明白引用是什么。
引用是变量空间存储的是值的内存地址而不是拷贝。
数组是个对象,所以数组就是引用类型。
你所说的引用数组我估计是引用现有数组,
那么,你只要将现有创建好的数组赋给新声明的数组即可。
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
因为数组是一个对象。。
java中的参数传递是引用传递。。
传递到
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
这里的sss是那个数组对象的一个引用。。相当于指针。。
sss[0]="bbbbb";
sss[1]="ccccc";
这样处理相当于是在调用这个数组的对象的方法。。
即相当于在对这个对象做处理。。
所以这个对象的值改变了。。
但是String [] a={null,"aaaaa"};a这个引用依然指向那个对象。。所以输出结果就是改变后的结果。。
假如你将
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
改为
public B(String[] sss,String s){
String[] strs = new String[2];
strs[0]="bbbbb";
strs[1]="ccccc";
sss = strs;
s="2222";
}
这样的话..是不会改变那个对象的值的..
只是对sss这个引用重新赋值..让他指向了另一个对象而已..
这样的话前面的a引用依然指向那个对象..那个对象的值也不会改变..
为什么那个String对象的值没有改变呢..
跟上面一样了..
只是对s引用重新赋值了..让他指向了一个新的String对象..
而String aa="111111";aa依然指向的是值为111111的这个String对象..
因为数组是一个对象。。
java中的参数传递是引用传递。。
传递到
public
b(string[]
sss,string
s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
这里的sss是那个数组对象的一个引用。。相当于指针。。
sss[0]="bbbbb";
sss[1]="ccccc";
这样处理相当于是在调用这个数组的对象的方法。。
即相当于在对这个对象做处理。。
所以这个对象的值改变了。。
但是string
[]
a={null,"aaaaa"};a这个引用依然指向那个对象。。所以输出结果就是改变后的结果。。
假如你将
public
b(string[]
sss,string
s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
改为
public
b(string[]
sss,string
s){
string[]
strs
=
new
string[2];
strs[0]="bbbbb";
strs[1]="ccccc";
sss
=
strs;
s="2222";
}
这样的话..是不会改变那个对象的值的..
只是对sss这个引用重新赋值..让他指向了另一个对象而已..
这样的话前面的a引用依然指向那个对象..那个对象的值也不会改变..
为什么那个string对象的值没有改变呢..
跟上面一样了..
只是对s引用重新赋值了..让他指向了一个新的string对象..
而string
aa="111111";aa依然指向的是值为111111的这个string对象..
如果只是要测试把数组的内容输出来,那直接把
thisArray=BasicArray.a;这句注释掉就可以了。
你一定要赋值那可以这样:
thisArray.a = thatArray.a;// 用定义的引用去调a
不过做这个赋值操作没有必要,不影响运行响结果。