我有以下代码
public boolean matches(String word) {
Pattern p = Pattern.compile("\\w$");
Matcher m = p.matcher(word);
return m.find();
}我想知道java编译器是用对象替换Pattern.compile("\w$")短语,还是在每次调用函数时创建对象。
我怎样才能知道java对我的代码做了什么?
有没有什么eclipse插件可以显示这一点?
发布于 2013-05-09 20:51:45
根据源代码,它在每次调用函数时创建对象。
public static Pattern compile(String regex) {
return new Pattern(regex, 0);
}发布于 2013-05-09 21:11:54
Java编译器将简单地针对java.util.regex.Pattern.compile发出一条invokestatic字节码指令。实际上,此方法将返回一个Pattern对象,然后您的代码就可以使用该对象。
因此,您真正想要了解的内容可以在Pattern.compile的源代码中找到。如果该方法只返回一个新的Pattern对象,则以后的调用将不会重用。如果您看到对象正在被缓存,那么就会发生一些重用。
因此,请看一下您感兴趣的Java版本的源代码。
发布于 2013-05-09 20:49:54
compile方法创建新的对象Pattern,该对象稍后将被重用。
来自源代码:
public static Pattern compile(String regex, int flags) {
return new Pattern(regex, flags);
}https://stackoverflow.com/questions/16462092
复制相似问题