一、数组的复制1 - 浅表赋值
缺点:修改原数组,新数组中的数据也会发生改变
public class Test04{
public static void main(String[] args){
//原数组
String[] arr = {"麻生希","椎名空","水菜丽"};
//新数组
String[] newArr = arr;
//修改原数组
arr[1] = "Werido";
//遍历新数组
for(String element : newArr){
System.out.println(element);
}
}
}
二、数组的复制2 - 深表赋值
public class Test05{
public static void main(String[] args){
//原数组
String[] arr = {"麻生希","椎名空","水菜丽"};
//新数组
String[] newArr = new String[arr.length];
//将原数组下标的元素赋值给新数组
for(int i = 0;i<arr.length;i++){
newArr[i] = arr[i];
}
//修改原数组
arr[1] = "侯小康";
//遍历新数组
for(String element : newArr){
System.out.println(element);
}
}
}
三、数组的扩容
public class Test06{
public static void main(String[] args){
//原数组
String[] arr = {"麻生希","椎名空","水菜丽"};
//计算新容量,扩容1.5倍
int oldCapacity = arr.length;//3
int newCapacity = oldCapacity + (oldCapacity>>1);//4
//新数组
String[] newArr = new String[newCapacity];
//将原数组下标的元素赋值给新数组
for(int i = 0;i<arr.length;i++){
newArr[i] = arr[i];
}
//将新数组的地址赋值给原数组
arr = newArr;
//遍历原数组
for(String element : arr){
System.out.println(element);
}
}
}
四、数组的删除1
缺点:数组作为容器,是存储数据的,这样的删除会让容器越变越小
public class Test07{
public static void main(String[] args){
//原数组
String[] arr = {"麻生希","椎名空","水菜丽","樱井步"};
//新数组
String[] newArr = new String[arr.length-1];//3 - [null,null,null]
//将除了"椎名空"的元素赋值给新数组 -- ["麻生希","水菜丽","樱井步"]
int index = 0;
for(String element : arr){
if(!element.equals("椎名空")){
newArr[index++] = element;
}
}
//将新数组的地址赋值给原数组
arr = newArr;
//遍历原数组
for(String element : arr){
System.out.println(element);
}
}
}
五、数组的删除2
public class Test08{
public static void main(String[] args){
//原数组
String[] arr = {"麻生希","椎名空","水菜丽","樱井步"};
//将删除元素后一位的数据全部都往前移 -- "麻生希","水菜丽","樱井步","樱井步"
for(int i = 1;i<arr.length-1;i++){
arr[i] = arr[i+1];
}
//将最后一位数据赋值为null
arr[arr.length-1] = null;
//遍历原数组
for(String element : arr){
System.out.println(element);
}
}
}