Day05 语法

发布时间 2023-11-25 22:49:08作者: 问稻

1. 注释

  • 单行注释 //注释
  • 多行注释 /* 注释 */
  • 文档注释 /** 注释 */

2. 标识符命名规则 (与 js 规则一样)

  • 标识符可以含有 字母, 数字, 下划线_, (*注意此处相较于 c 语言多出一个符)

  • 不能以数字开头

  • 不能是java中的保留字和关键字

  • java也采用了 unicode 编码方式,所以字母也可以是中文

  • 建议采用驼峰法:

  •  -首字母小写,每个单词开头字母大写,其余均小写
    

3.基本数据类型

3.1 整数型

类型 长度字节 位数 取值范围 备注
byte类型 1个字节 8位 -2^7 - 2^7-1 -128 - 127
short类型 2个字节 16位 -2^15 - 2^15-1 -32768-32767
int 类型 4个字节 32位 -2^31 - 1~2^31-1
long 类型 8个字节 64位 -2^63 - 1~2^63-1 末尾加L

注解:

  • 整型的范围与运行java代码的机器无关,这一点和C、C++不同,保证了代码在不同的平台之间的可移植型。

  • int最为常用,char和short主要用于特定场合,比如底层处理文件、处理需要占用大量存储空间的数组。要表示的数据超过int类型的范围时使用长整型int.

  • 通常long类型后通常加字符“L”,例如 long a = 123L ; , 但是"L"理论上不区分大小写,但若写成小写的"l",容易与数字"1"混淆,不容易分辩,所以最好写成大写的“L”


3.2 浮点型

类型 长度字节 位数 取值范围 备注
float 类型 4字节 32位 大约±3.402 823 47E+38F(有效位为6~7位) 末尾加f
double 类型 8字节 64位 大约±1.79769313486231570E+308(有效位为15位)

注解:

  • 默认浮点数使用类型为double, 其后可加字符“d”,"d"理论上不区分大小写

  • 所以为了区分,通常浮点型末尾末尾加字符”f”, 例如 float a =3.1415926535f ;, "f"理论上不区分大小写

  • float 和 double 不能用来表示精确的值,如不能用来表示货币等。实际使用 BigDecimal 类

  • 科学记数法: 结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103=3140,3.14E-3 就是 3.14 x 10-3 =0.00314


3.3 字符型

类型 长度字节 位数 取值范围 备注
char 类型 2个字节 16位 \u0000 - \uffff 0 - 65535

注解:

  • Java的char类型可以表示标准的ASCII,

  • char类型还可以表示一个Unicode字符,代表一个单一的16位 Unicode 字符

  • 想要打印 Unicode 字符 可以使用 “\u”+数字

  • 字符和字符串是两种不同的数据类型。char类型使用单引号''表示,单引号里面只能有一个字符。字符串用双引号""表示,双引号中可以有很多字符。


3.4 布尔型

类型 长度字节 位数 取值范围 备注
boolean 类型 0字节 1 位 true or false 默认值是 false

注解:

  • JAVA规范中没有定义boolean类型的大小, 理论上组需要1bit 即可,但是编译时有定义:JVM规范第2版 3.3.4节

    • 单个的boolean 类型变量在编译的时候是使用的int 类型,4个字节(32bit)
    • 但如果是boolean数组在编译的时候是作为byte array来编译的,每一个元件占1字节(8 bits)

3.5 对比总结

  1. byte 作用类似于 c++中的char,但又无法直接存字符

  2. char 大小与c++不同,多了一个字节,2字节可存 unicode, 所以可以是中文

  3. java 无 unsigned 类型

  4. java 常量的需要加修饰符 final,相当于c++中的 const

基本数据类型字节数


3.6 类型转换

类型 byte => short =>int => long => float => double
优先级 低>>>>>>>>>>>>>>>>>>>>>>>>>>>>>高

低可以直接转高,但是高转低会出现溢出和丢精度的现象


4.变量

  • 类变量

  • 实例变量

  • 局部变量

    public class Person {
        //类变量: 需要关键词 static
        static int population = 1;
    
        //实例变量:从属于对象; 如果不初始化,会赋予默认值0, 0.0, false, null
        String name;
        int age;
        //mian方法
        public static void main(String[] args) {
            //局部变量: 声明后必须初始化值,不然报错
    
            /*int i;
            System.out.println(i);*/
    
            int i;
            i=10;
            System.out.println(i);
            /*
            * 实例变量需要先创建一个对象
            * 实例变量如果不复赋值则为默认值
            */
            /*
            * 创建对象
            * 变量类型 变量名 = new 构造函数;
            */
    
            Person person = new Person();
            System.out.println(person.name);
            System.out.println(person.age);
            person = null;
            /*
            * 类变量的调用
            * 类变量无需对象就可以调用
            * 相当于c++中的静态成员,整个类共用一个
            */
            System.out.println(population);
        }
    }
    
    

4.1 变量命名规则

  • 所有变量、方法、类名: 见名知意
  • 类名 : 首字母 大写 和驼峰原则: Man, GoodMan
  • 类成员变量、局部变量: 首字母 小写 和驼峰原则 : monthSalary
  • 常量 : 大写字母和下划线 : MAX_VALUE
  • 方法名 : 首字母小写和驼峰原则 : run(), runRun0