java09+数组三种初始化、特点、边界、使用+java内存分析+冒泡排序

数组的定义

  • 数组是相同类型数据的有序集合.
  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
  • 其中,每一个数据称作一个数组元素, 每个数组元素可以通过一个下标来访问 它们.

数组的声明

  • 首先必须声明数组变量,才能在程序中使用数组。 。下面是声明数组变量的语法:

    dataType[] arrayRefVer;   //首选方法
    或
    dataType arrayRefVar[];   //效果相同,但不是首选方法
    
  • Java语言使用new操作符来创建数组,语法如下:

    dataType[] arrayRefVar = new dataType[arraySize];
    
  • 数组的元素是通过索引访问的, 数组索引从0开始。 获取数组长度:

    arrays.1ength 
    

Java内存分析

Snipaste_2022-08-09_17-15-17

三种初始化

public static void main(String[] args) {
        //静态初始化, 创建 + 赋值
        int[] a = {1,2,3,4,5,6,7,6};
        System.out.println(a[0]);

        //动态初始化: 包含默认初始化
        int[] b = new int[10];
        b[0] = 1;
        System.out.println(b[0]);

    }
  • 静态初始化
  • 动态初始化
  • 数组默认初始化
    • 数组是引用类型,它的元素相当于类的实例变量,因此数组-经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

数组的四个基本特点

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

数组的边界

  • 下标的合法区间;[0, length-1],如果越界就会报错;
  • ArrayIndexOutOfBoundsException :数组下标越界异常!
  • 小结
    • 数组是相同数据类型(数据类型可以为任意类型)的有序集合
    • 数组也是对象。数组元素相当于对象的成员变量
    • 数组长度的确定的,不可变的。如果越界,则报:ArraylndexOutofBounds

数组的使用

public class ArrayDome04 {
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};

        //增强型for循环 array代表一个shuzu,i代表每一个元素
        //JDK1。5以上
        //娶不到下标
//        for (int i : array) {
//            System.out.println(i);
//
//        }
        printArray(array);
        System.out.println();
        System.out.println("============");
        int[] reverse =  reverse(array);
        printArray(reverse);

    } 

//打印数组
    public static void printArray(int[] arrays){
        for (int i = 0; i < arrays.length; i++) {
            System.out.print(arrays[i]+" ");
        }
    }

    //反转数组

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

        }
        return result;

    }

多维数组

  • 多个一维数组。殊的一维数组,其每一个元素都是比如二维数组就是一个特的数组,多维数组可以看成是数组

  • 二维数组

    int[][] array ={{1,2},{2,3},{3,4}};//三行两列

    Snipaste_2022-08-09_20-19-55

    Arrays类

    • 具有以下常用功能:

      • 给数组赋值:通过fill方法。

      • 对数组排序:通过sort方法,按升序。

      • 比较数组:通过equals方法比较数组中元素值是否相等。

      • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

      • Arrays.fill() //填充数组

    public class ArrayDome06 {
        public static void main(String[] args) {
            int[] array = {11,24,3,4,55,16};
            System.out.println(array);
            System.out.println(Arrays.toString(array));//打印数组
            Arrays.sort(array);//排序 从小到大
            System.out.println(Arrays.toString(array));
            Arrays.fill(array,2);//数组赋值,全赋值为2
            System.out.println(Arrays.toString(array));
            Arrays.fill(array,2,4,0);//第二个到第四个(不包括第四个)变量赋值
            System.out.println(Arrays.toString(array));
    
        }
    
    
    
    //结果
    [I@5ff75ab1
    [11, 24, 3, 4, 55, 16]
    [3, 4, 11, 16, 24, 55]
    [2, 2, 2, 2, 2, 2]
    [2, 2, 0, 0, 2, 2]
    

    冒泡排序

    package com.guan.array;
    
    import java.util.Arrays;
    
    public class ArrayDome07 {
        public static void main(String[] args) {
            int[] a = {1,23,21,543,78,2345,85,234,73,2654,12};
            int[] result = sort(a);
            System.out.println(Arrays.toString(result));
            System.out.println(a.length);
    
        }
    
    
        public static int[] sort(int[] array){
            int temp = 0;//临时变量
    
            boolean fag = false;//减少循环次数
    
            for (int i = 0; i < array.length-1; i++) {//外层循环控制次数
                for (int j = 0; j < array.length-1-i ; j++) {//内层进行比较,换位置,小的在前面
                    if (array[j] > array[j+1]){
                        temp = array[j+1];
                        array[j+1] = array[j];
                        array[j] = temp;
                    }
                    fag = true;
                }
                if(fag == false){
                    break;
                }
            }
            return array;
        }
    }
    
    
posted @   干饭人减肥魂  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示