1 Random类
1.1 Random概述
Random类是java中提供的一个类,属于引用数据类型;
可以帮助我们随机生成一个随机数;
1.2 Random类的使用格式
步骤:
1:导包 ;import java.util.Random;
2:创建对象;Random 对象名 = new Random();
3:调用方法;int 自定义变量名 = 对象名.nextInt(整数值);
1.3 随机生成整数—猜数字的小游戏
需求:
1:程序启动后,随机生成一个整数;
2:让用户输入一个数字;
3:比较用户输入的数字是否与随机数相等,如果大了,提示大,否则提示小,如果猜对了,结束程序;没猜对,就一直继续猜。。。
代码思路:
1:使用Random类,随机生成一个1-100的整数;
2:使用死循环,
3:在循环体中让用户输入要猜的数字值;
4:使用if和else if判断,如果大了或小了,就给出相应的提示,并让用户重新输入,猜对了就停止程序;
1.4 注意事项
如果想生成一个指定范围的整数值;
int num = r.nextInt(范围的最大值-范围的最小值+1)+范围的最小值;
r.nextInt(n);会返回一个伪随机数的int值(0≤返回值<n)
2 数组
2.1 数组的概述
变量是内存中的小盒子,每次只能保存或获取一个数据值;
为了保持多个数据值,java中,可以使用数组来实现;
数组是内存中一片连续的空间,属于引用数据类型;
简单理解为:
数组就是一堆变量捆绑在了一起;
2.2 数组的定义格式
数组定义的格式有两种;
1:静态初始化;
当创建数组对象的时候,直接确定数据中的每一个元素值;
代码格式:
数据类型[] 数组名 = new 数据类型[]{数据值1,数据值2….};
2:动态初始化;
代码格式:
数据类型[] 数组名 = new 数据类型[数组的长度];
2.3 数组的存取值格式
数组中操作元素值的时候,采用索引的方式操作,索引值都是整数,从0开始,到长度减一为止;
存值代码格式:
数组名[索引值] = 数据值;
取值代码格式:
数据类型 变量名= 数组名[索引值] ;
2.4 Java中的内存分配
Java 程序在运行时,需要在内存中的分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
- 栈 存储局部变量
- 局部变量是定义在方法中或者语句中的变量
- 局部变量使用完毕,立即回收
- 堆 存储new出来的东西
- 每一个对象都有首地址值,是一个十六进制的地址
- 每一个对象内的数据都有默认值
- byte,short,int,long 0
- float,double 0.0
- char ‘\u0000’,一个空格
- boolean false
- 引用类型 null
- 使用完毕后,会被垃圾回收器空闲的时候回收。
- 方法区 (面向对象进阶讲)
- 本地方法区 (和系统相关)
- 寄存器 (给CPU使用)
- 画图说明:数组的内存图
2.5 数组的内存空间介绍
2.6 数组的注意事项—常见问题
1:空指针异常问题;使用null值操作的时候,会出现空指针问题;
2:索引越界异常;
3:静态初始化可以简写:
原始形式:数据类型[] 数组名= new 数据类型[]{元素值1,元素值2,。。。。};
简写形式:数据类型[] 数组名= {元素值1,元素值2,。。。。};
注意:简写形式,只能用于定义数组,不能用于赋值数组;2.7 数组综合练习
1:求数组中所有元素的和;
思路:使用循环,根据索引值,获取每一个元素值,累加求和;
Java中可以使用length属性来获取一个数组的长度;
代码格式:
数组名.length;
2:数组迭代;(数组的遍历)(逐个获取元素值)
思路:
使用循环,根据索引值,获取每一个元素值;
3:数组的最大值;
思路:
1:默认认为0索引是最大值,获取0索引的值并保存到变量max中;
2:使用循环,根据索引值,获取每一个元素值;
3:比较每一个元素值与max的值,如果比max大,就更换max的值即可,3 二维数组
3.1 二维数组概述
在一维数组的每一个索引位置上,又存放了其他的一维数组,那么此时外层的数组就是二维数组;
二维数组通常用于保存有两层分类层次的数据;
例如:
一个学校可以有多个班级,每个班级可以有多名学生;
此时,班级就是一维数组,学校就是二维数组,学生是一维数组中的元素值;
伪代码形式:
学校[班级1,班级2,。。。]
班级1[学生1,学生2.。。]3.2 二维数组的操作
二维数组也是数组,因此也有索引,也有length属性;
二维数组的每一个索引位置上,保存的都是一个一维数组,真正的元素值,都保存在一维数组中;
二维数组存储数据的形式示意图:
3.3 二维数组的代码格式
定义格式:
1:静态初始化:
数据类型[][] 二维数组名 = new 数据类型[][]{{元素值1,元素值2,。。。},{元素值1,元素值2,。。。}。。。};
2:动态初始化:
数据类型[][] 二维数组名 = new 数据类型[二维数组的长度][可写可不写,如果写,代码每一个一维数组都是这个长度,如果不写,需要给二维数组存值的时候,指定];
取值格式:
一维数组[] 一维数组名= 二维数组名[二维数组索引值];
可以连在一起:
数据类型 变量名 = 二维数组名[二维数组索引值][一维数组索引值];
赋值格式:
二维数组名[二维数组索引值] = 一维数组名;
连在一起:
二维数组名[二维数组索引值][一维数组索引值]= 数据值;