Java学习day20:常用数据类型的包装类、Math类、Random类(知识点详解)

声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)


往期回顾:

Java学习day19:StringBuffer类、枚举类enum(知识点详解)-CSDN博客

Java学习day18:IO流(一篇文章知识点详解)-CSDN博客

Java学习day17:File类(一片文章搞懂重难点)-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中常用的类,大家得多花点时间,静下心看代码,写代码,多理解,多运用,重点是多去运用。

加油吧,预祝大家变得更强!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值