基础篇 —— 数据类型


尽量每日更新学习记录(大概) (๑•̀ㅂ•́)و✧


数据类型

  • Java中的变量具有严格的数据类型区分。(强类型语言)

  • 在Java语言中,任何一个值,都有其对应类型的变量。

  • 基本数据类型

    1. 整数

    • 注意: 第一位为符号位,0为正,1为负

      • 二进制 (1字节)byte == 8bit

        • 0000 0000

        • -2^7 ~ 2^7-1

        • -128~127

          • 例如 十进制1 二进制 0000 0001
      • 十六进制 (2字节)short

        • 0000 0000 0000 0000
        • -2^15 ~ 2^15-1
        • -32768~32767
      • 三十二进制 (4字节) int

        • -2^31 ~ 2^31-1
        • -2147483648~2147483647
      • 六十四进制 (8字节)long

      • -2^63 ~ 2^63-1

      • -9223372036854775808~9223372036854775807

    //举例
    public class TestType{
    	public static void main(String[] args){
        	byte b = 128;//超出最大值127,会有损失,出错
            short s = 32767;//最大值32767,可以通过
            int i = 2147483648;//超出最大值,出错(int最大值2147483647)
            long a = 21477483647;//通过
            long l = 2147483648;//依旧出错,因为整数默认的数据类型是int
            //此时若要为long类型赋值,应将值后面加上L(不超过int范围内不需要加)
            long x = 2147483648L;
        }
    }
    
    • 扩展:
      • 程序运行过程中,瞬时空间(局部变量表 -Slot 槽)
        • 可存储byte、short、int、float、char、boolean…reference(对象),此处不包含double和long,单槽数据过大会分开捆绑存储(最大32位)
        • 平常用int即可

    2. 小数(浮点数)

    • float (4字节)单精度(精度相对低一些)

    • double (8字节)双精度(精度相对高一些)

      //举例
      double d = 12.34;
      float e = -34.56F;//上下表达意思一样 此处后加 F,下面有说明
      System.out.println(d);//输出结果为 12.34
      System.out.println(e);//输出结果为 -34.56
      
    • 浮点型数值采用科学计数法表示:

      • 2E3 等价于 2*10^3 (结果: 2000.0)
      • 3E5 等价于 3*10^5 (结果: 300000.0)
      double d = 2E4;
      float e = 2E4F;//上下表达意思一样
      System.out.println(d); //输出结果为 20000.0
      System.out.println(e); //输出结果为 20000.0 相同
      double e = 2E-1;//输出结果为 0.2  ( 10^-1 )(10的 (-1) 次方,也就是十分之一)
      
      System.out.println(Float.MAX_VALUE); //查看最大值(同理可替换整数)无负数
      System.out.println(Byte.MIN_VALUE); //查看最小值(同理可替换)无负数
      
    • 注意:double为浮点数的默认类型,如需为float类型赋值,需在值后面加 F(或 f )

    • 额外知识储备:float 32bit 1bit 符号位 8bits 指数位 23bits 尾数位

      ​ double 64bit 1bit 符号位 11bits 指数位 52bits尾数位

    • 布尔(boolean)

      • boolean (1字节)true/false 仅可描述“真”或“假”

        • 可直接赋值 true / false

          boolean answer = false;
          System.out.println(answer);//输出为 false
          
        • 也可赋值一个结果为 true / false 的表达式

          boolean result = 3 > 2;
          System.out.println(result);//输出为 true
          
        • 注意,Java中的 boolean 不能参与算术运算

    • 字符(char) 全称:character

      • char (2字节)表示一个字符

      • 英文对应ASCII码表 中文或其他对应Unicode字符集(万国码)

        char c1 = 'A';
        char c2 = 'B';
        char c3 = 65;
        char c4 = '好';
        char c5 = '\u0041';//通过十六进制数41在字符集中所对应的字符赋值
        System.out.println(c1);//输出为 A
        System.out.println(c2);//输出为 B
        System.out.println(c3);//输出为 A
        System.out.println(c4);//输出为 好
        System.out.println((int)c4);//输出为22909,为 “好” 字的 Unicode码,用int查看
        System.out.println(c5);//输出为 A
        
      • 赋值:char c1 = ‘A’; 或者 char c2 = 65; 或者 char c3 = ‘\u0041’;

  • 引用数据类型

    • 字符串 String 任何 " " 之间的字面值 Unicode字符序列
    String str1 = "你好";
    String str2 = "Hello";
    String str3 = "分布式架构师";
    String str4 = "Java Engineer";
    

扩展:

public class Test{
    public static void main(String[] args){
	//short 2Byte 16bit 有符号数	-2^15 ~ 2^15-1		-32768 ~ 32767
	//char  2Byte 16bit 无符号数	0 ~ 2^16-1			0 ~ 65535
    short s = 65;
    char c = s;//此条错误,编译不通过,怀疑 s 可能是负数
    char c = (char)s;//此条通过
    System.out.println(c);
    }
}
发布了4 篇原创文章 · 获赞 0 · 访问量 89

猜你喜欢

转载自blog.csdn.net/nf404c/article/details/105400430