数组那些事儿
数组
1.定义:数据就是具有相同的数据类型的一组数据集合.
2.初始化一维数组:
方式1:int[] arr1=new int[]{1,2,3,4,5,6}
方式2:int[] arr2={1,2,3,4,5,6}
3.数组内元素个数:数组.legth
例:数组元素求和
public static void main(String[] args) {
int[] arr= {11,22,33,44,55,66};
int sum=0;
System.out.println("数组的和为:");
for(int i=0;i<arr.length;i++) {
if(i==arr.length-1)
System.out.print(arr[i]+"=");
else System.out.print(arr[i]+"+");
sum+=arr[i];
}
System.out.println(sum);
}
例:求一维数组的最小值
public static void main(String[] args) {
int[] arr= {99,11,33,44,55,66};
int max=arr[0];
for(int i=1;i<arr.length;i++)
if(max<arr[i])
max=arr[i];
System.out.println("数组的最小值:"+max);
}
例:二维数组和一维数组内存比较
public static void main(String[] args) {
int num1=1024*1024*2;
int[] arr1=new int[num1];
for(int i=0;i<arr1.length;i++)
arr1[i]=i;
long m1 = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("一维数组占用内存:"+m1+"MB");
int num2=1024*1024;
int[][] arr2=new int[num1][2];
for(int i=0;i<arr2.length;i++){
arr2[i][0]=i;
arr2[i][1]=i;
}
long m2 = Runtime.getRuntime().totalMemory() / 1024 / 1024;
System.out.println("二维数组占用内存:"+m2+"MB");
}
例:利用数组输出九宫格
public static void main(String[] args) {
int[][] arr=new int[3][3];
int a=2;
int b=3/2;
for(int i=1;i<=9;i++) {
arr[a++][b++]=i;
if(i%3==0) {
a=a-2;
b=b-1;
}else {
a=a%3;
b=b%3;
}
}
System.out.println("输出:");
for(int i=0;i<3;i++) {
for(int j=0;j<3;j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
例:二维数组行转列
public static void main(String[] args) {
int[][] arr= {{1,2,3},{4,5,6},{7,8,9}};
System.out.println("原来的数组:");
for(int i=0;i<arr.length;i++)
System.out.println(Arrays.toString(arr[i]));
int[][] newArr=new int[arr.length][arr[0].length];
for(int i=0;i<arr.length;i++)
for(int j=0;j<arr[i].length;j++)
newArr[j][i]=arr[i][j];
System.out.println("新数组:");
for(int i=0;i<arr.length;i++)
System.out.println(Arrays.toString(newArr[i]));
}
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
新数组:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]