一组连续的存储空间,存储多个相同数据类型的值。
类型相同,长度固定,引用类型的数据
内存:存储数据
A:栈,存放的是基本数据类型的变量,以及引用类型变量的引用;
特点:函数中的变量所占用的空间,执行之后就会销毁。
B:堆,存放的是new出来的东西。
特点:执行之后,堆里存储的内容,会被标记为垃圾,但是不会立即被销毁,而是等待系统的垃圾回收机制来回收(GC)。
创建语法
先声明、再分配:
数据类型[] 数组名;
数组名 = new 数据类型[长度];
声明并分配:
数据类型[] 数组名 = new 数据类型[长度];
声明并赋值:
数据类型[] 数组名 = new 数据类型[]{value1,value2,value3,...};
声明并赋值:
数据类型[] 数组名 = {value1,value2,value3,...};//注意,不可换行
使用语法
数组名[index];操作数组
index:因为一个数组存储了多个数据,每个元素都有一个下标(从0开始)
数组名.length可动态获得数组长度。
整数:0
小数:0.0
字符:\u0000
布尔:false
其他:null
专门用于获取数组中的每一个元素的值。
for-each只能获取数组数据,不能赋值。
int[] arr = new int[5];
for (int e : arr){
System.out.println(e)
}
概念:一个方法可以接收的参数的数量不定,但是类型固定。
语法:
数据类型 … 参数名
注意事项:
如果参数列表中,除了可变参数还有其他的参数,可变参数要写在整个参数列表的最后;
一个方法最多只能有一个可变参数。
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;
}
原文:https://www.cnblogs.com/leciel/p/12582835.html