Java 符号

Java 语言提供了很多符号,包括:注释、分隔符、运算符、修饰符等。

一、关键字和标识符

1. 关键字

Java 语言中有一些具体特殊用途的单词被称为关键字。

2. 标识符

标识符,用于给变量、类、方法命名,有以下要求:

  • 可以由 字母、_ 、$ 开头
  • 可以由 字母、_ 、$ 、数字 组成
  • 不能包含空格
  • 不能是 Java 的关键字

3. 标识符命名约定

(1) 小驼峰命名法

适用于:方法、变量

  • 首个单词的首字母小写
  • 其余单词的首字母大写

(2) 大驼峰命名法

适用于:类

  • 所有单词的首字母均大写

二、注释

1. 单行注释

1
// 这是注释

2. 多行注释

1
2
3
/*
这是注释
*/

3. 文档注释

可以通过 JDK 提供的 Javadoc 工具将源代码中的文档注释提取成一份 API 文档。

三、分隔符

1. 分号 ;

Java 采用分号作为语句的分割。允许一行书写多个语句,也允许一个语句跨越多行,只需要在合适的位置放置分号以分割语句即可。

2. 花括号 {}

花括号的作用是定义一个代码块,代码块在逻辑上是一个整体。

3. 方括号 []

主要用于访问数组元素。

4. 圆括号 ()

  • 在定义方法是包含形参;

    在调用方法时包含实参

  • 在表达式中适当添加括号可以保证运算的正确顺序

  • (类型) 强制类型转换

5. 空格

适当地在代码中使用空格,可以提升代码的可读性。

6. 点 .

1
类/对象 . 成员变量/方法/内部类

表名调用某个类或某个实例的指定成员。

四、运算符

1. 算术运算符

加、减、乘、除、取余、自增、自减

2. 赋值运算符

1
变量 = 值;

赋给变量,需要注意的是,这个表达式本身也有值,其值等于所赋的值。

3. 扩展的赋值运算符

算术运算符可以和等号结合,实现简化代码的作用。

1
a += 5;

等价于

1
a = a + 5;

扩展的赋值运算符隐含了强制类型转换

1
2
short s = 10;
s += 20;

等价于

1
2
short s = 10
s = (short)(s + 20)

4. 比较运算符

比较运算符用于判断两个值的大小,其结果是一个 boolean 值。

5. 逻辑运算符

(1) && 与

(2) & 不短路的与

和 && 的区别是:

A && B ,当 A 为假时,结果必定为假,不会再判断 B ;

A & B,无论 A 是什么情况,都会判断 B。

(3) || 或

(4) | 不短路的或

和 || 的区别是:

A || B ,当 A 为真时,结果必定为真,不会再判断 B ;

A | B,无论 A 是什么情况,都会判断 B。

(5) ! 非

6. 三目运算符

1
表达式1 ? 表达式2 : 表达式3

表达式1为真,则执行表达式2,且整个条件表达式的值为表达式2的值;

表达式1为假,则执行表达式3,且整个条件表达式的值为表达式3的值。

7. 位运算

待更新

五、修饰符适用范围

1. 修饰符适用范围

其中,

  • strictfg:用于设置精确浮点
  • synchronized:同步相关
  • native:用于修饰方法,该方法将用 C 语言实现
  • transient:序列化相关
  • volatile:同步相关
  • default:定义接口的“默认方法”

六、访问修饰符

1. private

常用于修饰成员变量,将成员变量隐藏在类的内部

当前类访问权限

仅能在当前类的内部被访问

2. default

即不加任何访问修饰符

包访问权限

可以被同一个包下其他类访问

3. protected

子类访问权限

既可以被同一个包下的其他类访问,也可以被不同包中的子类访问

通常情况下,使用 protected 修饰方法,是希望其子类重写这一方法

4. public

公共访问权限

可以被所有类访问

5. 修饰成员

可以使用 private、default、protected、public 修饰成员,被修饰后的成员:

  • private:只能在当前类中被访问

  • default:可以被同一个包下的其它类访问

  • protected:可以被同一个包下的其它类,和不同包中的子类访问

  • pubilc:可以被所有类访问

6. 修饰类

可以使用 default、public 修饰类

因为类并没有处在任何类的内部,因此没有所谓的【当前类中】和【不同包中的子类】,因此 private 和 protected 没有意义

  • default:只能被同一个包中的其它类使用
  • public:可以被所有类使用

如果一个 Java 源文件的所有类都没有使用 public 修饰,则源文件的文件名可以是一切合法的文件名;如果 Java 源文件中定义了一个 public 修饰的类,则源文件的文件名必须和 public 修饰的类的类名相同。

因此,一个源文件中只能有一个 public 类,且该类的名字应该与源文件名相同

7. 基本原则

  • 绝大部分成员变量都使用 private 修饰
  • 如果某个类主要用作其他类的父类,其中的方法希望被其子类重写,则应使用 protected 修饰
  • 如果希望给其他类自由调用,则应该使用 public 修饰

七、非访问修饰符

1. static

使用 static 修饰的变量和方法被称为类变量、类方法。

(1) 类变量

  • 类变量属于类,被类中的所有对象共享

  • 类第一次实例化时,系统为类变量分配内存空间

  • 类变量将会一直存在,直至类被完全销毁

  • 无论实例化多少个对象,类变量都将只有一份

(2) 类方法

  • 类方法属于类

  • 类方法只能调用类方法,

    类方法只能调用类变量

    而对象方法不仅可以访问对象方法、对象变量,也可以访问类方法、类变量

(3) 对类变量与类方法的调用

可以使用 对象名.变量名 对象名.方法名 对类变量和类方法进行访问,

可以使用 类名.变量名 类名.方法名 对类变量和类方法进行访问。

推荐使用第二个方法。

2. final

final 表示 “最后的、最终的”,用于表示它修饰的变量、方法和类不可改变。

(1) final 变量

final 变量

final 修饰的变量(包括类变量、对象变量、局部变量)不可被改变,一旦获得初始值,其值便不能被重新赋值。

基本类型和引用类型
  • 用 final 修饰的基本类型变量不能被改变,因此数据无法被改变
  • 用 final 修饰的引用类型变量不能被改变,因此变量的指向无法被改变,但变量指向的数据却可以被改变
宏变量

当变量满足以下条件时,它将不再是变量,而是相当于“宏变量”,会被编译器在编译时直接替换:

  • 使用 final 修饰
  • 在定义时指定了初始值
  • 其初始值可以在编译时被确定

(2) final 方法

用 final 修饰的方法不可以被子类重写。

但可以重载

(3) final 类

用 final 修饰的类不可以有子类,即无法被继承。

3. abstract

(1) abstract 方法

抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供

1
abstract 返回值类型 方法名();

(2) abstract 类

如果类中存在抽象方法,则类必须定义为抽象类

抽象类只描述类型的基本特征与功能,具体如何实现由子类完成。

1
2
3
4
5
abstract class 类名 {
···
abstract 返回值类型 方法名();
···
}

参考