Java初学-数组

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};

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

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

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

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);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值