java基础02-数据类型,类型转换

数据类型

Java语言的数据类型分为两种:基础数据类型引用数据类型

  1. 基本数据类型包括 boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和 double (双精度浮点型)共 8 种。

表 1 Java的基本数据类型
类型名称         关键字占用内存取值范围区间
字节型 byte 1 字节 -128~127 -27~27-1
短整型 short 2 字节 -32768~32767 -2 15~2 15-1
整型          int 4 字节 -2147483648~2147483647 -2 31~231-1         
长整型 long 8 字节 -9223372036854775808L~9223372036854775807L          -2 63~263-1         
单精度浮点型          float 4 字节 +/-3.4E+38F(6~7 个有效位)  
双精度浮点型          double 8 字节 +/-1.8E+308 (15 个有效位)  
字符型 char 2 字节 ISO 单一字符集  
布尔型 boolean          1 字节 true 或 false  

 

所有基本数据类型的大小(所占用的字节数)都已明确规定,在各种不同的平台上保持不变,这一特性有助于提高 Java 程序的可移植性。-27~27-1

  1. 引用数据类型建立在基本数据类型的基础上,包括数组、类和接口引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。

java数据类型结构图

Java 是一种强制类型的语言,所有的变量都必须先明确定义其数据类型,然后才能使用。Java 中所有的变量、表达式和值都必须有自己的类型,没有“无类型”变量这样的概念。

注:

  1. 对于long型值,若赋的值大于或小于int型的最大最小值时,要在数字后面加Ll,表示该数值为长整型,如 long num = 42345155L。

  2. 默认情况下,小数都被看做double型。

  3. 在自定义字符型变量时,要以单引号表示,如 's' 表示一个字符,而 "s" 表示一个字符串。

  4. 布尔类型通常被用在流程控制中,作为判断条件。

  • 拓展

    • 整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x

      int i =  10;
      int i1 = 0b10;
      int i2 = 007; // 八进制0
      int i3 = 0x10; // 十六进制0x 0~9 A~F
      System.out.println(i);
      System.out.println(i1);
      System.out.println(i2);
      System.out.println(i3);
     返回值:
      10
      2
      7
      16
    • 浮点数拓展

            // float 有限 离散 舍入误差 大约 接近但不等于
      // 最好完全避免使用浮点数进行比较
      // 使用BigDecimal 数学工具类 如 银行业务
      float f = 0.1f;
      double d = 1.0 / 10;
     
      System.out.println(f == d); // false
      System.out.println(f);
      System.out.println(d);
     
      System.out.println("=============");
     
      float d1 = 2333333333333f;
      float d2 = d1 + 1;
      System.out.println(d1 == d2); // true
    • 字符拓展

            // 所有的字符本质还是数字
      // java采用Unicode编码格式 0~65536
      char c1 = 'a';
      char c2 = '中';
      System.out.println(c1);
      System.out.println((int)c1); //强制转换 97
      System.out.println(c2);
      System.out.println((int)c2); //强制转换 20013
    • 布尔值拓展

     boolean flag = true;
     if (flag==teur){}
     if (flag){} //等价
     // Less is More! 代码要精简易懂

类型转换

   如果从低精度数据类型向高精度数据类型转换,则永远不会溢出,并且总是成功;而把高精度数据类型想低精度数据类型转换时, 则会有信息丢失,可能失败。

数据类型转换有两种方式,即隐式转换显示转换

隐式类型转换

小容量向大容量转换,称为自动类型转换,容量从大到小(布尔类型除外)

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

显示类型转换

大容量向小容量转换,要加起那个纸烈性转换符 (类型名)要转换的值

  • 拓展

             // 操作比较打的数的时候,注意溢出问题
      // JDK7 之后,数字之间可以用下划线分割
      int m = 10_0000_0000;
      int y =20;
      int t = m*y; // -1474836480 , 计算的时候溢出了
      long t2 = m*y; // -1474836480 ,默认是int,转换前求已经存在问题了
     
      long t3 = m*((long)y);
      System.out.println(t3);
  •  

posted @ 2021-04-12 21:44  C_Long  阅读(109)  评论(0)    收藏  举报