文章目录
1. 静态代码块
在静态代码块中仅可以对静态变量进行赋值,在类被加载时就会执行。
该部分的代码会编译到init方法中执行
static{
}
2. 代码块
在代码块中可以对任何变量进行复制,但只有在new的时候才会执行。
里面的逻辑会编译到init方法中进行执行
{
}
3. 类构造器方法 clinit
4. 实例构造器 init
5. 类方法(静态方法)
6. 实例方法(非静态方法)
7. 静态常量
static final
修饰的属性,不可修改(常),该属性属于类,而不是类的实例对象
8. 静态变量
static
修饰的属性,可修改(变)
9. 字面量
字面量可以理解为实际值,int a = 8中的8和String a = "hello"中的hello都是字面量
10. 符号引用
符号引用就是用一组符号来描述所引用的目标,可以是任何形式的字面量,与内存无关,所引用的目标不一定加载到内存中。
11. 直接引用
直接引用可以是指向目标的指针、相对偏移量或者一个能间接定位到目标的句柄。和内存息息相关,用于在内存中查找目标。
12. 简单名称
没有类型和参数修饰的方法或字段名称
13. 全限定名
一个类的全限定名是将类全名的.全部替换为/
org.sumanit.Test -> org/sumanit/Test
14. 描述符
用于描述一个字段或方法的字符串
标识字符 | 含义 |
---|---|
B | byte |
C | char |
D | double |
F | float |
I | int |
J | long |
S | short |
Z | boolean |
V | void |
L | 对象如 Ljava.lang.String |
数组 | 一个维度一个[ |
- 方法
方法的描述符就是按照字段的描述符进行组合
按照先参数列表,后返回值的顺序描述。参数列表按照参数的顺序放在()内。
void inc() -> ()V
String toString() -> ()Ljava/lang/String;
int indexOf(char[] source, int sourceOffset, int sourceCount) -> ([CII)I