Icebreaker7

 

基本数据类型

基本数据类型

  1. long类型要在数字后面加个L

  2. float类型要在数字后面加个F

  3. 整数拓展(Java面试题):进制 二进制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);
    
    //分别输出了10,8,16
    
  4. 浮点数拓展:少用浮点数进行比较

    //float 有限 离散 舍入误差 大约 接近但不等于
    //最好完全使用浮点数进行比较
    
    float f = 0.1f;  //0.1
    double d = 1.0/10; //0.1
    
    System.out.println(d1 == d2); //输出了flase
    
    float d1 = 23232121323f;
    float d2 = d1 + 1;
    
    System.out.println(d1 == d2);//输出了true
    
  5. 字符拓展:所有的字符本质还是数字

    char c3 = '\u0061';
    System.out.println(c3);  //输出了a
    
  6. 类型转换

    //低-------------------------------------------高
    byte,short,char ->int ->long -> float ->double
    
    int i = 128;
    byte b = (byte) i;  //强制转换  (类型)变量名
    double b = i;  //不会报错
    
    //强制转换 (类型)变量名   高-->低
    //自动转换   低-->高
    
    System.out.println(i);  //输出128
    System.out.println(b);  //输出-128,内存溢出了
    System.out.println((int)23.7); //输出23,精度有问题
    System.out.println((int)-45.89f);  //输出-45,精度有问题
    

    操作比较大的数的时候,注意溢出问题

    //JDK7新特性,数字之间可用下划线分割
    int money = 10_0000_0000;
    int years = 20;
    int total = money*years;  //-1474836480,计算的时候溢出了
    long total2 = money*years;  //-1474836480,计算的时候也会溢出了
    long total3 = money*((long)years);//先把一个数转换为long
    
    System.out.println(money);  //输出1000000000
    System.out.println(total);  //计算的结果默认是int,转换之前已经存在问题了
    System.out.println(total2); //还是溢出
    System.out.println(total3);  //正确
    //byte/short/int/long在和int一起计算的时候都会转为int
    

posted on 2022-10-13 15:27  Icebreaker_7  阅读(17)  评论(0编辑  收藏  举报

导航