零基础坚持学Java【记录record】

本文详细介绍了Java中的数组特性,包括固定长度、元素类型限制、数据存储以及作为方法参数和返回值的使用方式。讲解了如何通过For-Each循环遍历数组,以及Arrays类提供的实用方法如数组赋值、排序和比较。此外,还探讨了冒泡排序算法及其优化,展示了如何在Java中实现。
摘要由CSDN通过智能技术生成

5/10

数组的四个基本特点

  • 长度确定。数组一旦被创建,它的大小就是不可改变的。
  • 元素必须是相同类型。
  • 元素可以是任何数据类型,包括基本类型和引用类型。
  • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

数组使用

  • For-Each循环(一般用于打印结果)
psvm{
    int[] arrays = {1,2,3,4,5};
    //arrays.for自动生成 没有下标
    for (int array : arrays){
        sout(array); //遍历输出
    }
}
  • 数组作方法入参
psvm{
    int[] arrays = {1,2,3,4,5};
    //调用方法
    printArray(arrays);
}
//方法
public static void printArray(int[] arrays){
    for(int i = 0;i < arrays.length; i++){
        sout(arrays[i]+" ")
    }
}
  • 数组作返回值
//反转数组
psvm{
    int[] arrays = {1,2,3,4,5};
    //调用方法
    reverse(arrays);
    //打印数组
    printArrays(reverse);
}

//方法
public static int[] reverse(int[] arrays){
    int[] result = new int[arrays.length];
    for (int i = 0, j=result.lenth-1; i < arrays.length; i++; j--){
        result[j] = arrays[i];
    }
    return result;
}

多维数组

int[][] array = {{1,2},{3,4},{5,6}};
array.length = 3;
array[0].length = 2;

Arrays类

  • 数组的工具类java.util.Arrays
  • 工具类Arrays,提供可调用的方法。
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用。
  • 常用功能:
    • 给数组赋值:通过fill方法。
    • 对数组排序:通过sort方法,按升序。
    • 比较数组:通过equals方法比较数组中元素值是否相等。
    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

冒泡排序*

  • 冒泡排序无疑是最出名的排序算法之一,总共有八大排序!

  • 冒泡排序

    1. 比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置
    2. 每一次比较,都会产生出一个最大,或者最小的数字
    3. 下一轮则可以少一次排序!
    4. 依次循环,直到结束
public static void sort(int[] array){
    //第三方变量
    int temp = 0;
    //外层循环
    for(int i = 0;i <array.length-1;i++){
        //内层循环
        for(int j = 0;j < array.lenhth-1-i;j++){
            if (array[j+i]>array[j]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }
    return array;
}

优化:设立flag标识位,当不产生比较时,直接退出循环。*

for(int i = 0;i <array.length-1;i++){
    //减少没有意义的循环
   *     boolean flag = false;
    //内层循环
        for(int j = 0;j < array.lenhth-1-i;j++){
            if (array[j+i]>array[j]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
   *            flag = true;
            }
        }
   *if (flag==false){
        break;
    }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值