Java 数组

数组

在这里插入图片描述

第一个循环是给每个数组赋值

然后遍历输出

一维数组

冒泡排序

image-20200807130451378

  1. 1、声明:
    
      int a[];  int []b;
    
    2、初始化:
    
        动态初始化:1、a=new int[2]; int[0]=1;...
    
        动态初始化:2、b=new b[]{3,4};
    
        静态初始化:int [] c={5,6};
    
    3、数组常用的方法:
    
        排序:Array.sort();
    
        查找:Array.binarySearch();
    
        打印:Array.toString();
    
        复制:Array.copyof();
    
    4、常用操作
    
        1、冒泡排序
    
        for(int i=0;i<a.length-1;i++){//控制外循环的次数
    
            for(int j=0;j<a.length-1-i;j++){//控制内循环次数,比外循环少一次,与下一个比较
    
                if(a[j]>a[j+1]){
    
                    int temp=a[j];
    
                    a[j]=a[j+1];
    
                    a[j+1]=temp;
    
                }
    
            }
    
        }
    
        2、选择排序
    
        for (int i = 0; i < a.length-1; i++) {
    
            int k=i;
    
            for (int j = i; j < a.length-1; j++) {
    
                if (a[k]>a[j+1]) {
    
                    k=j+1;
    
                }
    
            }
    
            if(i!=k){
    
                int temp=a[i];
    
                a[i]=a[k];
    
                a[k]=temp;
    
            }
    
        }
    
        3、顺序查找
    
        public static int find(int []b,int a){
    
        for (int i = 0; i < b.length; i++) {
    
            if (a==b[i]) {
    
                return i;
    
            }
    
        }
    
        return -1;
    
        }
    
        4、二分查找
    
        public static int find(int b[],int a){
    
        int max=b.length-1;
    
        int min=0;
    
        for (int i = 0; i < b.length; i++) {
    
            int midle=(max+min)/2;
    
            if(a==b[midle]){
    
                return midle;
    
            }else if(a>b[midle]){
    
               min=midle+1;
    
            }else if(a<b[midle]){
    
                max=midle-1;
    
            }
    
        }
    
        
    
    return -1;
    
    }
    

二维数组

1. 先行后列

2. public class C1 {

   public static void main(String[] args) {
       System.out.println("Hello");
   
       int[][] a = new int[][] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
       
       System.out.println(a[0][2]);
       
       for (int i = 0; i < a.length; i++) {  //行
           
           for (int j = 0; j < a[i].length; j++) {  //列
               System.out.print(a[i][j]+" ");
           }
           System.out.println();
       }
   
   }
   

   }

   3. 赋值

   4. 

      public class C2 {

      ```java
      public static void main(String[] args) {
      
          int sum=0;
          Scanner input=new Scanner(System.in);
          
          int[][] a = new int[3][2];
          
          //a[0][0]=98;
          //a[0][1]=89;
          
          for (int i = 0; i < a.length; i++) {
              for (int j = 0; j < a[i].length; j++) {
                  System.err.print("请输入a["+i+"]["+j+"]=");
                  a[i][j]=input.nextInt();
              }
          }
          
          for (int i = 0; i < a.length; i++) {  //行
              for (int j = 0; j < a[i].length; j++) {  //列
                  sum+=a[i][j];
              }
          }
          
          System.out.println(sum);
      
      }
      

      }
  • 当访问的数组下标超过数组最大下标值是,会报错java.lang.ArrayIndexOutOfBoundsException: 下标越界

  • 静态初始化: 创建+赋值

    int[] a = {1,2,3,4,5,6};

在这里插入图片描述

  • 但是动态初始化里没赋值时都有默认值0

  • 以内存角度讲,栈包含堆,堆立面是数组,数组里面每一个下标都有一个空间放值。

在这里插入图片描述

image-20200806184145021

For-Each循环

image-20200806232226780

数组作方法入参

image-20200807114311359

数组作返回值

image-20200807114251373

应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

posted @ 2022-03-30 19:04  Tzeao  阅读(35)  评论(0)    收藏  举报