Java学习笔记04
程序员文章站
2022-07-16 13:31:05
...
1.数组是同一种数据类型数据的集合容器。
2.数组的定义格式:
数据类型[] 变量名 = new 数据类型[长度];
3.分析数组:
左边:
int[] arr 声明了一个int类型的数组变量 变量名为arr
int: 表示该数组容器只能存储int类型的数据
[]: 这是一个数组类型。
50:该数组最多能存储 50个数据 数组的容量。
4.局部变量:
如果一个变量是在一个方法(函数)的内部声明的,那么该变量就是一个局部变量
5.成员变量:
成员变量就是定义在方法之外,类之内的。
6.栈内存的特点:
栈内存存储的都是局部变量,变量一旦出了自己的作用域那么马上会从内存中消失,释放内存空间。
7.堆内存的特点:
存储的都是对象数据,对象一旦被使用完,并不会马上从内存中消失,而是等待垃圾回收器不定时把垃圾对象回收 这时候该对象才会消失,释放内存。凡是以new 关键字创建的对象JVM都会在堆内存中开辟一个新的空间创建一个新的对象。
public class demo4 {
public static void main(String[] args) {
int[] arr = new int[4];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
System.out.println("数组的长度 " + arr.length);
// 遍历输出数组的每一个元素;
for (int index = 0; index < arr.length; index++) {
System.out.println(arr[index]);
}
}
}
8.数组中最常见的问题:
NullPointerException 空指针异常
原因: 引用数据类型 变量 没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
索引值越界: 访问了不存在的索引值。
public class demo5 {
public static void main(String[] args) {
int [] arr = new int[2];
// null 让变量不要引用任何的对象不要记录任何的内存地址
arr = null;
arr[1] = 10;
System.out.println(arr[1]);
}
}
9.数组的初始化方式
动态初始化:
数据类型[] = 变量名 = new 数据类型[长度];
静态初始化:
数据类型[] = 变量名 = {元素1,元素2……};
public class demo6 {
public static void main(String[] args) {
// 动态初始化
// int[] arr = new int[4];
// 静态初始化
int[] arr = {10, 20, 30, 40};
for (int index = 0; index < arr.length; index++) {
System.out.println(arr[index]);
}
}
}
10.记录数组中的最大值
思路:定义一个变量用于记录最大值的,然后使用该变量与数组中的每一个元素进行比较。如果发现有元素比目前该元素记录的值要大那么该变量就变成这个值。
public class demo7 {
public static void main(String[] args) {
System.out.println();
int[] arr = {-10, -20, -30, -40, -4};
int max = getMax(arr);
System.out.println(max);
}
public static int getMax(int[] arr) {
// 用于记录最大值;如果都是负数 那么这个写法也是依然奏效的
int max = arr[0];
for (int index = 1; index < arr.length; index++) {
// 如果发现有元素比max大 那么max变量就记录该元素。
if (arr[index] > max) {
max = arr[index];
}
}
return max;
}
}