zoukankan      html  css  js  c++  java
  • Java数据类型总结

    Java基本数据类型

    1. 数据类型分类

      Java语言内置了八种数据类型,其中六种数字类型,一种字符类型,一种布尔类型

      • byte

        • 数据类型8位,带符号,数值 -128(-27) 至 127(27-1)

        • 用在大型数组中节约空间

        • byte num1 = 100;
          
      • short

        • 数据类型16位,带符号,数值 -32768(-215) 至 32767(215-1)

        • short num2 = 1000;
          
      • int

        • 数据类型32位,带符号,数值 -2,147,483,648(-231) 至 2,147,483,647(231-1)

        • int num3 = 10;
          
      • long

        • 数据类型64位,带符号,数值 -263 至 263-1

        • 末尾需要增加 L 进行区分

        • long num4 = 100000L;
          
      • float

        • 单精度浮点,32位

        • 可以在存储大型浮点数组节约空间

        • 不能精确表示

        • float num5 = 50.1f;
          
      • double

        • 双精度浮点,64位

        • 不能精确表示

        • 小数点后全部为0可以省略,例如 10.0 可以写成 10. 和 10.D

        • double num6 = 10.0;
          double num6 = 10.D;
          double num6 = 10.;
          
      • boolean

        • 数据类型1位,只有true和false
      • char

        • 表示一个单一的16位Unicode字符(0 - 65536)
    2. 类型转换

      • 转换公式: 新类型 新变量 = (新类型) 旧变量;

      • 一定要先转换后计算

      • 类型Level

        • 从低到高: byte,short,char => int => long => float => double
      • 转换栗子

        • 低等级会自动转为高等级

        • int n1 = 100;
          long n2 = n1;
          
        • 高等级需要强制转换为低等级

        • long n1 = 100L;
          int n2 = (int) n1;
          
      • Problem

        1. blooean 不能参与转换

        2. 不能转换完全没有关系的数据类型

        3. 转换可能会产生内存溢出得不到正确结果,还可能会损失精度

          // 内存溢出
          int n1 = 128;
          byte n2 = (byte) n1; // ==> -128
          
          // 丢失精度
          float n3 = 10.5F;
          int n4 = (int) n3; // ==> 10
          
          // 大数时容易丢失产生内存溢出
          int n5 = 10_0000_0000;
          int n6 = 20;
          int n7 = n5 * n6; // ==> -1474836480
          long n8 = n5 * n6; // ==> -1474836480 因为先计算后转换的
          // 正确做法
          long n9 = (long) n5 * n6; // 因为先转换后计算的
          
    3. 拓展

      • 二进制、八进制、十进制、十六进制

        • 二进制以0b开头,八进制以0开头,十六进制以0x开头

        • int n1 = 0b10; //2
          int n2 = 010;  //8
          int n3 = 0x10; //16
          
      • float与double对比

        • 对比需要用到javas.math里面的BigDecimal

        • float f1 = 0.1;
          double d1 = 1.0/10.0;
          System.out.prinyln(f1 == d1) //false
          
        • BigDecimal 后续补充...
      • char类型可以与Unicode相互转换

        • char c1 = 'a';
          System.out.printlm((int) c1); ==> 97
          
          char c2 = 'u0061';
          System.out.println(c2); ==> a
          
  • 相关阅读:
    稳定性「三十六计」- 无状态化
    设置默认的超时和重试是一个基础设施的基本素养
    「前任的50种死法」开发踩坑案例--慢就是错
    稳定性「三十六计」- 配额管控
    编写代码的「八荣八耻」- 以开关上线为荣,以自信编码为耻
    Kubernetes的DaemonSet(下篇)
    使用Elasticsearch的动态索引和索引优化
    Kubernetes的DaemonSet(上篇)
    程序媛的人生观
    Kubernetes的污点和容忍(下篇)
  • 原文地址:https://www.cnblogs.com/rainful/p/14669284.html
Copyright © 2011-2022 走看看