day 07 二分查找、多维数组、方法

本文介绍了Java编程中的一些基础操作,包括使用二分查找法在有序数组中查找元素,以及如何进行数组扩容。示例代码详细展示了二分查找的实现过程,同时提供了三种不同的数组扩容方法。此外,还讨论了数组中常见的问题,如数组角标越界异常和空指针异常。最后,文章涵盖了多维数组的声明、初始化、赋值和遍历方法。这些内容对于理解Java中的数组操作具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.二分查找

public class BinarySearchDemo {
    public static void main(String[] args) {
        int[]   array=new int[]{1,23,45,56,43,56,34,7,34,256,65,23,65686,32,46};
        //排序数组
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要查找的数:");
        int num=scanner.nextInt();
        
        //定义最小下标和最大下标
        int minIndex=0;
        int maxIndex=array.length-1; 
        while (minIndex<=maxIndex){
         //中间下标
            int middleIndex=(minIndex+maxIndex)/2;
            //寻找的值等于中间下标的值
            if(num==array[middleIndex]){
                System.out.println("已找到,下标是:"+middleIndex);
                return;
            }else
                //寻找的值小于中间下标的值
             if(num<array[middleIndex]){
                maxIndex=middleIndex-1;
            }else
                //寻找的值大于中间下标的值
             if(num>array[middleIndex]){
                minIndex=middleIndex+1;
            }
        }
        System.out.println("数组中没有这个数");
        scanner.close();

    }
}

2.数组扩容的方法

public class ArrayExpand {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("数组需要扩容多少位:");
        int n=scanner.nextInt();

        int[] array=new int[]{1,3,6,9,434};
        int[] array2=new int[array.length+n];
        
        // 第一种方法 for循环
        for(int i=0;i<array2.length;i++){
            //旧数组的长度
            if(i<array.length){
                array2[i]=array[i];
            }else if(i<array2.length){
                if(i==array.length){
                    array2[i]=52;
                }
            }
        }
        
        //第二种方法 System.arraycopy();
        System.arraycopy(array,0,array2,0,array.length);
         /*     第一个参数: 原来的数组
        第二个参数: 从原来数组的什么地方开始复制
        第三个参数:新的数组
        第四个参数:新的数组从第几位开始接收数据
        第五个参数:新数组接收数据的长度   */

         //第三种方法  Arrays.copyof()
        int[] array3=Arrays.copyOf(array,array.length+n);
   /*     第一个参数:原来的数组
        第二个参数:新数组的长度*/      
   
        array=array2;
        System.out.println(Arrays.toString(array));
        scanner.close();
    }
}

3.数组中的常见问题

1. ArrayIndexOutOfBoundsException
 数组⻆标越界异常
 访问了不存在的⻆标
2. NullPointerException
 空指针异常----变量没有赋值
 栈中的数组变量没有指向堆内存中的数组实体

4.多维数组

  1.声明方式
  
  int[][] array;
  int array[][];
  int[] array[];  
  
  2.初始化
  
  2.1 动态初始化
  
  //初始化数组为两个数组元 素,每个数组元素有3个元素,确定长度,不确定具体元素
  
  array=new int[2][3];
  //初始化数组,确定外层数组里面的数组元素的个数,不确定内层元素的长度
  array=new int[2][];
  
2.2 静态初始化

//使用具体数组元素初始化,长度由java自己确定

 array=new int[][]{
    {1,2,3},
    {2,4,6},
    {1,4,7}
    }
//使用具体数组元素初始化,长度由java自己确定,array需要是已经初始化之后的数组
array={
     {1,2,3},
    {2,4,6},
    {1,4,7}
    }

5.多维数组的赋值

1.对多维数组的赋值

int[][] array=new int[3][2];

array[0]=new int[2];
array[1]=new int[]{1,2};
int array1={1,3,5,7,8};
array[2]=array1;

6.多维数组的遍历

public class MuliArrayDemo {
    public static void main(String[] args) {
        int[][] array=new int[3][3];
        //遍历外层数组
        for(int i=0;i<array.length;i++){
            //遍历内部数组,将第i个数组元素引用赋值给temp
            int[] temp=array[i];
            //调用当前为i 的数组元素
            for(int j=0;j<temp.length;j++){
                System.out.print(temp[i]+"\t");
            }
        }
    }
}

7.方法参数

1.形参--形式参数,仅仅是一个抽象的代表,表示被方法操作的参数

2.实参--实际参数,真实参与方法的运算

*形参只表示参数,没有真实的值,实参是真实的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值