首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看Java做了哪些优化

问如何查看Java做了哪些优化
EN

Stack Overflow用户
提问于 2013-05-09 20:44:50
回答 5查看 80关注 0票数 0

我有以下代码

代码语言:javascript
复制
 public boolean matches(String word) {

     Pattern p = Pattern.compile("\\w$");
     Matcher m = p.matcher(word);
     return m.find();

 }

我想知道java编译器是用对象替换Pattern.compile("\w$")短语,还是在每次调用函数时创建对象。

我怎样才能知道java对我的代码做了什么?

有没有什么eclipse插件可以显示这一点?

EN

回答 5

Stack Overflow用户

发布于 2013-05-09 20:51:45

根据源代码,它在每次调用函数时创建对象。

代码语言:javascript
复制
public static Pattern compile(String regex) {
    return new Pattern(regex, 0);
}
票数 1
EN

Stack Overflow用户

发布于 2013-05-09 21:11:54

Java编译器将简单地针对java.util.regex.Pattern.compile发出一条invokestatic字节码指令。实际上,此方法将返回一个Pattern对象,然后您的代码就可以使用该对象。

因此,您真正想要了解的内容可以在Pattern.compile的源代码中找到。如果该方法只返回一个新的Pattern对象,则以后的调用将不会重用。如果您看到对象正在被缓存,那么就会发生一些重用。

因此,请看一下您感兴趣的Java版本的源代码。

票数 1
EN

Stack Overflow用户

发布于 2013-05-09 20:49:54

compile方法创建新的对象Pattern,该对象稍后将被重用。

来自源代码:

代码语言:javascript
复制
public static Pattern compile(String regex, int flags) {
    return new Pattern(regex, flags);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16462092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档