java数据类型之间的转换以及相互运算后的类型

Java八大数据类型:

(1)整数类型:byte、short、int、long
(2)小数类型:float、double
(3)字符类型:char
(4)布尔类型:boolean


1、 整数数据类型

byte:1个字节,8位,256种状态,取值范围为【-128,127】
short:2个字节,16位,65536种状态,取值范围为【-32768,32767】
int:4个字节,32位,整数类型默认是int类型,取值范围约21亿
long:8个字节,64位,long类型表示long类型常量,要加L或者l,建议加L


2、 小数数据类型

float:4个字节,32位,单精度,能精确到6~7位,声明一个小数类型,要加F或者f,建议加F
double:8个字节,64位,双精度,能精确到15~16位,小数类型默认是double类型


3、 字符数据类型

char:2个字节,16位,字符表示Unicode(万国码)编码表中的每一个符号,每个符号使用单引号引起来,其中前128个符号和ASCII表相同


4、 布尔数据类型

boolean:占1位,有true和false2个值,一个表示真,一个表示假,一般用于表示逻辑运算

数据类型自动转换路线:

        byte => short => int => long => float => double

        char => int => long => float => double

        注意:char 不可以和 byte、short相互转换

总结:

        1.byte、short、char 是可以通过转成int可以进行相互计算的

        2.类型的自动转换都是自动变成大的数据类型(char 不可以和 byte、short相互转换

        3.牵扯到float和double就要注意精度问题。

                注意: 1)float和float自己的运算:

                       

                       

                                ①小数点后位数相同,精度没问题

                                ②小数点后不同精度出现问题

                         2)double和double自己的运算,精度会出现问题(不论什么情况)

                        3)double和float之间的运算,精度会出现问题(不论什么情况)

代码示例和注意事项:

package com.gao.test.datatype;

/**
 * @Author lie
 * @Description
 */
public class DataType {
    public static void main(String[] args) {
        byte b1 = 10;   // 取值范围 -128 ~127
        short s1 = 130;
        int i = b1 + s1; // byte+short ==> int

        byte b2 = 30;
        char c2 = 136;

        int i2 = b2 + c2; // byte+char ==> int

//        byte b3 = b1 + b2; //错的,只要运算就转换成int了

        int i3 = 100;
        float f1 = 1.1f;
        float f2 = 1.22f;
        float f3 = 1.33f;
        double d1 = 1.1;
        double d2 = 2.22222222;
        double d3 = 3.33333333333;

        System.out.println(i);  // 140
        System.out.println(i2); // 166
        System.out.println("f1 = "+f1); // 1.1
        System.out.println("f1+f2+f3 = "+(f1+f2+f3)); // 3.65 精度没有问题
        System.out.println(f1+i3); // 101.1
        System.out.println(f1+d1); // 2.200000023841858 : float 和 double之间的运算要注意
        System.out.println(i3+f1+d1); // 102.19999847412109
        System.out.println(d1+d2); // 3.3000000000000003 double 自己之间的运算也要注意精度问题
        System.out.println(i3+d1+d2); // 103.3 有int参与精度回复正常了
        System.out.println(i3+d1+d2+d3); // 106.65555555333 有int参与精度回复正常了

        //结论:byte、short、char 是可以通过转成int可以进行相互计算的
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值