《Java从入门到精通》第五章学习笔记

第5章 数组

一、一维数组
1、创建
一维数组实质上是一组相同类型数据的集合,在Java中数组不属于数据类型,而是一种对象。
数组的两种声明方式:

int[] arr1;
int arr2[];

数组声明之后,在使用之前还需要先分配内存空间:

arr1=new int[3];  //数组元素个数为3,即长度为3;arr2=new int[2];

声明和分配空间也可以一并操作:

int arr1[]=new int[3];
int arr2[]=new int[2];

元素赋值的两种方法:

arr1[]=new int[]{1,2,3};
arr2[]={4,5};
//找出一维数组中的最小值元素
public class ArrayMinNum {
  public static void main(String[] args){   
    int arr[]=new int[]{12,398,25,1024,414,1973,2,520,1013};
    int tempMin=arr[0];       //最小值暂存器,初始值为第一个元素值
    int markNumber=1;    //位置标识符
    for(int j=1;j<arr.length;j++){
        if(tempMin>arr[j]){
            tempMin=arr[j];
            markNumber=j+1;
        }
    }
    System.out.println("数组arr中最小值是"+tempMin+";是数组中第"+markNumber+"个元素");
  }
}

二、二维数组
二维数组中各元素实际上是一维数组,创建、分配空间及赋值类似:

int arr[][];                    //声明创建
arr=new int[2][3]               //分配2*3个元素空间
arr={{1,2,3},{4,5,6}};              //赋值
int arrx[][]=new int[][]{{1,2},{3,4},{5,6}};  //创建+分配+赋值
//对一个二维数组进行转置操作
public class ArraySwap {
    public static void main(String[] args) {
        int arr1[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}};
        int arr2[][]=new int[3][3];
        for(int i=0;i<arr1.length;i++){
            for(int j=0;j<arr1[i].length;j++){
                arr2[j][i]=arr1[i][j];
            }
        }
        for(int i=0;i<arr1.length;i++){
            for(int j=0;j<arr1[i].length;j++){
                System.out.print(arr1[i][j]+"  ");
            }
            System.out.println("");
        }
        for(int i=0;i<arr2.length;i++){
            for(int j=0;j<arr2[i].length;j++){
                System.out.print(arr2[i][j]+"  ");
            }
            System.out.println("");
        }
    }
}

三、数组的基本操作
1、通过for方法的遍历元素

//1、二维数组的元素遍历输出
public class ArrayTrap {
    public static void main(String[] args){
        int arr[][]=new int[][]{{1,3,5,7},{2,4,6},{0,10}};
        System.out.println("for循环常规方法:");
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                System.out.print(arr[i][j]+"  ");
            }
            System.out.println("");
        }
        System.out.println("foreach方法:");
        for(int arrx[]:arr){
            for(int a:arrx){
                System.out.print(a+"  ");
            }
            System.out.println("");
        }
    }
}

2、填充替换数组元素
(1)fill(int[] a,int value)方法:将value的值赋给数组a中每一个元素,该方法的返回值为更改后的数组a。
(2)fill(int[] a,int fromIndex,int toIndex,int value):将value的值赋给数组a中的元素,范围从索引为fromIndex的元素开始,到索引为toIndex的元素结束不包括该元素,该方法的返回值为更改后的数组a。

//将数组中部分元素更改值
import java.util.Arrays;
public class ArrayDisplace {
    public static void main(String[] args){
        int arr[]=new int[]{13,8,9,520,14,4,24,27};
        System.out.println("填充前数组为:");
        for(int x:arr){
            System.out.print(x+" ");
        }
        Arrays.fill(arr,1,4,520);
        System.out.println("填充后数组为:");
        for(int x:arr){
            System.out.print(x+" ");
        }
    }
}

3、复制数组
(1)copyOf(arr,int newlength):arr是要进行复制的数组。newlength用于指定赋值后新数组的长度,如该长度大于arr长度,则其余用0填充(整型数组)或null(char型数组)。如果newlength小于arr长度,则按newlength截取。返回值为复制后的新数组。
(2)copyOfRange(arr,int fromIndex,int toIndex):复制范围从索引为fromIndex的元素开始,到索引为toIndex的元素结束不包括该元素,该方法的返回值为复制后的新数组。
四、实例

//用冒泡法从小到大排序数组元素
public class BubbleSortArray {
    public static void main(String[] args){
        int ourArray[]=new int[]{1973,10,1013,24,414,4,1980,520,13,19999};
        int temp;
        System.out.println("排序前:");
        for(int x:ourArray){
            System.out.print(x+" ");
        }
        for(int i=1;i<ourArray.length;i++){
            for(int j=0;j<ourArray.length-i;j++){
                if(ourArray[j]>ourArray[j+1]){
                    temp=ourArray[j+1];
                    ourArray[j+1]=ourArray[j];
                    ourArray[j]=temp;
                }
            }
        }
        System.out.println("排序后:");
        for(int x:ourArray){
            System.out.print(x+" ");
        }
    }
}
//创建一个int型二维数组,求各元素之和并打印
public class ArraySum {
    public static void main(String[] args){
        int arr[][]=new int[][]{{13,414,73},{10,24,80},{2012,10,13},{520,13,14}};
        int sum=0;
        for(int a[]:arr){
            for(int x:a){
                sum+=x;
            }
        }
        System.out.println("二维数组arr各元素总和为"+sum);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值