欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java初学-数组

程序员文章站 2024-03-15 14:06:29
...

1.数组的定义:

  • 格式为

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

  • 简单示例:
int[] arr = new int[n];
arr[0]=a;
arr[1]=b;
.
.
.
arr[n]=z;
或
int[] arr = new int{a,b,c,d};
或
int[] arr = {a,b,c,d};

无论是哪种制定方式都可以

  • 数组可以用来方便连接多个数据,使大量数据能够更好的操作.
  • 数组的本质是一系列空间大小相等且地址连续的一片存储空间
  • 数组的变量地址是连续的
  • 数组提供角标来访问数组当中的元素
  • 数组变量存的就是数组在堆内存中首元素的地址
  • 数组一旦定义下来就不可改变
  • .数组存在于堆内存中,但凡在堆中存储的数据都称之为 对象

Java初学-数组

 数组存和一般常量一样,都是通过常量池的位置来存储的

Java初学-数组

2.常见错误:

  • ArrayIndexOutOfBoundsException (数组角标越界)

顾名思义,指的是角标超过定义的长度,如

public class ArrayTest {

    public static void main(String[] args) {

       int[] a=new int[5];     //定义长度为5

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

     
       System.out.println(a[6]);     //输出a[6]将报错

    }

}
  • NullPointerException 空指针异常
public class ArrayTest {

    public static void main(String[] args) {

       int[] a=new int[5];     

       int[] a=null;

     
       System.out.println(a[0]);     //数组对象没有任何变量引用

    }

}

3.基本操作:

便利,赋值

public class ArrayTest {

    public static void main(String[] args) {

       int[] a=new int[5];     //声明一个数组

       int[] a={1,2,3,4,5};    //赋值

       for (int i= 0; i < a.length; i++) {    //遍历

           System.out.println(a[i]);// 1 2 3 4 5

       }

    }

}

最大,最小

import java.util.Scanner;
class Test{
    public static void main(String[] args){
        int[] arr={10,2,8,3,1,6,4,7,9,5};
        int max=arr[0];
        int min_index=0;
        for(int i=0;i<arr.length;i++){
            if(arr[i]>max){    //判断最大值
                max=arr[i];
            }
            if(arr[i]<arr[min_index]){    //判断最小值
                min_index=i;    
            }
        }
        System.out.println("最大值"+max);
        System.out.println("最小值角标"+min_index);

    }
}

 

4.查找方式 :

  • 线性查找,按顺序查找,优点是任何数组都可以查找,缺点,在数组很大时不是很高效
int[] arr={10,2,8,3,1,6,4,7,9,5};
    int key=11;
    int index=-1;   
    for(int i=0;i<arr.length;i++){
        if(arr[i]==key){
            index=i;
            break;
        }
    }
 System.out.println(index);
    
  • 二分查找,需要有顺序,折中查找,优点在数组很大时查找更便捷,缺点数组需要按顺序排列
int[] arr={12,17,21,32,38,41,46,49,50,50,51,59,60};
     int key=46;
     int index=-1;
     int min_index=0;
     int max_index=arr.length-1;
     int mid_index=(min_index+max_index)/2;
     while(arr[mid_index]!=key){
         if(key<arr[mid_index]){
             max_index=mid_index-1;
         }
         if(arr[mid_index]<key){
             min_index=mid_index+1;
         }
         if(min_index>max_index){
             index=-1;
             break;
         }
         mid_index=(min_index+max_index)/2;
    }
System.out.println(mid_index);

 

相关标签: java初学