【JVM】IDEA中轻松进行反编译查看并实例展示
IDEA中轻松进行反编译查看1、运行你要反编译的java程序2、找到`target`相同目录下的同名class文件3、实例3.1、反编译技术对自动拆装箱的陷阱的探讨源程序如图:反编译后:问题:结论:1、运行你要反编译的java程序2、找到target相同目录下的同名class文件注意:若没找到就rebuilt下程序3、实例3.1、反编译技术对自动拆装箱的陷阱的探讨源程序如图:package com
·
IDEA中轻松进行反编译查看
1、运行你要反编译的java程序
2、找到target
相同目录下的同名class文件
注意:若没找到就rebuilt
下程序
3、实例
3.1、反编译技术对自动拆装箱的陷阱的探讨
源程序如图:
package com.chan.test;
/**
* 截取自JVM虚拟机 377 面的 自动拆装箱的陷阱
* @author lone_wolf
* @version 1.0
* @date 2021/12/5 16:53
*/
public class AutoPackageTest {
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
/*true*/
System.out.println(c == d);
/*false*/
System.out.println(e == f);
/*true*/
System.out.println(c == (a + b));
/*true*/
System.out.println(c.equals(a + b));
/*true*/
System.out.println(g == (a + b));
/*false*/
System.out.println(g.equals(a + b));
}
}
反编译后:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.chan.test;
public class AutoPackageTest {
public AutoPackageTest() {
}
public static void main(String[] args) {
Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
System.out.println(c == d);
System.out.println(e == f);
System.out.println(c == a + b);
System.out.println(c.equals(a + b));
System.out.println(g == (long)(a + b));
System.out.println(g.equals(a + b));
}
}
问题:
结论:
这里也是深入JVM虚拟机书的377面的原话:
- 包装类的"=="运算在不遇到算术运算符的情况下不会自动拆装箱
- 它们equals()方法并不处理数据转型
更多推荐
已为社区贡献1条内容
所有评论(0)