JavaSE第三章
(数组)
1.数组基本概念及作用
(存储一组数据类型相同的数据 空间连续 长度一旦给定不可变)
1.数组本身是引用数据类型,即对象。但是数组可以存储基本数据类型,
也可以存储引用数据类型
2.数组的声明的两种方式:
• 数据类型 [] 数组名字 例如:int [] a; //推荐
• 数据类型 数组的名字 [] 例如: int a []
//int指数组中可以存储的数据类型为int 数组是引用数据类型
2.数组的创建
数组创建的三种方式:
int[] a = new int[10]; //动态创建数组,默认赋值0
System.out.println(Arrays.toString(a))//Arrays是操作数组的方法
int[] a = new int[]{1, 2, 3, 4, 5}; //静态创建数组
int[] a = {1, 2, 3, 4, 5};//数量固定的 可直接赋值 如一周七天
数组的索引(index):最小为0 最大为长度-1(.length-1) 即第几个位置
a[0]//数组a的第1个位置
3.数组的访问与迭代(遍历)
数组迭代的两种方式:
第一种:for循环
int [] a = new int []{1,2,3,4,5,6,7};
for(int i =0;i<a.length;i++){
System.out.println(a[i]);
}
第二种:增强for循环
int [] b1 = new int []{1,2,3,4,5,6,7};
for(数组元素的类型 临时变量名字 :要遍历的数组的名字){
System.out.println(临时变量名字 );
}
如:for(int x:a){
System.out.println(x);
}
4.数组排序
冒泡排序:
1.算法思想:两个相邻的位置比较大小 较大(小)的后移(交换位置)在与后面的比 以此类推
2.代码实现:
import java.util.Arrays; public class maopao { public static void main(String[] args) { //冒泡排序 int[] arr={5,3,4,2,1}; 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 max = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = max; } } } System.out.println(Arrays.toString(arr)); } }
选择排序:
1.算法思想:取一个数与后面的数逐个比较 较大(小)的交换法后移 再取下一个数 依此类推
2.代码实现:
import java.util.Arrays; public class xuanze { public static void main(String[] args) { int[] arr = {5, 3, 2, 4, 1}; for (int i = 0; i < arr.length - 1; i++) {//控制循环次数 拿出比较基数 for (int j = i + 1; j < arr.length; j++) {//基数与后面比较次数 if (arr[i] < arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } System.out.println(Arrays.toString(arr)); } }
3.选择排序优化:
import java.util.Arrays; public class xuanze { public static void main(String[] args) { int[] arr = {5, 3, 2, 4, 1}; for (int i = 0; i < arr.length - 1; i++) {//控制循环次数 拿出比较基数 for (int j = i + 1; j < arr.length; j++) {//基数与后面比较次数 if (arr[i] < arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } else if (arr[i] < arr[j]&&arr[i] < arr[j + 1]) { int temp = arr[i]; arr[i] = arr[j + 1]; arr[j + 1] = temp; } else if (arr[i] < arr[j]&&arr[i] < arr[j + 1]&&arr[i] < arr[j + 2]) { int temp = arr[i]; arr[i] = arr[j + 2]; arr[j + 2] = temp; } else if (arr[i] < arr[j]&&arr[i] < arr[j + 1]&&arr[i] < arr[j + 2]&&arr[i] < arr[j + 3]) { int temp = arr[i]; arr[i] = arr[j + 3]; arr[j + 3] = temp; } } } System.out.println(Arrays.toString(arr)); } }
5.二维数组
1.定义
int a = {{1,2,3},{1,2,3},{1,2,3}};
2.声明
int[] [] a;
int a [] [];
//推荐第一种
3.数组的创建
int a = new int{{1,2,3},{1,2,3},{1,2,3}};
int [] [] b = {{1,2,3},{1,2,3},{1,2,3}};
int c = new int[3] [5];
● int arr = new int[3] [5];---定义了一个整型的二维数组 ,有3
个一维数组,每一个一维数组包含5个元素
4.二维数组的迭代
int [][] b1 = new int [][]{{1,2},{3,4}}; for(int i =0;i<b1.length;i++){ for(int j =0;j<b1[i].length;j++){ System.out.print(b1[i][j]); } }