数据类型

数据类型用于定义变量,然后约束变量只能存储什么类型的数据
Java是一种强类型语言 定义后才能使用
数据类型分类:

  • 基本数据类型(primitive type)
  • 引用数据类型(reference type)

基本数据类型

基本数据类型:在jdk中已经定义好的一些类型,这些类型无法增加,描述的都是一些简单的数据。四类八种

  • 整数类型:
    byte 1个字节 -128~127
    short 2个字节 -2^15 ~ 2^15-1
    int 4个字节 -2^31 ~ 2^31-1
    long 8个字节 -2^63 ~ 2^63-1
  • 小数类型:
    float 4个字节 >8个字节的long类型
    double 8个字节 >4个字节的float类型
  • 字符类型:
    char 2个字节 0-65535
  • 布尔类型:
    boolean 未知大小 true\false
public class Demo {
    public static void main(String[] args){
        //八大基本数据类型
        
        //整数
        int num1 = 10;
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L; //long类型要在数字后面加一个L

        //小数
        float num5 = 50.1F;//float类型要在数字后面加一个F
        double num6 = 3.1415925;

        //字符
        char name = '中';

        //字符串,String不是关键字
        String namea = "中国";

        //布尔值
        boolean flag = true;
        boolean flag1 = false;
    }
}
public class Demo {
    public static void main(String[] args){
        //整数拓展: 进制  二进制0b  十进制  八进制0  十六进制0x

        int i = 10;
        int i2 = 010;//八进制0
        int i3 = 0x10;//十六进制0x

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
    }
}

输出结果如下:

public class Demo {
    public static void main(String[] args){
        //float  有限  离散  舍入误差  大约  接近但不等于
        //最好避免完全使用浮点数进行比较
        //BigDecimal  数学工具类

        float f = 0.1f;
        double d = 1.0/10;

        System.out.println(f==d);

        float d1 = 123123123123123f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
    }
}

输出结果如下:

引用数据类型

引用数据类型:数据描述的不是数据本身,而是在描述真正数据的“地址”。一般都是使用一些自定义的类去描述,相当于各种基本类型的组合,形成一个复杂的类型

类型转换

存在不同类型的变量赋值给其他类型变量
隐式类型转换

  1. 当小范围的数据类型和大范围的数据类型在运算时,会先将小范围的数据类型的数据,提升为大范围的数据类型,再进行运算。运算的结果还是大范围的数据类型。
  2. 数据类型表示范围比较
    byte<short=char<int<long<float<double
  3. 注意事项:
    byte、short、char、int在互相运算时,会直接统统提升为int类型,而非较大类型
    int以及int以上的类型,在互相运算时,会提升为较大类型

强制类型转换

  1. 大范围的数据类型的数据,要转换成小范围的数据类型,就需要进行强制类型转换
  2. 转换格式:
    (要转成的数据类型)需要转换的数据
  3. 注意事项:
    boolean类型不能转换
    转换的时候可能存在内存溢出,或者精度问题
    操作比较大的数时注意溢出问题
public class Demo {
    public static void main(String[] args){
        //JDK7新特性,数字之间可以用下划线分隔
        int money = 10_0000_0000;
        System.out.println(money);
        int years = 20;
        //操作较大数字的时候,注意溢出问题
        long total = money * years;//-1474836480,计算的时候溢出了
        long total2 = money * ((long)years);//先把一个数转换为Long,那么另一个数字也会隐式转换变成long类型
        System.out.println(total);
        System.out.println(total2);
    }
}

输出结果如下:

posted @ 2021-11-29 16:57  呵嗷嚎  阅读(47)  评论(0)    收藏  举报