Java回顾——数据类型

数据类型

整数类型:byte、short、int 和 long
浮点类型:float 和 double
字符类型:char
布尔类型:boolean

在这里插入图片描述

1、 整型

在这里插入图片描述
Java 语言的整型类型默认是 int 类型,例如 16 表示为 int 类型常量,而不是 short 或byte,更不是 long,long 类型需要在数值后面加 l(小写英文字母)或 L(大写英文字母)。

2 、浮点型

在这里插入图片描述

Java 语言的浮点类型默认是 double 类型,例如 0.0 表示 double 类型常量,而不是 float类型。如果想要表示 float 类型,则需要在数值后面加 f 或 F。double 浮点数值后面也可以加字母 d 或 D,以表示是 double 浮点数。

3、指数表示

进行数学计算时往往会用到指数表示的数值。如果采用十进制表示指数,需要使用大写或小写的 e 表示幂,e2 表示 102。
采用十进制指数表示的浮点数示例如下:

double myMoney = 3.36e2;
double interestRate = 1.56e-2;

其中 3.36e2 表示的是 3.36×10的平方,1.56e-2 表示的是 1.56×10的负2次方。

4、布尔型

在 Java 语言中声明布尔类型的关键字是 boolean,它只有两个值:true 和 false。如果试图给它们赋值 true 和 false 之外的常量,则发生类型不匹配编译错误。

5、类型转换

5.1 自动转换

自动类型转换就是需要类型之间转换是自动的,不需要采取其他手段,总的原则是小范围数据类型可以自动转换为大范围数据类型,如图所示,从左到右是自动。
在这里插入图片描述
char类型比较特殊,char自动转换为int、long、float和double,但byte
和short不能自动转换为char,而且char也不能自动转换为byte或short。

自动类型转换不仅发生在赋值过程中,在进行数学计算时也会发生自动类型转换,在运算中往往是先将数据类型转换为同一类型,然后在进行计算。计算规则如表所示。
在这里插入图片描述

public static void main(String[] args){
    
    
        byte byteNum = 16;
        short shortNum = 16;
        int intNum = 16;
        long longNum = 16L;
        // byte类型转换为int类型
        intNum = byteNum;
        System.out.println("byte类型转换后的值:"+intNum);
        char charNum = '花';
        // char类型转换为int类型
        intNum = charNum;
        System.out.println("char类型转换后的值:"+intNum);

        // long类型转换为float类型
        float floatNum = longNum;
        // float类型转换为double类型
        double doubleNum = floatNum;
        //表达式计算后类型是double
        intNum = 16;
        double result = floatNum * intNum + doubleNum / shortNum;
        System.out.println("计算的值:"+result + "    类型为:"+getType(result));
        /*该表达式是由 4 个完全不同的数据类型组成,范围最大的是 double,所以在计算过程中
        它们先转换成 double,所以最后的结果是 double。*/
    }
    public static String getType(Object o){
    
     //获取变量类型方法
        return o.getClass().toString(); //使用对象的的getClass()方法
    }

输出:

byte类型转换后的值:16
char类型转换后的值:33457
计算的值:257.0    类型:class java.lang.Double

5.2 强制转换

强制类型转换是在变量或常量之前加上“(目标类型)”实现。

int i = 10;
byte b = (byte) i;

double d = 10.24;
long ll = (long) d;// 10

强制类型转换可能会导致精度损失,数据溢出。
byte/short/char这三种数据类型在运算时,会被首先提升成int类型,然后计算。
布尔类型不能发生数据类型转换

猜你喜欢

转载自blog.csdn.net/qq_43325582/article/details/118944951