Java的数据类型

数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

Java的数据类型分为两大类

  • 基本类型(primitive type)

    • 数值类型
      • 整数类型
        • byte占1个字节范围:-128-127
        • short占2个字节范围:-32768-23768
        • int占4个字节范围:-2147483648-2147483648
        • long占8个字节范围:-9223372036854775808-9223372036854775808
      • 浮点类型
        • float占4个字节
        • double占8个字节
      • 字符类型char占2个字符
    • boolean类型:占1位其值只有true和false两个
  • 引用类型(reference type)

      • String
      • BigDecimal 数学工具类
    • 接口
    • 数组

    面试题:Java基础八大类型有哪些?

扩展

  • 整数扩展

    • //进制: 二进制0b 十进制 八进制0 十六进制0x
      int i = 10;
      int i2 = 010; //八进制0
      int i3 = 0x10; // 十六进制0x 0~9 A~F 16
  • 浮点数

    • // float 有限 离散 舍入误差 大约 接近但不等于
      // 最好不要使用浮点数进行比较
      float f = 0.1f; //0.1
      double d = 1.0/10; //0.1
      if(f==d){}//返回false
      float d1 = 12321312312312f;
      flaot d2 = d1+1;
      if(d1==d2){}//返回true
    • 面试题:银行业务怎么表示?钱
      DigDecimal 数学工具类

  • 字符

    • char c1 = 'A';
      char c2 = '中';
      System.out.println((int)c1); //强制转换成Unicode对应的数值
      System.out.println((int)c2); //强制转换成Unicode对应的数值
      char c3 = '\u0061';
      System.out.println(c3);//a
  • 转义字符

    • \n 换行
    • \t 制表符
  • 布尔值扩展

    • boolean flag = true
      if(flage){
      }

    类型转换

    由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。

    低 --------------------------------> 高
    byte,short,char-> int -> long -> float -> double

    运算中,不同类型的数据先转换为同一类型,然后进行运算。

    强制转换和自动类型转换

    // 强制转换 (类型)变量名 高-->低
    int i = 128
    byte b = (baye)i; //内存溢出,byte最大值为127
    // 自动转换 低-->高
    int i = 128
    double i =i;
    // 精度问题,小数点后面的数丢失
    System.out.println((int)23.7) // 23
    System.out.println((int)-45.89f) // -45
    // char的强制转换
    char c ='a';
    int d = c+1;
    System.out.println(d); // 输出98
    System.out.println((char)d); // 输出b

    注意点:

    1. 不能对布尔值进行转换
    2. 不能把对象类型转换为不相干的类型
    3. 在把高容量转换到低容量的时候,需要强制转换
    4. 转换的时候可能存在内存溢出,或者精度的问题
// 操作比较大的数的时候,注意溢出问题
// JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000;
int years = 20;
int total = money*years; // -1474836480,计算是已经溢出
long total2 = money*years; // 默认是int,转换之前就已经存在问题
// 解决方式
long total2 = money*((long)years); // 先吧一个数转换为long

posted @   千寻简  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示