1. 随机数 Random
1.1 概述
大家都看过电视上面抽奖的画面吧,主持人一声令下,大屏幕的数据开始滚动,随机选择一个号码,所以Random用于产生一个随机数。
1.2 使用步骤(和 Scanner 类似)
import java.util.Random;
创建对象
Random r = new Random();
int number = r.nextInt(10);
产生的数据在 0 到 10 之间,包括 0,不包括 10。
括号里面的 10 是可以变化的,如果是 100,就是 0-100 之间的数据
例:获取 0-10 之间的随机数
获取 1-100 之间的随机数
package com.study.demo.randomdemo;
import java.util.Random;
/**
* @Auther: lds
* @Date: 2018/10/22 10:00
* @Description:获取 0-10 之间的随机数
获取 1-100 之间的随机数
*/
public class RandomDemo01 {
public static void main(String[] args) {
// 获取0-10之间的随机数
Random rm = new Random();
for (int i = 0; i < 10; i++) {
// 获取随机数
int nextInt = rm.nextInt(10);// [0,10) 左边包括,右边不包括
System.out.println("随机数是:" + nextInt);
}
System.out.println("------------------------");
// 获取1-100之间的随机数
for (int i = 0; i < 100; i++) {
int nextInt = rm.nextInt(100) + 1;
System.out.println("随机数为:" + nextInt);
}
}
}
例:猜数字小游戏案例
系统产生一个 1-100 之间的随机数,请猜出这个数据是多少?
package com.study.demo.randomdemo;
import java.util.Random;
import java.util.Scanner;
/**
* @Auther: lds
* @Date: 2018/10/22 11:00
* @Description:系统产生一个 1-100 之间的随机数,请猜出这个数据是多少
*/
public class RandomDemo02 {
public static void main(String[] args) {
// 系统产生一个随机数 1-100 之间的
Random rm = new Random();
int number = rm.nextInt(100) + 1;
while (true) {
// 键盘录入一个数据,作为我们猜的数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个1-100之间的整数:");
int guessNumber = sc.nextInt();
// 对比两个数据的大小,使用if判断
if (guessNumber > number) {
System.out.println("您猜大了!");
} else if (guessNumber < number) {
System.out.println("您猜小了!");
} else {
System.out.println("恭喜您,猜对了!");// 猜对了之后,要结束循环哦
break;
}
}
}
}
2. 数组
2.1 概述
需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。
假设该公司有 80 名员工,用前面所学的知识,程序首先需要声明 80 个变量来分别记
住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java
就提供了数组供我们使用。
2.2 数组定义格式
2.3 数组初始化
2.4 数组的初始化 (动态初始化)
2.5 访问数组元素
2.6 Java 中的内存分配
Java 程序在运行时,需要在内存中的分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据
方式和内存管理方式。
使用完毕后,会被垃圾回收器空闲的时候回收。
2.7 数组内存图解
定义一个数组,输出数组名及元素。然后给数组中的元素赋值,再次输出数组名及元素。
定义两个数组,分别输出数组名及元素。然后分别给数组中的元素赋值,分别再次输出数组名及元素。
定义两个数组,先定义一个数组赋值,输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。然后给第二个数组赋值,再次输出两个数组的名及元素。
2.8 数组的初始化 (静态初始化)
初始化时指定每个数组元素的初始值,由系统决定数组长度。
数据类型[] 数组名 = new 数据类型[]{元素 1,元素 2,…};
举例
int[] arr = new int[]{1,2,3};
解释:定义了一个 int 类型的数组,这个数组中可以存放 3 个 int 类型的值,并且值分别是 1,2,3。
数据类型[] 数组名 = {元素 1,元素 2,...};
2.9 数组操作的两个常见小问题
访问到了数组中的不存在的索引时发生。
空指针异常 NullPointerException
数组引用没有指向对象,却在操作对象中的元素时。
因为写程序不仅仅是把代码写出来,还包括出现问题后要能够及时的把问题解决。而排错也应该是我们的基本功。所以, 我们也应该记住一些常见的问题,以及出错原因和解决方案。
2.10 遍历数组
package com.study.demo.arraydemo;
/**
* @Auther: lds
* @Date: 2018/10/23 17:11
* @Description:遍历数组
*/
public class ArrayDemo01 {
public static void main(String[] args) {
// 定义数组
int[] arr = {11, 22, 33, 44, 55};
// 原始做法
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println("--------------------");
// 用 for 循环改进
for (int x = 0; x < 5; x++) {
System.out.println(arr[x]);
}
System.out.println("--------------------");
//为了解决数组中元素个数的问题,数组就提供了一个属性:length
//用于获取数组的长度
//格式:数组名.length
System.out.println("数组共有:" + arr.length + "个元素");
System.out.println("--------------------");
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
}
}
例:获取最值
获取数组中的最大值最小值
package com.study.demo.arraydemo;
/**
* @Auther: lds
* @Date: 2018/10/23 17:15
* @Description:
*/
public class ArrayDemo02 {
public static void main(String[] args) {
//定义数组
int[] arr = {12, 98, 45, 73, 60};
//定义参照物
int max = arr[0];
// int min = arr[0];
//遍历数组,获取除了 0 以外的所有元素,进行比较
for (int x = 1; x < arr.length; x++) {
if (arr[x] > max) {
max = arr[x];
}
// if (arr[x] < min) {
// min = arr[x];
// }
}
System.out.println("数组中的最大值是:" + max);
// System.out.println("数组中的最小值是:" + min);
}
}
2.11 二维数组
2.11.1 概述
2.11.2 基本使用
package com.study.demo.arraydemo;
/**
* @Auther: lds
* @Date: 2018/10/24 15:14
* @Description:定义二维数组
*/
public class ArrayDemo03 {
public static void main(String[] args) {
// 数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(arr); // [[I@7637f22
System.out.println(arr.length); // 二维数组中的一维数组的个数
System.out.println(arr[0]);// [I@4926097b
System.out.println(arr[0].length);
System.out.println(arr[1]);// [I@762efe5d
System.out.println(arr[2]);// [I@5d22bbb7
//如何获取到一个二维数组的元素呢?
System.out.println(arr[0][0]); // 1
System.out.println(arr[1][1]); // 5
System.out.println(arr[2][0]); // 7
}
}
2.11.3 二维数组的遍历
例:int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
package com.study.demo.arraydemo;
/**
* @Auther: lds
* @Date: 2018/10/24 15:18
* @Description:遍历二维数组
*/
public class ArrayDemo04 {
public static void main(String[] args) {
// 定义二维数组
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 第一个一维数组的元素
// for (int x = 0; x < arr[0].length; x++) {
// System.out.print(arr[0][x] + " ");
// }
// System.out.println();// 1 2 3
//
// // 第二个一维数组的元素
// for (int x = 0; x < arr[1].length; x++) {
// System.out.print(arr[1][x] + " ");
// }
// System.out.println(); // 4 5 6
//
// // 第三个一维数组的元素
// for (int x = 0; x < arr[2].length; x++) {
// System.out.print(arr[2][x] + " ");
// }
// System.out.println(); // 7 8 9
for (int y = 0; y < arr.length; y++) {
for (int x = 0; x < arr[y].length; x++) {
System.out.print(arr[y][x] + " ");
}
System.out.println();//换行
}
}
}
ps:今天是1024,程序员节,祝大家节日快乐,无bug!ヽ(゚∀゚)メ(゚∀゚)ノ ヽ(゚∀゚)メ(゚∀゚)ノ ヽ(゚∀゚)メ(゚∀゚)ノ