为什么要有数组呢?
因为如果你想组织一组数据, 这组数据都是相同数据类型的, 一个一个定义会非常麻烦
数组的三种定义方式
// 数组的三种定义方式
int[] array1 = {1,2,3,4,5};
int[] array2 = new int[]{1,2,3,4,5};
int[] array3 = new int[5];
访问数组所报的异常:
.length 方法
切记.length方法求的是具体的数组长度, 并不是有效长度 !
不同类型在Java中的初始化值
使用不同的类型去初始化, 那么它们的初始化值也是不一样的
类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0f |
double | 0.0 |
char | /u0000 |
boolean | false |
如果数组中存储元素类型为引用类型,默认值为null
遍历数组的三种方法
System.out.println("=========for===========");
int[] array1 = {1,2,3,4,5};
for (int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + " ");
}
System.out.println();
System.out.println("==========for each=========");
for (int x:array1){
System.out.print(x +" ");
}
System.out.println();
System.out.println("===========Arrays===========");
String ret = Arrays.toString(array1);
System.out.println(ret);
这两种都可以遍历数组, 区别在于for 循环遍历可以操作下标, 而for each 方法则不行
数组以及变量在栈和堆上的存储方式(详解)
例一:
下面是一段关于存储的代码, 我会用画图来详细解释它的存储方式
public static void main(String[] args) {
String[] array1 = new String[3];
array1[0] = "爱";
array1[1] = "学";
array1[2] = "习";
String[] array2 = new String[]{"码","字","中","的","阿","漓"};
array2[4] = "大";
array2[5] = "家";
array1 = array2;
array1[0] = "爱";
array1[1] = "听";
array1[2] = "歌";
array2[4] = "阿";
array2[5] = "漓";
System.out.println(Arrays.toString(array2));
}
空指针异常
例二:
思考
以下代码a的值为什么没有变为100呢?
public static void func(int a) {
a = 100;
}
public static void main(String[] args) {
int a = 10;
func(a);
System.out.println(a);
}
例三:
public static void test(int[] tmpArray) {
tmpArray = new int[]{11,22,33};
}
public static void main(String[] args) {
int[] array = {1,2,3,4,5};
test(array);
System.out.println(Arrays.toString(array));
}
结果:
例四:
public static int[] func() {
int[] tmp = {1,2,3,4,5};
return tmp;
}
public static void main(String[] args) {
int[] ret = func();
System.out.println(Arrays.toString(ret));
}
今天的分享就到此结束,祝各位国庆小假期玩的开心!
2022年10月2日15:39:12