共计 2979 个字符,预计需要花费 8 分钟才能阅读完成。
数组的概念
数组是什么?为什么要应用数组?
1. 数组用来将雷同数据类型存储在存储单元里,数组的所有元素必须属于 雷同的数据类型。
2. 数组和变量差不多,都是存放数据的,不同的是变量只能保留一条数据,而数组能够保留多条数据。
3. 数组既能够存储根本数据类型,也能够存储援用数据类型。
4. 数组一旦初始化,长度不可变。长度确定下来了!!!。
5. 比方我要统计每位员工的工资,我得定义多个变量去离开存储,因为一个变量只能保留一个数据,如果过多的员工,太麻烦了,那么我怎么用一个变量去存储多个员工工资呢?能够应用数组,数组就是一个大的容器,他能够寄存多个值。
如何定义数组?
数组类型 [] 数组名;
数组类型 数组名[];
1.Java 中的数组必须先初始化, 而后能力应用。
2. 所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
3.Java 中能够应用关键字 new 创立数组对象, 实现动态初始化或动静初始化。
数组初始化分为两种:
动态初始化;动静初始化;
动静初始化
动静初始化:指定数组的长度,一旦数组长度指定,就是数组中只能寄存多少数据。
第一种格局:
数组类型 [] 数组名 =new 数组类型[数组长度];
第二种格局:
数组类型 [] 数组名;
数组名 =new 数组类型[数组长度];
动态初始化
动态初始化:不是指定数组长度,而是间接在初始化数组的同时给数组赋值。
第一种格局:
数组类型 [] 数组名 =new 数组类型[]{数据 1,数据 2 …..};
第二种格局:
数组类型 [] 数组名;
数组名 =new 数组类型[]{数据 1, 数据 2.。。。};
还有一种最简略的形式:
数组类型[] 数组名 ={数据 1,数据 2 ….};
数组的遍历
应用 for 循环
public static void main(String[] args) {int[] array=new int[]{12,4,6,34,90,89,12};
// 我想获取数组的每一个元素值
System.out.println(array[0]);
System.out.println(array[1]);
//...
//for 应用循环 i 代表的是数组的下标
System.out.println("应用 for 循环遍历数组");
for(int i=0;i<array.length;i++){System.out.println(array[i]);
}
for 循环增强版 foreach:
for(int a:array)
System.out.println("foreach 遍历数组");
/**
* for(定义变量承受数组的每一个元素值:要遍历的数组名)
* 数组遍历只有两种
*/
for(int a:array){System.out.println(a);
数组分类
根本类型的数组
动静初始化数组当前,数组的元素都会赋予一个默认值。
byte,short,int,long:默认 0
double,float:0.0
char: 空格
boolean:false
//double 类型
double[] d=new double[2];
System.out.println(d[0]);//0.0
System.out.println("=======================");
援用数据类型的数组
String;接口;本人定义的类 …
援用数据类型的默认值为 null。
//String
String[] str=new String[4];
//null
for(String s:str){System.out.println(s);
}
// 数组类型是 Student 类型
Student[] stu=new Student[1];
stu[0]=new Student("张三",18);
// 创立了一个对象,并且给这个对象的属性赋值
for(int i=0;i<stu.length;i++){
System.out.println("姓名:"
+stu[i].getName()+", 年龄:"+stu[i].getAge());
}
java 的内存调配
java 中的内存是怎么进行调配的?
内存的申请和开释都是 jvm 进行治理的,java 程序要运行,jvm 会主动的向电脑申请一块内存,
把这块内存分为 5 局部:
1. 栈(Stack): 次要寄存局部变量(重点)。
2. 堆(Heap): 但凡 new 进去的货色都在堆外面,堆当中的数据都有默认准则:(重点)。
整数 0 小数 0.0 布尔:false char: 空格 援用数据类型:null。
3. 办法区(Method Area): 寄存的是与.class 相干的信息。
4. 本地办法区(Native Method Area): 与操作系统无关。
5. 寄存器(Register): 与 cup 无关。
冒泡排序(重点)
口诀(升序)
n 个数字来排队
两两相比小靠前
外层循环 n -1
内层循环 n -1-i
public static void main(String[] args) {
// 从大到小
int[] array={76,3,234,90,6,78,1,-1};
// 外层循环管制趟数
for(int i=0;i<array.length-1;i++){
// 内层管制次数
for(int j=0;j<array.length-i-1;j++){
// 比拟 从大到小用 < 小到大 >
if(array[j]<array[j+1]){int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
for(int num:array){System.out.println(num);
}
二维数组
二维数组;数组中的数组。
1. 申明二维数组
数据类型 [][] 数据名;
第一个中括号:二维数组中有几个一维数组 行
第二个中括号:每个一维数组中有多少元素 列
2. 初始化二维数组
public static void main(String[] args) {
//1. 创立一个二维数组,并动静初始化
// 5 代表 5 行或者示意蕴含 5 个一维数组
// 7 代表 7 列或者示意每个一维数组的长度是 7
int[][] array=new int[5][7];
//2. 如何赋值
// 第一个一维数组的第一个元素值为 10
array[0][0]=10;
// 第四个一维数组的第 7 个元素的值为 5
array[3][6]=5;
//3. 动态初始化
int[][] array1=new int[][]{{1,2},{2,3,4},{5,9,89,1}};
System.out.println(array1[2][2]);//89
// 简写
int[][] array2={{4,90},{23,12},{12,23,45}};
System.out.println("获取二维数组的长度:"+array2.length);
}
3. 遍历二维数组
//4. 遍历二维数组
// 外层循环管制行(每一个一维数组)for(int i=0;i<array2.length;i++){
// 内存循环管制的是列
for(int j=0;j<array2[i].length;j++){System.out.print(array2[i][j]+" ");
}
System.out.println();}
// 加强 for 循环
for(int[] i:array2){for(int a:i){System.out.print(a+" ");
}
System.out.println();}
2019/08/04