数组
数组
数组是相同类型数据的有序集合
基本特点
- 数组对象本身是在堆中的
- 长度是确定的,一旦被创建,大小就是不可以改变的
- 元素必须相同类型,不允许出现混合类型
- 元素可以是任何数据类型
- 数组变量属于引用类型,数组也可以看成是对象,每个元素相当于该对象的成员变量
数组的声明
-
类型[ ] 数组名
首选
int[] nums; -
类型 数组名[ ]
数组的定义
java语言用new操作符来创建数组
//接上
nums = new int[10];
//二合一
int[] nums = new int[10];
三种初始化
静态初始化
声明 + 赋值
int[] nums={1,2,3};
动态初始化
包含默认初始化
int[] nums = new int[10];
a[0] = 1;
a[1] = 2;
默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
数组的使用
For—Each
int[] arr = {1,2,3,4,5};
//输入arr.for会快捷生成以下
for(int i:arr){
}
反转数组
public int[] reverse(int[] arr) {
int[] result = new int[arr.length];
for(int i = arr.length-1;i>=0;i--){
result[result.length-i-1] = arr[i];
}
return result;
}
多维数组
public static void main(String[] args) {
int[][] a={{1,2,3},{4,5,6},{7,8,9}};
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
内存分析
堆
- 存放new的对象和数组
- 可以被所有线程共享,不会存放别的对象引用
栈
- 存放基本变量类型(包含这个基本类型的具体数值)
- 引用对象的变量(会存放这个引用在堆里面的具体地址)
方法区
- 可以被所有的线程共享
- 包含了所有的class和static变量
Arrays类
打印数组元素:toString
int[] a = {1,2,3,4};
Arrays.toString(a);
//返回一个String
System.out.println(a);
//out:[1, 2, 3, 4]
填充:fill
//接上
Arrays.fill(arr,0);
a = Arrays.toString(arr);
System.out.println(a);
冒泡排序
两层循环,外层冒泡轮数,里层依次比较
- 比较数组中,两个相邻的元素,如果第一个数比第二个数大,则交换
- 每一次比较,产生一个最大,或最小的数字
- 下一轮则可以少一次排序
- 依次循环,直到结束
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
浙公网安备 33010602011771号