8个基本数据类型以及数据类型之间的相互转换

一、Java语言中8个基本数据类型分别是:byte、short、int、long、float、double、char、Boolean
(1)byte类型占1个字节,取值范围:-128~127

        // 1.声明一个byte类型的变量并初始化
        byte b1 = 25;
        //byte b1 = 250;  不兼容的类型 byte类型数据的取值范围是 -128~127
        // 像250这样直接写出来的数据称为直接量/常量/字面值 默认为int类型
        System.out.println("b1 = " + b1);

(2)short类型占2个字节,取值范围:-2^15 ~ 2^15-1`

        short s1 = 250;
        // short s1 = 250250;  超出short类型的取值范围
        System.out.println("s1 = " + s1);

(3)int类型占4个字节

        int i1 = 250250;
        System.out.println("i1 = " + i1);

(4)long类型占据8个字节
注意:若希望表达更大的直接量 则在直接量后面加上L或l(推荐L)
如果想要描述一个比long类型还大的数据,则使用java.math.BigInteger类型

        // long lg = 12345678987654;  数据本身是默认int类型,不管前面的是什么数据类型,这个数据本身就已经过大了
        // 若希望表达更大的直接量 则在直接量后面加上L或l(推荐L)
        long lg = 12345678987654L;
        //由于有些数据后面会加上类似于L这样的字母做特殊用途,这也是标识符命名规则中数字不能开头的原因
        System.out.println("lg = " + lg);
        // 如果想要描述一个比long类型还大的数据,则使用java.math.BigInteger类型

可以将直接量25赋值给byte类型的变量,但是不能把值(暂时)等于25的变量赋值给byte类型,因为变量的值是不确定的

        byte b2 = 25;
        int i2 = 25;
        // byte b2 = i2;  此处是变量给byte类型赋值,不能保证一定是byte类型的

(5)float类型占4个字节,单精度浮点数,可以表示到7位有效数字,取值范围:-3.403E38~3.403E38.(10的38次方)
与int类型有所不同的是,int类型的二进制数中,只有符号位和数,但是float类型除了符号位和数之外,中间有一部分专门表示次方位,所以float类型表示的数比int类型大。

        // 1.声明一个float类型的变量并初始化
        //float f1 = 3.1415926;   // 3.1415926也叫作直接量,默认为double类型
        float f1 = 3.1415926F;  // 需要表达float类型数据在后面加上F或者f
        System.out.println("f1 = " + f1); // 运行结果:f1 = 3.1415925   默认7位有效数字

(6)double类型占8个字节,双精度浮点数,可以表示15位有效数字,取值范围:-1.798E308~1.798E308

        double d1 = 3.1415926;
        System.out.println("d1 = " + d1);// 运行结果:d1 = 3.1415926   默认15位有效数字

注意:

System.out.println(0.1+0.2);  //运行结果:0.30000000000000004  float类型和double类型在运算时会有误差

若希望实现精确运算则借助java.math.BigDecimal类型
(7)char类型占2个字节,并且是没有符号位的(与同样占2个字节的short类型取值范围不同了),取值范围:0~65535
现实生活中很少有数据能够使用单个字符描述,因此使用更多的是由多个字符串起来组成的字符串,用String类型加以描述

        char c1 = 'a';
        System.out.println("c1 = " + c1);
        // c1在底层是使用ASCII的形态存在的,但是打印的是char类型数据,所以结果是“图案”而非“编号”
        System.out.println("对应的编号是:" + (int)c1);  //表示将char类型的c1强制转换成int类型并打印  97
        // 打印的结果取决于使用什么方式解析
        
        char c2 = 98;
        System.out.println("c2 = " + c2);  //运行结果:c2 = b
        

重要的几个ASCII:‘0’- 48 ‘A’-65 ‘a’-97 空格-32 ‘/n’-10

ASCII之外的字符使用Unicode字符集表示,该字符集可以百度搜索

        char c3 = '\u5947';  //奇
        char c4 = '\u5948';  //奈
        System.out.println("c3 = " + c3 + ", c4 = " + c4);

(8)boolean类型所占大小没有明确地规定,可以认为是一个字节(其实一个进制位就可以表示)boolean类型的数据只有两个:true和false

        // 1.声明一个布尔类型的变量并初始化
        boolean b1 = true;
        System.out.println("b1 = " + b1);

        System.out.println("---------------------------------");
        // 2.修改变量b1的数值   = 赋值运算符  将它右边的数据赋值给左边,并覆盖左边原来的数值
        b1 = false;
        // b1 = 1;  此时b1为boolean类型不能赋值int类型的数据
        System.out.println("b1 = " + b1);

二、数据类型之间的相互转换
(1)自动类型转换:从小类型到大类型之间的转换
byte=>short/char=>int=>long=>float=>double

        // 1.声明两个变量并初始化
        byte b1 = 10;
        short s1 = 20;
        System.out.println("b1 = " + b1); //10
        System.out.println("s1 = " + s1); //20

        // 2.实现自动类型的转换
        s1 = b1;  //将b1的数值赋值给s1  相当于从byte类型到short类型的转换 小到大的转换
        System.out.println("b1 = " + b1); //10
        System.out.println("s1 = " + s1); //10

(2)强制类型转换:从大类型到小类型之间的转换
语法格式:目标类型 变量名 = (目标类型)源类型变量名

        // 3.实现强制类型的转换
        // 语法格式:目标类型 变量名 = (目标类型)源类型变量名
        s1 = 128;  //测试强转是否有损失
        // 128:0000 0000 1000 0000  转换为byte类型默认取低八位 =>  1000 0000 负二进制转换为十进制 最终结果为-128
        b1 = (byte)s1; // 把short类型的s1转换为byte类型的b1
        System.out.println("b1 = " + b1); //-128
        System.out.println("s1 = " + s1); //128

强制转换有风险!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值