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)
上一篇 2022年8月30日 下午1:46
下一篇 2022年8月30日 下午1:46


相关推荐

  • 重装系统error16_error怎么解决

    重装系统error16_error怎么解决 初看这个错误,让我有点头大,因为我用客户端调用,它竟然告诉我服务器拒绝接收.上网上看了很多资料(90%是英文).各说其词,结果还是无果而终.终于功夫不负有心人,终于在不经意间看到了一个老外的陈词: packagecn.sss_grid.mis.action.gydq.service.client;//importcom.sss.util.JDom;importjava.

    2025年11月6日
    6
  • 网络常用端口号大全图片_windows关闭不必要的端口

    网络常用端口号大全图片_windows关闭不必要的端口端口号—具有网络功能的应用软件的标识号。注意,端口号是不固定的,即可以由用户手工可以分配(当然,一般在软件编写时就已经定义)。当然,有很多应用软件有公认的默认的端口,比如FTP:20和21,HTTP:80,TELNET:23等等,这里就不一一列举了。一个软件可以拥有多个端口号,这证明这个软件拥有不止一个网络功能。0-1023是公认端口号,即已经公认定义或为将要公认定义的软件保留的,而102…

    2025年11月7日
    5
  • 手机直播怎么获取rtmp地址_rtmp地址怎么打开

    手机直播怎么获取rtmp地址_rtmp地址怎么打开现在的移动互联网越来越发达,5G的开通也指日可待,大家有没有想过在游乐场坐过山车时、在沙漠骑着骆驼时、在滑滑板时、在滑雪时、在逛街吃到美味佳肴时……将这些精彩的部分第一时间分享给好友们呢?“第一时间分享”?我应该说在这一刻与好友及时互动才对吧(笑),接下来我会给大家介绍GoProHERO7Black的直播功能。最近也在网上查了一下关于GoProHERO7Black(以…

    2022年4月19日
    169
  • 2025 年 AI 编程利器:Cursor Pro 订阅与自定义 AI 实战(含 OpenAI API 集成)

    2025 年 AI 编程利器:Cursor Pro 订阅与自定义 AI 实战(含 OpenAI API 集成)

    2026年3月15日
    2
  • pycharm安装第三方库报错[通俗易懂]

    pycharm安装第三方库报错[通俗易懂]清华源网址https://pypi.tuna.tsinghua.edu.cn/simple/阿里源https://mirrors.aliyun.com/pypi/simple/删除一个源,保留另一个

    2022年8月26日
    8
  • java枚举类型enum用法(java定义枚举常量类)

    文章目录枚举类的使用如何定义枚举类方式一:jdk5.0之前,自定义枚举类方式二:jdk5.0,可以使用enum关键字定义枚举类Enum类的主要方法toString()values()valueOf(StringobjName)使用enum关键字定义的枚举类实现接口的情况情况一:实现接口,在enum类中实现抽象方法情况二:让枚举类的对象分别实现接口中的抽象方法枚举类的使用枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则

    2022年4月16日
    40

发表回复

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

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