首页 > 代码库 > javase基础4
javase基础4
1.random
用于产生 一个随机数
案例代码:
/* * Random:用于产生随机数 * * 使用步骤: * A:导包 * import java.util.Random * B:创建对象 * Random r = new Random(); * C:获取随机数 * int number = r.nextInt(10); * 获取的是0-10之间的随机数,包括0,不包括10 * * 需求:如何获取到一个1-100之间的随机数呢? */ public class RandomDemo { public static void main(String[] args) { // 创建对象 Random r = new Random(); for (int x = 0; x < 10; x++) { // 获取随机数 int number = r.nextInt(10); // 输出随机数 System.out.println("number:" + number); } System.out.println("--------------------"); // 如何获取到一个1-100之间的随机数呢? int i = r.nextInt(100) + 1; System.out.println("i:" + i); } }
2.1-100的猜数字
public static void main(String[] args) { // 系统产生一个随机数1-100之间的。 Random r = new Random(); int number = r.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("你猜的数据" + guessNumber + "大了"); } else if (guessNumber < number) { System.out.println("你猜的数据" + guessNumber + "小了"); } else { System.out.println("恭喜你,猜中了"); break; } } }
3.数组概述
数组是存储同一种数据类型多个元素的容器
数组既可以存储基本数据类型,也可以存储引用数据类型
定义格式:
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
注意:这两种定义做完了,数组中是没有元素值的。
4.数组的初始化
java中的数组必须先初始化才可以使用
就是必须为数组中的数组元素分配内存空间,并为每个数组元素赋值
动态初始化:
数据类型[] 数组名 = new 数据类型[数组长度];
数组的长度其实就是数组中元素的个数
静态初始化:
/* * 静态初始化的格式: * 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; * * 简化格式: * 数据类型[] 数组名 = {元素1,元素2,...}; * * 举例: * int[] arr = new int[]{1,2,3}; * * 简化后: * int[] arr = {1,2,3}; */ public class ArrayDemo { public static void main(String[] args) { //定义数组 int[] arr = {1,2,3}; //输出数组名和元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); } }
5.JVM内存划分
java程序在运行时,需要在内存中的分配空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理方式和内存管理方式
栈:存储局部变量
堆:存储new出来的东西
6.两个数组指向同一个地址的内存图
/* *定义两个数组,先定义一个数组,赋值,输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。 * 然后给第二个数组赋值,再次输出两个数组的名及元素。 */ public class ArrayTest { public static void main(String[] args) { // 先定义一个数组,赋值,输出 int[] arr = new int[3]; arr[0] = 100; arr[1] = 200; arr[2] = 300; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); // 然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组 int[] arr2 = arr; // 然后给第二个数组赋值 arr2[0] = 111; arr2[1] = 222; arr2[2] = 333; // 再次输出两个数组的名及元素 System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); System.out.println(arr2); System.out.println(arr2[0]); System.out.println(arr2[1]); System.out.println(arr2[2]); } }
7.数组的元素访问
public static void main(String[] args) { //数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[3]; /* * 左边: * int:说明数组中的元素的数据类型是int类型 * []:说明这是一个数组 * arr:是数组的名称 * 右边: * new:为数组分配内存空间 * int:说明数组中的元素的数据类型是int类型 * []:说明这是一个数组 * 3:数组的长度,其实就是数组中的元素个数 */` System.out.println(arr); //[I@3fa5ac,地址值 //其实数组中的每个元素都是有编号的,编号是从0开始的,最大的编号就是数组的长度-1 //用数组名和编号的配合我们就可以获取数组中的指定编号的元素 //这个编号的专业叫法:索引 //格式:数组名[编号] -- 数组名[索引] System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); }
8.数组的两个常见异常
数组越界异常:java.lang.ArrayIndexOutOfBoundsException
访问了不存在的索引元素
空指针异常:java.lang.NullPointerException
数组已经不指向堆内存的数据了,你还使用数组去访问元素
9.一维数组遍历
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(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } }
10.数组获取最大值
public static void main(String[] args) { //定义数组 int[] arr = {12,98,45,73,60}; //定义参照物 int max = arr[0]; //遍历数组,进行比较 for(int x=1; x<arr.length; x++) { if(arr[x] > max) { max = arr[x]; } } System.out.println("最大值是:"+max); }
11.二维数组
就是元素为一维数组的数组
定义格式:
* A:数据类型[][] 数组名;
* B:数据类型 数组名[][];
* C:数据类型[] 数组名[];
初始化:
A:动态初始化
* 数据类型[][] 数组名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素有多少个
B:静态初始化
* 数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...},...};
* 简化格式:
* 数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
12.二维数组的遍历
public static void main(String[] args) { // 定义二维数组 int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; // 二维数组中的一维数组名称:二维数组名[索引] // arr[0] 其实就是二维数组中的第一个一维数组的名称 // arr[1] 其实就是二维数组中的第二个一维数组的名称 // arr[2] 其实就是二维数组中的第三个一维数组的名称 // for (int x = 0; x < arr[0].length; x++) { // System.out.println(arr[0][x]); // } // System.out.println("hello"); // System.out.println("world"); // System.out.print("hello"); // System.out.print("world"); /* // 第一个一维数组的元素 for (int x = 0; x < arr[0].length; x++) { System.out.print(arr[0][x] + " "); } System.out.println(); // 第二个一维数组的元素 for (int x = 0; x < arr[1].length; x++) { System.out.print(arr[1][x] + " "); } System.out.println(); // 第三个一维数组的元素 for (int x = 0; x < arr[2].length; x++) { System.out.print(arr[2][x] + " "); } System.out.println(); */ // for(int y=0; y<3; y++) { // for (int x = 0; x < arr[y].length; x++) { // System.out.print(arr[y][x] + " "); // } // System.out.println(); // } //最后 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(); } }
javase基础4