数组
数组的创建
首选的方法是 dataType[] arrayRefVar;
或者 dataType arrayRefVar[] // 效果相同,但不是首选方法
语法:
dataType[] arrayRefVar = new dataType[arratSize]
eg. int[] nums; //1.声明了一个数组
int nums[]; c/c++用
nums = new int[10];可以存放10个int数组 // 2.创建一个数组
num[0]=1 //3.给数组元素赋值
如果没赋值,默认是0
可以声明和创建写到一块
int[] nums2= new int[10]
元素是通过索引,数组所以从0开始,
获取数字长度 arrays.length
数组的四个特点
1.数组的长度是确定的,一旦被创建,大小不可以被改变
2.数组内元素必须是想同类型,不允许出现混合类型。
3.数组中的元素可以使任何数据类型,包括基本类型和引用类型
4.数组变量属于引用类型,数组也可以看成是对象,数组中庸的每个元素相当于该对象的成员变量。数组本身就是对象,JAVA中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身都是在堆中的
错误:数组下标越界
数组的合法区间是[0,length-1] 比方说10个数的数组,边界就是[0,9]如果越界就会报错。
可以使用增强型for each循环,这样就没有下标了
array.for
数组的三种初始化
静态初始化:创建+赋值
int[] a={1,2,3,45,6,7,8} //一旦创建无法改变
动态初始化:包含默认初始化
int[] a=new int[2] //先声明+创建数组,在给赋值
a[0]=1;
a[1]=2;
默认初始化:不写值默认填充是0 想自己填充的话就arrays.fill方法自己填充。
二维数组
相当于一维数组的套娃
Arrays类
看底层源码发现其实就是提前给你造好的方法让你不用再写了
常用的:
import java.util.Arrays;
public class arraydemo3 {
public static void main(String[] args) {
int[] a={1,2,3,4,5,84,58,78};
//打印 arrays.tostring
System.out.println(Arrays.toString(a));
System.out.println("============");
//排序 升序arrays.sort
Arrays.sort(a);
System.out.println(Arrays.toString(a));
System.out.println("============");
//填充 arrays.fill
Arrays.fill(a,10);
System.out.println(Arrays.toString(a));
System.out.println("============");
Arrays.fill(a,2,4,20);
System.out.println(Arrays.toString(a));
}
}
冒泡排序
从左往右拿,每一个数都跟后面的数比较,如果拿的这个数比后面的数大,就交换位置,一共有两层循环,第一层是确定第一个数,第二层循环是确定第二个数;
import java.util.Arrays;
public class arraysdemo4 {
public static void main(String[] args) {
//1.比较相邻数组,如果第一个比第二个大,就交换位置
//2.每一次比较都会有一个最大数和一个最小数
//3.下一路in可以少一次排序
//依次循环直到结束
int[] a={1,3,5,7,33,55,2,6,88,14};
int[] sort=sort(a);
System.out.println(Arrays.toString(a));
}
public static int[] sort(int[] array) {
int temp = 0;
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];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
}