我有两个问题,不幸的是我找不到答案。
如果我们声明1000个布尔变量等于true
,它们是否都对true
字面值具有相同的引用?
Java是按值传递的,所以请考虑代码
public class Test {
public static boolean global;
public static void main(String[] args) {
foo(false);
System.out.println(global);
}
public static void foo(boolean bar) {
global = bar;
}
}
在foo()
方法中,将复制布尔变量的原始值,这意味着global
将为文字提供另一个引用。或者Java会为此执行某种池查找,global
还会引用与参数相同的内存位置吗?
答案 0 :(得分:2)
是的,有一个游泳池。但是,只有当您使用Boolean
对象而不是boolean
原始值并且使用方法valueof
或Boolean.TRUE
/ Boolean.FALSE
构造函数的内容创建它时。查看Boolean javadoc以获取参考。
另外,请查看constructor javadoc。它说:
使用此构造函数很少是合适的。除非需要新实例,否则静态工厂valueOf(boolean)通常是更好的选择。它可能会产生明显更好的空间和时间性能。