对象创建指令用于创建新的对象并将其压入操作数栈。访问指令用于访问对象的属性或数组元素。
以下是一些常见的对象创建指令:
new:创建一个新对象,并将其引用压入栈顶。
anewarray:创建一个指定类型的数组,并将其引用压入栈顶。
multianewarray:创建一个多维数组,并将其引用压入栈顶。
以下是一些常见的对象访问指令:
getfield:获取对象的实例变量的值,并将其压入操作数栈。
putfield:设置对象的实例变量的值。
getstatic:获取一个静态变量的值,并将其压入操作数栈。
putstatic:设置一个静态变量的值。
以下是一些示例:
// 创建一个新对象
new java/lang/Object
// 创建一个大小为 10 的 int 数组
bipush 10
newarray int
// 创建一个大小为 10x20 的 int 数组
bipush 10
bipush 20
multianewarray [I 2
// 获取 obj 对象的属性值,存储到栈顶
aload_1
getfield MyClass.obj Ljava/lang/Object;
// 设置 obj 对象的属性值
aload_1
aload_2
putfield MyClass.obj Ljava/lang/Object;
// 获取 MyClass 类的静态属性值
getstatic MyClass.count I
// 设置 MyClass 类的静态属性值
bipush 10
putstatic MyClass.count I
这些指令用于在字节码中实现面向对象的编程。