Day4

发布时间 2023-10-19 14:35:53作者: byyya

标识符

关键字

image

Java所有部分都需要名字。类名,变量名和方法名都属于标识符

注意点

  1. 标识符首位只能是字母,”$“符号,下划线

  2. 除首位外,其它标识符部分可以使用数字,字母,“$”符号,下划线

  3. 标识符不能使用关键字命名

  4. Java标识符是严格区分大小写的

  5. 建议使用英文单词对标识符进行命名

基本数据类型

  1. 类型语言

    • 强类型语言(Java、C++等)

    变量的使用要严格符合规定,先定义后使用

    安全性高,但速度慢

    • 弱类型语言(VBScript、JavaScript)
  2. 数据类型

    • 基本类型

      • 数值类型

        (1)整数

        ​ ① byte(占1个字节)

        ​ ② short(占2个字节)

        ​ ③ int(占4个字节)

        ​ ④ long(占8个字节):要在结尾处加L

        (2) 浮点数

        ​ ① float(占4个字节):要在结尾处加f

        ​ ② double(占8个字节)

        (3) 字符

        ​ char(占2个字节)

      • 布尔类型

        boolean(占一位):True 和 False

    • 引用类型

      类,接口,数组

  3. 面试题的扩展

    • 整数

      • 二进制(0b),八进制(0),十进制,十六进制(0x)(0-9,A-F)
      //表示八进制数,结果为8
      int i = 010;
      
    • 字符(char)

      char c = "中";
      System.out.print((int)c);  //进行强制转化
      

      所有的字符本质依旧是数字

      unicode编码(U0000-UFFFF)占两个字节,unicode有一个编码表,eg 97:“a”,\u进行转义

      //使用\u进行转化,必须在编码的范围内且必须使用字符的单引号
      char i = '\u0061'; //结果为a 
      
    • 转义字符(eg:\n :tab键;\t:换行)

      System.out.println("Hello\nWorld");
      输出结果为:
      Hello
      World
      
    • 浮点数

      float与double:有限的,离散的,舍入误差,接近但不等于

      因此最好完全避免使用浮点数进行比较

      如需进行比较,不能有误差(银行业务),可使用数学工具类:BigDecimal

    • 布尔类型

      boolean flag = true;
      if (flag){}
      //相当于 if (flag==true){}
      

      less is more:代码应精简易读

字节

  • 位(bit):计算机内部数据存储的最小单位,10010100是一个八位二进制数

  • 字节(byte):计算机数据处理的基本单位,一般用大写字母B表示

  • 位与字节的关系

    1B=8b

    1024B=1KB

    1024KB=1M

    1024M=1G

    1024G=1TB

类型转化

由于Java属于强类型语言,因此在进行有些运算时,需先进行类型的转化(不同类型转化为同一类型)。

image

转化类型

  • 强制类型转化(高 —> 低)

    • 格式:(类型)变量名

      注意:当变量范围超过转化类型的范围时,会造成内存溢出;转化时也可能存在精度问题

      int i = 128;
      byte a = (byte)i;
      //a的结果为-128(随便的数),因为byte的取值范围为-128-127    
      

      计算过程出现溢出问题时,先转化类型再继续运算

      int money = 10_000_000;
      int year = 20;
      long total = money * ((long)year);
      
  • 自动类型转化(低 —> 高)

    int i = 278;
    double a = i;   //可自动转化
    
  • 例子

    char i = 'a';
    int j = i + 1;
    System.out.println(j);
    System.out.println((int)j);
    /* 
    *结果为:
    *98
    *b
    */
    

JDK7新特性

数字可以使用_进行分割(下划线不会作为输出结果)

int money=10_000_000;
System.out.println(money);
//结果为:10000000