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


相关推荐

  • 用户 不在 sudoers 文件中。此事将被报告。

    用户 不在 sudoers 文件中。此事将被报告。文章目录背景解决方案背景普通linux用户使用sudo命令执行只有root用户才可以执行的命令时出现了该错误,如下图示:简单说明一下操作。命令$ll/etc/sudoers表示查看文件的属性,属性包括有:文件拥有者、文件所属组以及其他用户组对该文件拥有的读写权限和文件的类型等,上图的/etc/sudoers文件表示拥有者和所属组都是root且只能读取,其他用户组的没有任何读写权限。命…

    2022年6月20日
    46
  • RangeValidator 控件

    RangeValidator 控件RangeValidator控件用于检测用户输入的值是否介于两个值之间。可以对不同类型的值进行比较,比如数字、日期以及字符。我们一般会用来验证输入的年龄或者考试的分数等。下面我们一块看看RangeValidator的属性:属性描述 BackColor 背景颜色 ControlToValidate

    2022年7月12日
    25
  • arpspoof怎么安装_添加静态arp的命令

    arpspoof怎么安装_添加静态arp的命令安装参考https安装测试安装是否成功arpspoofVersion2.4Usage。

    2022年10月6日
    6
  • 什么是数字证书?它有什么作用?

    什么是数字证书?它有什么作用?证书是验证身份的标志 有数字证书相当于有了一个认证标志 很多网站都有数字认证 像淘宝 现金交易时候就会有一个数字证书的验证 1 数字证书基本功能数字证书 是由证书认证机构签名的包含公开密钥拥有者信息 公开密钥 签发者信息 有效期以及一些扩展信息的数字文件 从证书的用途来看 数字证书可分为签名证书和加密证书 签名证书主要用于对用户信息进行签名 以保证信息完整性和行为的不可

    2026年3月16日
    2
  • MPU6050-DMP方式角度读取

    MPU6050-DMP方式角度读取让自己别忘了大学里学的东西 那么就把它记录下下来 效率会比忘记然后重新再去找资料再重头学高的多一开始自己死命的去网上找现成的代码 但是发现大多都是打着 dmp 的幌子 给的是得出原始数据的代码 或者确实是 dmp 的代码 但是太复杂 自己看不懂 所以果断放弃 直接去网上找 dmp 移植的教程 结果文字教材也是差不多的效果 不过忽然在百度上发现了一个视频教材 与非网 上的 小马哥 STM32 课程系列直播

    2026年3月19日
    1
  • 软件测试工作流程概括与总结[通俗易懂]

    软件测试工作流程概括与总结[通俗易懂]最近在为面试新工作做准备,所以想想整理一下软件测试的基本工作流程,大致梳理一遍,这样也便于自己在面试过程中可以沉着的面对面试管的测试工作如何进行的问题。首先,作为测试人员需要学习并了解业务,分析需求点为什么测试人员要参加需求分析?也就是进行测试需求分析的目的是什么?第一、把用户需求转化为功能需求:1)对测试范围进度量2)对处理分支进行度量3)对需求业务的场景进行度量…

    2022年6月7日
    38

发表回复

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

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