小王java学习打卡day04——数组,排序,重载

这篇博客介绍了Java中的数组拷贝和扩容,使用Arrays工具类进行操作,并探讨了二维数组。接着讲解了选择排序和二分查找算法。此外,还详细阐述了方法的概念,包括可变参数和方法的重载,提供了多个示例来说明如何在不同场景下应用这些概念。

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

数组拷贝及扩容

  1. 首先得有两个数组

  2. 的指导从哪拷贝到哪,拷贝多长

    需求:从源数组拷贝第二个元素到第四个元素,到目标数组里面

/*需求:从源数组拷贝第2个元素到第4个元素,到目标数组里面*/
public class CopyDemo {
    public static void main(String[] args) {
        int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4};
        int srcPos =2; //起始位置
        int index =3;
        int[] newAges = new int [3];
        int destPos=0;
        for (int i = srcPos; i < srcPos+index; i++) {
            newAges[destPos++]=ages[i];
//            destPos++;
        }
        for (int i = 0; i < newAges.length; i++) {
            System.out.println(newAges[i]);
        }
    }
}
​

数组工具类Arrays

需求: int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4}; 打印出来变成[ 15, 12, 56, 45, 2, 56, 15, 1, 8, 4 ]

/*
 * 需求:  int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4};  打印出来变成[  15, 12, 56, 45, 2, 56, 15, 1, 8, 4 ]
 * */
public class ArrayPrintDemo {
    public static void main(String[] args) {
        int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4};
        String ret = "[";
        for (int i = 0; i < ages.length; i++) {
            //最后一个元素 不拼接 ,
            if(i==ages.length-1){
                ret = ret + ages[i];
            }else {
                ret = ret + ages[i] + ",";
            }
        }
        System.out.println(ret+"]");
    }
}
​

查看一个类的所有方法 alt+7

  • Arrays.toString

二维数组

//定义
int[][]arrays = new int [] [] {{1,2,5,6,9,8,4},{6,6,7,9,5,4,12,3}};
int[][]arrays = {{1,2,5,6,9,8,4},{6,6,7,9,5,4,12,3}};
int[][]arrays = new int [3] [6];
​
//需求:如何遍历二维数组
依然是for循环,只不过第一次拿到的是一维数组,只有把拿到的值再循环,才能得到具体的元素
​
/*
 * 二维数组的训练
 * //需求:如何遍历二维数组
 * */
public class TwoArraysDemo {
    public static void main(String[] args) {
        int[][] arrays = new int[][]{{1, 2, 5, 6, 9, 8, 4}, {6, 6, 7, 9, 5, 4, 12, 3}};
//        int[][] arrays1 = {{1, 2, 5, 6, 9, 8, 4}, {6, 6, 7, 9, 5, 4, 12, 3}};
//        int[][] arrays2 = new int[3][6];
        for (int i = 0; i < arrays.length; i++) {
            System.out.println(Arrays.toString(arrays[i]));
            //[1, 2, 5, 6, 9, 8, 4]
            //[6, 6, 7, 9, 5, 4, 12, 3]
        }
        for (int i = 0; i < arrays.length; i++) {
            int[] array = arrays[i];
​
            for (int i1 = 0; i1 <array.length; i1++) {
                int i2 = array[i1];
                System.out.print(i2+",");
//                System.out.println();
            }
        }
    }
}
​

算法

需求:定义两个变量,交换两个变量的值

/*
 * 需求:定义两个变量,交换两个变量的值
 * */
public class SwapDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a + "," + b);
​
    }
}
​

冒泡排序

/*
* 冒泡排序  c
* */
public class BubbleSortDemo {
    public static void main(String[] args) {
        int []heights = {8,6,7,4,1,9};
        //比较了五次
        for (int i = 1; i < heights.length-1; i++) {
            //第一次比较
            if(heights[i-1]>heights[i]){
                int temp= 0;
                temp=heights[i-1];
                heights[i-1]=heights[i];
                heights[i]=temp;
            }
        }
        //第二次比较
        for (int i = 1; i < heights.length-2; i++) {
            //第一次比较
            if (heights[i - 1] > heights[i]) {
                int temp = 0;
                temp = heights[i - 1];
                heights[i - 1] = heights[i];
                heights[i] = temp;
            }
        }
        //第三次比较
        for (int i = 1; i < heights.length-3; i++) {
            //第一次比较
            if (heights[i - 1] > heights[i]) {
                int temp = 0;
                temp = heights[i - 1];
                heights[i - 1] = heights[i];
                heights[i] = temp;
            }
        }
        //第四次比较
        for (int i = 1; i < heights.length-4; i++) {
            //第一次比较
            if (heights[i - 1] > heights[i]) {
                int temp = 0;
                temp = heights[i - 1];
                heights[i - 1] = heights[i];
                heights[i] = temp;
            }
        }
​
        System.out.println(Arrays.toString(heights));
    }
}
​
/*
 * 冒泡排序   升级循环版
 * */
public class BubbleSortDemo2 {
    public static void main(String[] args) {
        int[] heights = {18, 6, 78, 4, 51, 97};
        //比较了length-1次
        for (int x = 1; x < heights.length; x++) {
            for (int i = 1; i < heights.length - x; i++) {
                if (heights[i - 1] > heights[i]) {
                    int temp = 0;
                    temp = heights[i - 1];
                    heights[i - 1] = heights[i];
                    heights[i] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(heights));
    }
}
​

选择排序

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

/*
* 选择排序
* */
public class SelectionDemo {
    public static void main(String[] args) {
        int[] heights = {18, 6, 78, 4, 51, 97};
        for (int i = 0; i < heights.length-1; i++) {
            if(heights[0]>heights[i+1]){
                int temp = heights[0];
                heights[0]=heights[i+1];
                heights[i+1]=temp;
            }
        }
​
        System.out.println(Arrays.toString(heights));
        for (int i = 1; i < heights.length-1; i++) {
            if(heights[1]>heights[i+1]){
                int temp = heights[1];
                heights[1]=heights[i+1];
                heights[i+1]=temp;
            }
        }
        System.out.println(Arrays.toString(heights));
        for (int i = 2; i < heights.length-1; i++) {
            if(heights[2]>heights[i+1]){
                int temp = heights[2];
                heights[2]=heights[i+1];
                heights[i+1]=temp;
            }
        }
        System.out.println(Arrays.toString(heights));
        for (int i = 3; i < heights.length-1; i++) {
            if(heights[3]>heights[i+1]){
                int temp = heights[3];
                heights[3]=heights[i+1];
                heights[i+1]=temp;
            }
        }
        System.out.println(Arrays.toString(heights));
        for (int i = 4; i < heights.length-1; i++) {
            if(heights[4]>heights[i+1]){
                int temp = heights[4];
                heights[4]=heights[i+1];
                heights[i+1]=temp;
            }
        }
        System.out.println(Arrays.toString(heights));
    }
}
​

二分查找法

/*
* 二分查找法
* */
public class BinarySearchDemo {
    public static void main(String[] args) {
        int []heights = {8,6,7,4,1,9};
        int Search = 9;
        int min = 0;
        int max = heights.length;
       while (min <= max){
            System.out.println(min +"------"+max);
           //永远找一般的索引
            int mid = (min +max)/2;
            int midValue =heights[mid];
            if(midValue>Search){
                //如果大于,就往右边找
                max = mid;
            }else if(midValue<Search){
                //如果小于,就往左边找
                min=mid;
            }else {
                System.out.println(mid);
                break;
            }
            }
        }
    }
​

方法

解决代码重复的问题

定义:修饰符 +返回值类型 + 方法名称 + (形式参数){  
        方法体
}
​
​
/*
* 方法定义练习
* 打印 helloworld 一百次
* */
public class MethodDemo {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            print();
        }
    }
    //参考主方法
    //自定义方法
    public static void print(){
        System.out.println("helloWorld!!!!");
    }
}
​

详细讲解方法

//    修饰符           返回值   方法名称    形式参数
     public   static  void  PrintString(String str){0
        System.out.println("我需要打印"+ str);
    }
}

方法的可变参数

    public static int addSum(int...arr){
        int sum = 0;
        for (int i : arr) {
            sum +=i;
        }
        return sum;
    }

方法的重载

方法重载:方法重载就是方法名称重复,加载参数不同。

  1. 需求:定义一个求两个正整数的加法计算器,定义一个 求浮点型 double 的计算器

  2. 需求:在同一个类中,分别去打印 String int double 类型

/*
* 方法的重载
* 需求:定义一个求两个正整数的加法计算器,定义一个  求浮点型 double 的计算器
* */
public class OverloadDemo {
    public static void main(String[] args) {
        System.out.println(getSum(2, 5));
        System.out.println(getSum(2.4, 3.3));
        System.out.println(getSum(2, 66, 32));
    }
    public static int getSum(int num1,int num2){
        return num1+num2;
    }
    public static double getSum(double num1,double num2){
        return num1+ num2;
    }
    public static int getSum(int num1,int num2,int sum3){
        return num1+num2+sum3;
    }
}
​

注意,Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值