Java 符号
Java 语言提供了很多符号,包括:注释、分隔符、运算符、修饰符等。
一、关键字和标识符
1. 关键字
Java 语言中有一些具体特殊用途的单词被称为关键字。
2. 标识符
标识符,用于给变量、类、方法命名,有以下要求:
- 可以由
字母、_ 、$
开头 - 可以由
字母、_ 、$ 、数字
组成 - 不能包含空格
- 不能是 Java 的关键字
3. 标识符命名约定
(1) 小驼峰命名法
适用于:方法、变量
- 首个单词的首字母小写
- 其余单词的首字母大写
(2) 大驼峰命名法
适用于:类
- 所有单词的首字母均大写
二、注释
1. 单行注释
1 |
|
2. 多行注释
1 |
|
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,且整个条件表达式的值为表达式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 |
|
(2) abstract 类
如果类中存在抽象方法,则类必须定义为抽象类
抽象类只描述类型的基本特征与功能,具体如何实现由子类完成。
1 |
|
参考
疯狂 Java 讲义