1700443180
1700443181
Stu[]classes=new Stu[60];
1700443182
1700443183
/*classes初始化……*/
1700443184
1700443185
//偶尔一个班级可以容纳80人,数组加长
1700443186
1700443187
classes=expandCapacity(classes,80);
1700443188
1700443189
/*重新初始化超过限额的20人……*/
1700443190
1700443191
}
1700443192
1700443193
通过这样的处理方式,曲折地解决了数组的变长问题。其实,集合的长度自动维护功能的原理与此类似。在实际开发中,如果确实需要变长的数据集,数组也是在考虑范围之内的,不能因固定长度而将其否定之。
1700443194
1700443195
1700443196
1700443197
1700443199
编写高质量代码:改善Java程序的151个建议 建议62:警惕数组的浅拷贝
1700443200
1700443201
有这样一个例子,第一个箱子里有赤橙黄绿青蓝紫7色气球,现在希望在第二个箱子中也放入7个气球,其中最后一个气球改为蓝色,也就是赤橙黄绿青蓝蓝7个气球,那我们很容易就会想到第二个箱子中的气球可以通过拷贝第一个箱子中的气球来实现,毕竟有6个气球是一样的嘛,来看实现代码:
1700443202
1700443203
public class Client{
1700443204
1700443205
public static void main(String[]args){
1700443206
1700443207
//气球数量
1700443208
1700443209
int ballonNum=7;
1700443210
1700443211
//第一个箱子
1700443212
1700443213
Balloon[]box1=new Balloon[ballonNum];
1700443214
1700443215
//初始化第一个箱子中的气球
1700443216
1700443217
for(int i=0;i<ballonNum;i++){
1700443218
1700443219
box1[i]=new Balloon(Color.values()[i],i);
1700443220
1700443221
}
1700443222
1700443223
//第二个箱子的气球是拷贝的第一个箱子里的
1700443224
1700443225
Balloon[]box2=Arrays.copyOf(box1,box1.length);
1700443226
1700443227
//修改最后一个气球颜色
1700443228
1700443229
box2[6].setColor(Color.Blue);
[
上一页 ]
[ :1.70044318e+09 ]
[
下一页 ]