声明
-
学习笔记
-
仅供学习和参考
数组–引用类型
核心
数组名
数据–元素 element
位置 index–下标、索引 从0开始/
数组个数=长度=最大index+1
元素存放有序
元素是可以重复的
一维数组
声明
type[] 数组名;或 type 数组名[];
初始化
-
方法一 静态初始化
type[] 数组名 = {值,值,…};
int[] arr = {1,3,4,4};
-
方法二 动态初始化
type[] 数组名 = new type[size];//type 保持一致
size 存储个数
int[] array = new int[4];
array[0]=1;
array[2]=2;
注意
使用动态初始化的方式创建数组是有默认值
byte short int long 0
float double 0.0
char ‘\u000’
引用类 null
数组长度
数组长度=数组名.length length是一个属性
public static void main(String[] args) {
int[] arr = new int[3];
int length = arr.length;
System.out.println("length="+length);
}
获取数组元素
数组名[index]
public static void main(String[] args) {
int[] arr = new int[3];
int a = arr[0];
System.out.println(a);
}
数组下标越界异常
int[] arr = {1,3,4,4};
arr[-1];
arr[4];//数组下标越界异常 下标为0 1 2 3
public static void main(String[] args) {
int[] arr = {1,3,4,4};
System.out.println(arr[-1]);
}
遍历数组
正序
int[] arr = {1,3,4,4};
for(int i=0;i<arr.length;i++){
System.out.println(arr[i])
}
注意
for循环里面的int i,仅仅被这里认识。–作用域
逆序
int[] arr = {1,3,4,4};
for(int i=arr.length-1;i.=0;i--){
System.out.println(arr[i])
}
修改元素
数组名[index] = 新的值;
数组逆置
int[] arr = {1,3,4,4};
int tmp = 0;
for(int i=0;i<arr.length/2;i++){
//不管长度是奇数还是偶数 同一类型运算 结果也是同类型 这是因为运算规则的封闭性
tmp=arr[i] ;
arr[i]=arr[length-1-i];
arr[length-1-i]=tmp;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i])
}
找最大值
int[] arr = {1,2,4,2,5,4,0,3};
int max = 0;
max = arr[0];//比较的第一个数 初值
for (int i=0;i<arr.length;i++){
int tmp = arr[i];//设置中间变量 将每次的元素赋值给中间变量
if (tmp > max) {//前面元素和后面元素比较 若是前面元素大将其值赋值给max
max = tmp;
}
//若是后面元素大 说明arr[0]现在是最大的 则将第二个元素赋值给中间变量 重复上述操作 直到遍历完元素为止
}
System.out.println(max+"是最大值");
找最小值
float[] array = {1.3f,2.5f,6.4f,2.1f,0.4f};
float min = 0;
min = array[0];
for (int i=0;i<array.length;i++){
float tmp = array[i];
if (tmp < min) {
min = tmp;
}
}
System.out.println(min+"是最小值");
数组内存分析
存储空间连续
数组名 存放在栈 在C语言中数组就是一个指针
元素连续存放在堆 并有下标0 1 …
栈与堆的链接通过指针
增强for循环–foreach
for(type 名字:数组名){ // 名字就是数组中遍历的当前元素
System.out.println(名字);
}
Arrays.toSring()方法
将数组打印字符串
System.out.println(Arrays.toString(数组名));
结果:[值,值,值]
或
String str = Arrays.toString(数组名);
System.out.println(str);
二维数组
静态初始化
int [] [] array ={{1,2},{2,4}.{3,5}}
leng = 3;
动态初始化
type [] [] array = new type[size] [size];
array [0] [0] = 3;
…
获取二维数组元素
数组名 [index] [index];
修改二维数组元素
数组名 [index] [index] = 值;
遍历二维数组
int [] [] array ={{1,2},{2,4},{3,5}};
int len = array.length;//二维数组的长度 3
int[] arr = array[0];//array[0]={1,2};
for(int i=0;i<array.length;i++){
for(int j=0;i<arr.length;j++){
System.out.println(array[i] [j]);
}
}