声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)
往期回顾:
Java学习day19:StringBuffer类、枚举类enum(知识点详解)-CSDN博客
Java学习day20:常用数据类型的包装类、Math类、Random类
一、常用数据类型的包装类
1.八大基本数据类型
Java有八大基本数据类型,都有与之对应的包装类,为啥会有八大基本数据类型的包装类?
包装类能被实例化,封装了很多方法,可以使用,这样操作八大基本数据类型就比较方便了,所以开发中的实体类都是写的包装类。
int->Integer |
char->Character |
byte->Byte |
short->Short |
long->Long |
float->Float |
double->Double |
boolean->Boolean |
除了int和char有点变化外,其他都是大写首字母。
2.拆箱和装箱
自从JDK1.5之后,有了拆箱和装箱
自动装箱:将基本数据类型转为包装类
//自动装箱 45本身是int类型的数据,现在是Integer
//int 变成了Integer 报错没?没有就证明可以自动的装箱Integer i1 = 45;
自动拆箱:将包装类转为基本数据类型
//自动拆箱 没有报错 就证明自动的在拆箱
int i2 = i1; //本来i1是Integer类型,拆箱为int类型了
System.out.println(i1);
3.装箱和拆箱
除了自动装箱和拆箱外,Java还提供了方法实现装箱和拆箱。
①Value();将包装类转为基本数据类型
其实用不上,有自动拆箱,干嘛还调方法拆
Boolean b1 = true;//b1 是包装类
//***Value();将包装类转为基本数据类型
//intValue() booleanValue() floatValue() doubleValue()
//b是基本数据类型
//有自动拆箱,还有必要使用***Value吗?没有!!!
boolean b = b1.booleanValue();
System.out.println(b);
②toString();将基本数据类型转为字符串
这个很重要,经常用到,记得是用包装类去调用tostring方法
//toString();将基本数据类型转为字符串【重要】
int i3 = 45;
String s = Integer.toString(i3);
System.out.println(s);//"45"
String s1 = Double.toString(67.8);
System.out.println(s1);//"67.8"
//以后做银行项目的时候,double 和float 有可能数据丢失
//可以转为字符串操作!!!绝对不会
③parse();将字符串类型的数据转为基本数据类型【以后开发用】
这个也用得多
//parse***();将字符串类型的数据转为基本数据类型【以后开发用】
//parsetInt(); parseDouble(); parseFloat();parseByte()
int i = Integer.parseInt("250");
System.out.println(i);//250
//开发中 分页 前段URL传一个字符串值过来 pageNo=2 这个2传
//到Java代码中,是字符串类型的数据,将字符串转为int类型的数据
//然后操作数据库
④valueOf();将基本数据类型转为包装类类似手动装箱
这个也用不上,有自动装箱,干嘛还调方法装
//valueOf();将基本数据类型转为包装类类似手动装箱
byte b2 = 34;//b2 基本数据类型
Byte aByte = Byte.valueOf(b2);
System.out.println(aByte);//aByte 就是包装类
//有没有必要写这个方法?没有 因为会自动装箱
4关于Integer和int类型数据的内存分析
这个问题大家可以再去好好探讨一下。
二、Math类
专门处理数学运算的一个类,`Math`类包含执行基本数字运算的方法,如基本指数,对数,平方根和三角函数。
由于math类的所有方法都是static修饰的,所以可以直接用类名.方法名去调用。
1.常用的方法
abs() | 绝对值 | |
max() | 最大值 | 一次比较两个,想比较多个可以重写该方法 //求三个数的最大值?咋办? System.out.println(Math.max(23, Math.max(45,12)));//45 |
min() | 最小值 | |
ceil() | 向上取整 | 返回值是double |
floor() | 向下取整 | 返回值是double |
round() | 四舍五入 | 返回值为int/long |
random() | 随机数 | 返回一个0-1之间的double小数 如何获取一个0-100的随机数? int i1 = (int)(Math.random() * 100); System.out.println(i1); |
示例:
public class Demo1 {
public static void main(String[] args) {
System.out.println(Math.PI);
System.out.println(Math.E);
//以上是两个常量
System.out.println(Math.abs(-89));//绝对值 89
System.out.println(Math.max(34, 56));//最大值 56
//求三个数的最大值?咋办?
System.out.println(Math.max(23, Math.max(45,12)));//45
//最小值
System.out.println(Math.min(34, 12));//12
//向上取整
System.out.println(Math.ceil(45.2));//46.0
//向下取整
System.out.println(Math.floor(89.8));//89.0
//四舍五入
System.out.println(Math.round(45.5));//46
//随机数大于等于 0.0 ,小于 1.0 double
System.out.println(Math.random());
//随机1-100之间的整数int 0.45 * 100=45 int
int i1 = (int)(Math.random() * 100);
System.out.println(i1);
}
}
三、Random类
专门处理随机数的类
直接new出对象调用相应的方法就是,主要方法有nextInt()、nextXXX()
XXX是基本数据类型,获得的结果就是这个数据类型范围内的一个随机值,如果要限制范围,加入参数即可
具体更多的,多看官方手册
示例:
public class Main {
public static void main(String[] args) throws IOException {
Random random = new Random();
System.out.println(random.nextInt());
System.out.println(random.nextInt(100));//[0,100) 左闭右开
System.out.println(random.nextFloat());
System.out.println(random.nextDouble());
System.out.println(random.nextBoolean());
}
}
1.练习
1.题目要求:
根据int变量n的值,来获取随机数字,范围是[1 , n],可以取到1也可以取到n。
2.题目要求:
用代码模拟猜数字的小游戏。
还是建议大家,先自己敲,最后参考我的
第一题:
Random random = new Random();
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
System.out.println(random.nextInt(n+1));
第二题:
看一下思路:
1.首先需要产生一个随机数字,并且一旦产生不再变化。用Random的nextInt方法 |
2.需要键盘输八,所以用到了Scanner |
3.获取键盘输入的数字,用scanner当中的nextInt方法 |
4.已经得到了两个数字,判断(if)一下: 如果太大了,提示太大,并且重试; 如果太小了,提示太小,并且重试; 如果猜中了,游戏结束。 |
5.重试就是再来一次,循环次数不确定,用while(true)。 |
代码实现:
public class Main {
public static void main(String[] args) throws IOException {
Random random=new Random();
int rd=random.nextInt(101);
Scanner scanner = new Scanner(System.in);
int num=0;
while (true){
int n=scanner.nextInt();
num++;
if(num==5){
System.out.println("次数用完了,loser!");
break;
}
if(n>rd){
System.out.println("大了");
}
else if(n<rd) {
System.out.println("小了");
}
else {
System.out.println("牛逼!");
break;
}
}
}
}
这里用一个num限制猜的次数,此时num得放在while循环外面,不然每次循环的时候都置为0了,就没起作用。
以上,就是今天的所有知识点了。常用数据类型的包装类、Math类、Random类是java中常用的类,大家得多花点时间,静下心看代码,写代码,多理解,多运用,重点是多去运用。
加油吧,预祝大家变得更强!