动态扩容
动态地添加删除修改元素
1.实现数组在指定位置插入
2.删除某一个指定位置的元素
package com.sxt.arraydemo;
import java.util.ArrayList;
import java.util.Arrays;
public class ArrayDemo14 {
public static void main(String[] args) {
/*int[] arr = {11, 22, 33, 44, 55, 66};
int[] newArray = Arrays.copyOf(arr, arr.length + 1);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(newArray));
newArray[arr.length] = 77;
arr = newArray;
System.out.println(Arrays.toString(newArray));
System.out.println(Arrays.toString(arr));
int[] srcArr = {11, 22, 33, 44, 55, 66};
int[] destArr = new int[4];
System.arraycopy(srcArr, 1, destArr, 0, 4);
System.out.println(Arrays.toString(destArr));*/
int[] arr = new int[]{11, 22, 33, 44, 55, 66};
int[] arr2 = add(arr, 77);
System.out.println(Arrays.toString(arr2));
Arrays.fill(arr, 100);
System.out.println(Arrays.toString(arr));
Arrays.fill(arr, 2, 4, 300);
System.out.println(Arrays.toString(arr));
}
/*
* 向数组中插入一个元素
* 返回值类型: void
* 参数列表: int[] arr, int num
* 方法名: add
*/
public static int[] add(int[] arr, int num) {
int length = arr.length;
int[] tempArray = new int[++length];
System.arraycopy(arr, 0, tempArray, 0, arr.length);
tempArray[length - 1] = num;
arr = tempArray;
return arr;
}
}
foreach遍历数组
foreach是集合和数组的专有遍历方式
格式:
for(元素类型 变量名 : 数组/集合){ }
通过变量名来访问元素;
foreach遍历的特点
1.简化了遍历
2.没有索引
3.底层还是使用普通for来实现
package com.sxt.arraydemo;
import java.util.Arrays;
public class ArrayDemo15 {
public static void main(String[] args) {
int[] arr = {11, 22, 33, 44, 55};
/*// 普通for
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}*/
/*System.out.println("-----------------");
int index = 0;
for (int i : arr) {
System.out.println("索引: " + index + ",数值: " + i);
index ++;
}*/
for (int i : arr) {
System.out.println(i);
i++;
}
/*
* int arr[] = {
11, 22, 33, 44, 55
};
int ai[];
int k = (ai = arr).length;
for (int j = 0; j < k; j++)
{
int i = ai[j];
System.out.println(i);
}
*/
}
}
为什么需要学习可变参数?
== 针对参数的类型确定,参数的个数不确定可以使用可变参数简化编程==
可变参数的格式
参数类型… 变量名
可变参数的特点:
1.可变参本质就是数组
2.可变参数的… 可以放在参数类型和变量名中间的任意位置
3.可变参数只能够出现在参数列表的最后
package com.sxt.arraydemo;
public class ArrayDemo16 {
public static void main(String[] args) {
/*System.out.println(add(10, 20));
System.out.println(add(10, 20, 30));
System.out.println(add(10, 20, 40, 50));*/
System.out.println(add(10,20,30,40,50,60));
}
// 计算两个数的和
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
public static int add(int a, int b, int c, int d) {
return a + b + c + d;
}
public static int add(int ... args) {
// System.out.println(args); [I@7852e922
int sum = 0;
for (int i : args) {
sum += i;
}
return sum;
}
public static int add(float f,int ... args) {
// System.out.println(args); [I@7852e922
int sum = 0;
for (int i : args) {
sum += i;
}
return sum;
}
}