(1)数组:存储同一种数据类型的多个元素的容器
(2)特点:每一个元素都有编号,从0开始,最大编号是长度-1。
编号 的专业教法:索引
(3)定义格式
A:数据类型[] 数组名;
B:数据类型 数组名[];
推荐使用A方式,B方法就忘了吧
但是要能看懂
(4)数组的初始化
A:动态初始化
只给长度,系统给出默认值
举例:int[] arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[] arr = new int[]{1,2,3};
简化版:int[] arr = {1,2,3};
(5)Java的内存分配
A:栈 存储局部变量
B:堆 存储所有new出来的
C:方法区
D:本地方法区(系统相关)
E:寄存器(CPU使用)
注意:
a:局部变量 在方法定义中或者方法声明上定义的变量
b:栈内存和堆内存的区别
栈:数据使用完毕,就消失
堆:每一个new出来的东西都有地址
每一个变量都有默认值
byte,short,int,long 0
float,double 0.0
char '\u0000'
boolean false
引用类型 null
数据使用完毕后,在垃圾回收器空闲的时候回收
(6)数组内存图
A:一个数组
B:两个数组
C:三个数组(两个栈变量指向同一个堆内存)
(7)数组的常见操作
A:遍历
方式1:
```java
public static void printArray(int[] arr){
for(int x=0;x<arr.length;x++){
System.out.println(arr[x]);
}
}
方式2:
public static void printArray(int[] arr){
System.out.print("[");
for(int x=0;x<arr.length;x++){
if(x==arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.println(arr[x]+",");
}
}
}
B:最值
最大值:
public static void getMax(int[] arr){
int max =arr[0];
for(int x=1;x<arr.length;x++){
if(arr[x]>max){
max = arr[x];
}
}
return max;
}
最小值:
public static void getMin(int[] arr){
int min =arr[0];
for(int x=1;x<arr.length;x++){
if(arr[x]<min){
min = arr[x];
}
}
return min;
}
C:逆序
方式1:
public static int reverse(int[] arr){
for(int x=0;x<arr.length/2;x++){
int temp=arr[x];
arr[x]=arr[arr.length-1-x];
arr[arr.length-1-x]=temp;
}
}
方式2:
public static int reverse(int[] arr){
for(int start = 0,end=arr.length-1;start<=end;start++,end--){
int temp = arr[start];
arr[start]=arr[end];
arr[end]=temp;
}
}
D:查表
public static String getString(String[] strArray,int index){
return strArray[index];
}
E:基本查找
方式1:
public static int getIndex(int[] arr,int value){
for(int x=0;x<arr.length;x++){
if(arr[x] ==value){
return x;
}
}
return -1;
}
方式2:
public static int getIndex(int[] arr,int value){
int index =-1
for(int x=0;x<arr.length;x++){
if(arr[x] ==value){
index = x;
break;
}
}
return index;
}
1:二维数组(理解)
(1)元素是一维数组的数组。
(2)格式:
A:数据类型[][] 数组名 = new 数据类型[m][n];
B:数据类型[][] 数组名 = new 数据类型[m][];
C:数据类型[][] 数组名 = new 数据类型[][]{{…},{…},{…}};
D:数据类型[][] 数组名 = {{…},{…},{…}};
(3)案例:
A:二维数组的遍历
B:二维数组的求和
C:杨辉三角
2:两个思考题(理解)
(1)Java中的参数传递问题
Java中只有值传递。
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响
(2)数据加密问题
综合的小案例