HasStatic是什么意思java_java – getstatic在字节码中真正意味着什么?

HasStatic是什么意思java_java – getstatic在字节码中真正意味着什么?我有这个字节码:newjava.lang.Object//stackis[newObjectRef]dup//Stackis[newObjectRefnewObjectRef]invokespecialvoidjava.lang.Object.()//Stackis[initializedAsTypeObjectObjectRe…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我有这个字节码:

new java.lang.Object

// stack is [newObjectRef]

dup

// Stack is [newObjectRef newObjectRef]

invokespecial void java.lang.Object.()

// Stack is [initializedAsTypeObjectObjectRef]

putstatic java.lang.Object class.a

// variable a has the reference of new object

getstatic java.io.PrintStream java.lang.System.out

// Take the static value of System.out

// Stack is [initializedAsTypeObjectObjectRef System.out]

更新这是继续:

> ldc “test” // Stack is

> [initializedAsTypeObjectObjectRef System.out “test”]

> jsr pos.0000026C // call a subrutine invokevirtual void

> java.io.PrintStream.println(java.lang.String) // actually print the

> result // stack is (I think) Empty at this time ?

翻译是:

Object a = new Object();

a = “test”;

System.out.print(a);

我的筹码好吗?

我不太清楚().

可能我将不得不使用out()setter和print()之后?

我总是习惯用out()打印..

解决方法:

如果我编译代码

public static void main(String[] args) {

Object a;

a = “test”;

System.out.println(a);

}

并运行

javap -c Main

我知道了

public static void main(java.lang.String[]);

Code:

0: ldc #2 // String test

2: astore_1

3: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;

6: aload_1

7: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V

10: return

您可以看到getstatic加载字段System.out

对象没有一个名为out()的方法,所以我不相信你在看你认为的代码.

getstatic获取静态字段,例如System.out是System的静态字段,所以如果你写的话

System.out.println();

这将导致使用getstatic

标签:java,bytecode

来源: https://codeday.me/bug/20190630/1335942.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • object对象转换成map_object强转成map

    object对象转换成map_object强转成map1、Object转换成map的方法importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;/***将Object对象里面的属性和值转化成Map对象**@paramobj*@return*@throwsIllegalAccessException*/publicstaticMap<String,

    2025年6月3日
    2
  • web前端面试题汇总_web前端面试题模拟

    web前端面试题汇总_web前端面试题模拟1.一些开放性题目1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。2.项目介绍3.如何看待前端开发?4.平时是如何学习前端开发的?5.未来三到五年的规划是怎样的?position的值,relative和absolute分别是相对于谁进行定位的?§ absolute :生成绝对定位的元素,相对于最近一级的定位不是static的父元素来进行定位。§ fixed…

    2022年8月27日
    5
  • linux服务器维护教程_服务器验收注意事项

    linux服务器维护教程_服务器验收注意事项#######本节介绍有关服务器管理和维护过程中的一些注意事项,都是笔者的经验之谈,相信对新手会有一定的启发和帮助。很多初学者接触Linux时间不长,还未完整地学习一遍Linux,理解本节内

    2022年8月1日
    8
  • SpringCloud架构图

    SpringCloud架构图直接上图

    2022年6月9日
    50
  • mac视频录制工具推荐[通俗易懂]

    mac视频录制工具推荐[通俗易懂]AVAideScreenRecorderforMac是一款mac视频录制工具,可帮助用户可以选择录制整个屏幕或自定义区域,支持声音的同步录制,以1080p等高清质量以高达60fps的速度录制屏幕活动、视频和游戏。它可以让您以无损质量处理所有屏幕录制任务,包括Zoom会议、视频通话、文件、在线课程等。除了屏幕捕获之外,我们的屏幕录像机还可以作为一个令人难以置信的音频和声音和录音机,将您的录音提升到一个新的水平。任何希望为音乐制作、音频笔记或其他任何东西创建专业品质音频的人都可

    2022年6月17日
    37
  • verilog cpu流水线_设计一个非常简单的CPU

    verilog cpu流水线_设计一个非常简单的CPU快把这一篇给更了

    2022年8月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号