java基础学习总结(四):Random类、数组
Random类
1.导包 java.util.Random
2.创建对象
3.调用nextInt(n) 返回一个0~n的随机数(包头不包尾)
// 用于产生随机数
Random random = new Random();
// 产生一个包括0不包括10的随机数
int b = random.nextInt(10);
System.out.println(b);
数组
java中一个变量只能保存一个常量,如果要保存100个常量怎么办?
这时候就要用到数组:一次性可以开辟出一组空间,然后这些空间中可以保存多个数据。
- 数组概念:表示一串连续的存储空间。每个空间中都可以保存一个数据。当我们需要操作的时候,不要去面对单个空间,而直接面对这个整体的连续的存储区域。数组既可以存储基本数据类型,也可以存储引用数据类型。
-
数组定义格式:
① 数据类型[] 数组名 = new 数据类型[数组长度];
② 数据类型 数组名[] = new 数据类型[数组长度];
③ 数据类型[] 数组名 = {值,值,值…};
④ 数据类型[] 数组名 = new 数据类型[] {值,值,值…};(不推荐使用)
int[] arr1 = new int[3];
double arr2[] = new double[6];
int[] arr3 = {11,22,33,44,-1,0};
-
数组的好处:
① 可以一次性开辟出更多的空间
② 可以对多个空间进行统一的管理
③ 数组定义好之后,每个数组的空间中都有一个唯一的编号(索引index ,下标,角标)。我们在操作数组的时候,需要通过该数组的统一的名称和对应的下标来操作数组中每个空间。
④ 数组的下标是从0开始,到长度-1结束。如果操作的下标不在这个范围中,程序报错(ArrayIndexOutOfBoundsException)。
⑤ 在数组中有个属性length,可以获取到当前数组的长度,数组的最大的索引:arr.length-1。 -
数组的内存分配:
注意:堆内存中开辟的空间,不赋值,都会有默认的初始化数据。
整数:默认是0;小数:默认0.0;boolean: 默认是false; char: 默认是 ‘\u0000’;引用数据类型:默认是null -
数组的常见异常:
① 数组索引越界异常
int[] arr2 = {1,2,3};
// 超过了数组长度-1这个最大的索引值,报错java.lang.ArrayIndexOutOfBoundsException
System.out.println(arr2[3]);
② 空指针异常
int [] arr = new int[3];
arr = null
// java.lang.NullPointerException
System.out.println(arr[0]);
注意:在Java中当被new出来的堆中的内存,没有任何一个引用指向它的时候,这时它就是一个垃圾,JVM就使用垃圾回收器把当前这片内存清理。
- 数组遍历:
int[] arr = {1,2,3,4,5};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
- 求数组最值:
int[] arr = {1, 2, 3, 4, 5};
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
int temp = arr[i];
if (temp > max) {
max = temp;
}
}
System.out.println(max);
-
二维数组:
二维数组就是:先定义一个一维数组,然后在这个一维数组的每个空间中保存另外一维数组的内存地址名。通过空间中保存的内存地址名来管理其他的一维数组。
格式一:数据类型[][] 数组名 = new 数据类型[行的长度][列的长度];
格式二:数据类型[][] 数组名 = new 数据类型[][]{一维数组1,一维数组2…};
格式三:数据类型[][] 数组名 = {{},{},{}}; -
二维数组遍历:
-首先使用循环遍历出二维数组中存储的每个一维数组,然后针对每个遍历到的一维数组再使用循环遍历该一维数组中的元素。
public class Demo {
public static void main(String[] args) {
int[][] arr = {{1, 2, 3, 4, 5}, {3, 5, 7}, {9, 4}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}