数组

数组

数组中存放的是同一类型的多个数据

声明:数据类型[] 数组名字 = new 数据类型[数量]

int[] nums;//首选
int nums[];//不推荐
int[] nums = new int[10];//定义了10个int类型的数据存放在nums数组中

数组的赋值和提取,可以通过数组下标来操作,数组的下标是从0开始

数组的长度可以用 数组名.length属性来获取

数组声明定义时对应内存的状态

栈:存放基本变量类型(包含这个基本类型的具体数值),存放引用对象的变量(这个引用对象在堆里面的具体地址)

存储声明数组的数据变量名字(int[] nums)

堆:存放new出来的对象和数组,可以被所有线程共享,不会存放别的对象引用

存储数组的变量值(每一个下标对应一个值,这个值存储在堆中)

数组的初始化

初始化有默认初始化、静态初始化、动态初始化

默认初始化:
int[] nums = new int[10];

当没有给数组赋值时,int数组默认初始化都是0,即每个元素值都是0;String类型默认是null;char默认是Unicode码中0对应的字符;

double默认0.0;float默认是0.0F

静态初始化:用大括号括起来
int[] nums = {1,2,3,4};
动态初始化:先默认初始化,再动态初始化
int[] nums = new int[3];
int[0]=123;
int[1]=234;
int[2]=456;

数组的特点

  1. 数组的长度固定,大小不可改变,如果越界,会报ArrayIndexOutofBounds
  2. 数组内的类型必须是相同类型;
  3. 数组的元素类型可以是基础类型也可以是引用类型
  4. 数组属于应用类型,可以看成是一个对象,数组中的每个元素相当于对象的成员变量。数组对象本身是在堆中

冒泡排序

原理:(从小到大)

①两两比较大小,把较大的数放后面,较小的数放前面;

②一次遍历循环,就可以从数组中找到最大的数,并把它放到数组的最后位置;

③执行第二次循环,就可以找到第二大的数字,并把它放到数组倒数第二的位置上

④执行nums.length-1次循环,就可以实现从小到大的顺序排列。

public static int[] sortaec(int[] nums){
        int temp = 0;
        for(int i=0;i<nums.length-1;i++){
            for(int j =0;j<nums.length-1;j++){
                if(nums[j]>nums[j+1]){
                    temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
        return nums;
    }