当前位置:首页 » 编程软件 » idea和javap反编译

idea和javap反编译

发布时间: 2025-01-02 05:43:51

A. Intellij IDEA 怎么向Eclipse一样在编译jar文件的时候修改jdk版本

可以试试
在jar包中,用winrar解压一个类文件,然后在命令行下面输入
javap -verbose classname
会输出一些信息,大致如下:
Compiled from "HtmlCrawer.java"
public class org.eagleeye.html.HtmlCrawer extends java.lang.Object
SourceFile: "HtmlCrawer.java"
minor version: 0
major version: 50
Constant pool:
const #1 = class #2; // org/eagleeye/html/HtmlCrawer
const #2 = Asciz org/eagleeye/html/HtmlCrawer;
const #3 = class #4; // java/lang/Object
const #4 = Asciz java/lang/Object;
const #5 = Asciz client;

B. 字符拼接你选择string.format()还是“+”来进行拼接

各位小伙伴在字符串拼接时应该都见过下面这种提示:


内容翻译:报告 StringBuffer、StringBuilder 或 StringJoiner 的任何用法,这些用法可以用单个 java.lang.String 串联来替换。使用字符串串联可以使代码更短、更简单。只有当得到的串联至少与原始代码一样高效或更高效时,此检查才会报告。


大家普遍认知中,字符串拼接要使用 StringBuilder,那为什么 idea 会建议你是用 “+” 呢,那到底 StringBuilder 和 “+” 有什么具体区别呢,我们一起来探究一下。



在普通的几个字符串拼接成一个字符串时,使用 “+” 拼接字符串,实际上,从 JDK5 开始,Java 编译器就做了优化,使用 “+” 拼接字符串,编译器编译后实际就自动优化为使用 StringBuilder。新建测试类 StringTest,分别创建使用 “+” 拼接字符串和使用 StringBuilder 拼接字符串的方法;并新增 Junit 测试用例,分别调用拼接字符串 100000 次,打印耗时。执行 Junit 用例,看耗时统计输出,差异虽小,考虑执行了 100000 次,每次耗时差异更小,程序执行有各种因素影响执行效率,基本一致。从 class 文件所在目录,执行 javap -c StringTest.class,对 class 文件进行反编译,查看编译后的代码差异。从图上可以看出两种拼接方法反编译后完全一样,执行效率自然也是一样的。既然执行效率一样,从代码简洁利于阅读考虑,推荐使用 “+” 拼接字符串。



而在循环拼接一个字符串时,虽然 “+” 拼接字符串编译后也会变成 StringBuilder,但是每次循环处理都会 new 一个 StringBuilder 对象,耗时会大大增加。直接使用 StringBuilder,new 一次就可以了,效率相对高。新增 2 个 Junit 测试用例,循环拼接 10000 次拼接一个字符串,执行 Junit 用例,看耗时统计输出,差异明显。



总结来说:



  • 单纯字符串拼接使用 “+”,更快更简洁。

  • 循环拼接时使用 “+” 拼接字符串效率较低,推荐使用 StringBuilder。



作者:京东零售 姜波 来源:京东云开发者社区 转载请注明来源

热点内容
手机ea服务器连不上怎么办 发布:2025-05-15 01:35:03 浏览:450
数据库数据插入语句 发布:2025-05-15 01:30:01 浏览:871
js是无需编译直接运行吗 发布:2025-05-15 01:28:30 浏览:476
android文件夹重命名 发布:2025-05-15 01:13:50 浏览:481
cns脚本 发布:2025-05-15 01:13:38 浏览:722
数据结构与算法笔试题 发布:2025-05-15 01:04:20 浏览:417
搜狗输入法如何直接编辑配置文件 发布:2025-05-15 00:51:47 浏览:668
电箱都有哪些配置 发布:2025-05-15 00:30:21 浏览:74
安卓qq邀请码在哪里寻找 发布:2025-05-15 00:02:04 浏览:35
三菱fx编程口 发布:2025-05-15 00:01:23 浏览:810