09-数组

 

数组

1.概念

一组连续的存储空间,存储多个相同数据类型的值。

 

2.特点

类型相同,长度固定,引用类型的数据

 

3.内存分析

内存:存储数据

A:栈,存放的是基本数据类型的变量,以及引用类型变量的引用;

特点:函数中的变量所占用的空间,执行之后就会销毁。

B:堆,存放的是new出来的东西。

特点:执行之后,堆里存储的内容,会被标记为垃圾,但是不会立即被销毁,而是等待系统的垃圾回收机制来回收(GC)。

 

4.语法

创建语法

 先声明、再分配:
  数据类型[] 数组名;
  数组名 = new 数据类型[长度];
 声明并分配:
  数据类型[] 数组名 = new 数据类型[长度];
 声明并赋值:
  数据类型[] 数组名 = new 数据类型[]{value1,value2,value3,...};
 声明并赋值:
  数据类型[] 数组名 = {value1,value2,value3,...};//注意,不可换行

使用语法

     数组名[index];操作数组
  index:因为一个数组存储了多个数据,每个元素都有一个下标(从0开始)

数组名.length可动态获得数组长度。

 

5.数组的默认值

整数:0

小数:0.0

字符:\u0000

布尔:false

其他:null

 

6.循环的遍历for each

专门用于获取数组中的每一个元素的值。

for-each只能获取数组数据,不能赋值。

 int[] arr = new int[5];
 for (int e : arr){
  System.out.println(e)
 }

 

7.可变参数

概念:一个方法可以接收的参数的数量不定,但是类型固定。

语法:

数据类型 … 参数名

注意事项:

  • 如果参数列表中,除了可变参数还有其他的参数,可变参数要写在整个参数列表的最后;

  • 一个方法最多只能有一个可变参数。

 

8.数组的排序

1.冒泡排序:比较相邻的两个数组元素,将较大的数向后移动

     int[] numbers=new int[]{1,5,8,2,3,9,4};
  int i,j;        
  for(i=1; i < numbers.length-1; i++){//控制轮数
  for(j=0; j < numbers.length-i; j++){
  if(numbers[j] > numbers[j+1]){
  int temp = numbers[j];
  numbers[j] = numbers[j+1];
  numbers[j+1] = temp;
  }
  }
  }
 
 

2.选择排序:遍历元素,找到最小(最大)的元素,把它放第一个位置,然后在剩余元素中找到最小(最大)的元素,把它放在第二个位置,依次排序。

     int[] arr=new int[]{1,5,8,2,3,9,4};
     for(int i=0; i<arr.length; i++) {
             
             //最小数的索引
             int minIndex = i;
             for(int j=i; j<arr.length; j++) {
                 
                 //找到最小数,并记录最小数的索引
                 if(arr[j] < arr[minIndex]) {
                     minIndex = j;
                }
            }
             
             //交换符合条件的数
             int tmp = arr[i];
             arr[i] = arr[minIndex];
             arr[minIndex] = tmp;
        }

猜你喜欢

转载自www.cnblogs.com/leciel/p/12582835.html