数组

数组的定义:用来储存一组相同类型的数据的数组结构.

数据类型 [] 数组名 = new 数据类型 [数组长度];

数据类型 数组名 [] = new 数据类型 [数组长度];

初始化完成后在内存中分配一段连续的空间,其在内存中开辟的空间也随之固定,此时数组的长度 不能随之发生变化。即使数组中没有任何数据,数组所占的空间任然存在。

由于定义数组时分配的是连续空间,所以数组元素在数组里顺序排列编号。

 

数组的初始化:

数组初始化就是在定义数组时同时一并完成赋值操作。

数据类型 [] 数组名 ={值1,值2,值3}

数据类型 [] 数组名 = new 数据类型 [] {值1,值2 ,值3}

数组的遍历:循环输入数组

public static void main(String[] args){
  int score[] = new int [5];
  Scanner input = new Scanner(System.in);
  for(int i = 0;i <score.length;i++){
  score[i] = input.nextInt();
  }
}

增强for循环:

for(元素类型 变量名 :要循环的数组或集合名){

}

public static void main(String[] args){
  int score [] = {45,45,45,667,67};
  for(int i : score){
    System.out.println("数组元素值依次为:"+i);
  }
}

数组添加:

String[] student = new String[5];
        Scanner input = new Scanner(System.in);
        System.out.println("输入5句话:");

        for (int i=0;i<student.length;i++){
            System.out.println("第"+(i+1)+"句话:");
            student[i]=input.next();
       }
        System.out.println("逆序");
        for (int i=4;i>=0;i--){
            System.out.println(student[i]);
        }

数组修改:

int indexNew=-1;
     String[]phone = {"iphone3经典","iphone4革新","iphone4s变化不大","iphone5"};
     for ( int i=0;i<phone.length;i++){
         if (phone[i].equals("iphone5")){
             indexNew=i;
             break;
         }
     }
     if (indexNew!=1){
         phone[indexNew]="iphone5掉漆";
         for (int i=0;i<phone.length;i++){
             System.out.println(phone[i]);
         }
     }else {
         System.out.println("不存在iphone5");
     }

常见问题:

数组下标从零开始!!!

掌握二维数组及其使用:

二维数组实际上是一个一维数组,它的每个元素又是一个一维数组。

二维数组的定义

数据类型 [][] 数组名;

数据类型 数组名[][];

分配内存空间:

int [][] score;

score=new int[5][50];

定义一个数组并分配内存空间:

int [][] score = new int[5][50];

初始化二维数组:

int [][] score = new int {{90,44,34,34,334},{23,34,34},{34,34}}

//或者

int score [][]= {{89,45,45},{455,45}{45}}

代码示例:

    public static void main(String[] args) {
        int [][] array = new int[][]{{80,60},{70,54,98},{77,59}};
        int total;
        for (int i=0;i<array.length;i++){
            String str =(i+1)+"班";
            total=0;
            for (int j=0;j<array[i].length;j++){
                total+=array[i][j];
            }
            System.out.println(str+"总成绩:"+total);
        }
    }

Array类:

专门用于操作数组的工具类,位于Java.util包中。

1、比较两个数组是否相等

equals()方法用来比较两个数组是否相等,对应位置的元素也一一相等时,返回true,否则返回false。

   public static void main(String[] args){
        int[] arr1={10,200,30,40};
        int[] arr2={10,200,30,40};
        int[] arr3={60,40,54};
        System.out.println(Arrays.equals(arr1,arr2));
        System.out.println(Arrays.equals(arr1,arr3));
    }

2、对数组中的元素进行升序排列:sort()方法对数组中的元素进行升序排列,即从小到大排列。

public static void main(String[] args) {
    int [][]array=new int[][]{{80,60},{70,54,98},{77,59}};
    for (int i=0;i<array.length;i++){
        String str =(i+1)+"班";
        Arrays.sort(array[i]);
        System.out.println(str+"成绩排序后");
        for (int j=0;j<array[i].length;j++){
            System.out.println(array[i][j]);
        }
    }
    }

3、将数组转换为字符串:toString()方法用于将数组转换为一个字符串。

public static void main(String[] args){
int []arr={10,50,40,30};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
}

4、将数组中所哟元素赋值为相同的值:

fill(arrry,val)方法用于把数组中所有元素赋值为val。

public static void main(String[] args) {
        int [] arr={45,23,46,56};
        Arrays.fill(arr,40);
        System.out.println(Arrays.toString(arr));
    }

5、将数组初始化为一个长度为设定值的新数组:

Arrays类copeOf()方法把数组复制为一个长度为设定值的新数组

  public static void main(String[] args) {
        int []arr1={10,20,30,40};
        int []arr2=Arrays.copyOf(arr1,3);
        System.out.println(Arrays.toString(arr2));
        int []arr3=Arrays.copyOf(arr1,6);
        System.out.println(Arrays.toString(arr3));
    }

6、查询元素在数组中的下标:

数组中的元素已经按照升序排列,使用Arrays类的binarySearch()方法查询数组元素在数组中的下标。

    public static void main(String[] args) {
        int []arr={344,45,345,353,554};
        Arrays.sort(arr);
        int index=Arrays.binarySearch(arr,45);
        System.out.println(index);
        index=Arrays.binarySearch(arr,345);
        System.out.println(index);
    }

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值