public class BuildStuff {
public static void main(String[] args) {
Boolean test = new Boolean(true);
Integer x = 343;
Integer y = new BuildStuff().go(test, x);
System.out.println(y);
}
int go(Boolean b, int i) {
if(b)
return (i/7);
return (i/49);
}
}
这是来自SCJP,我知道答案是“49”,但我有疑问。当我们创建一个对象并在该对象中传递一个值时。让我们说:Dog d = new Dog("tommy");
在这个陈述中d是对象的引用Dog和Dog将“name”实例变量设置为“tommy”。但这并不意味着d = tommy
。
但是,在布尔值的情况下,当我们在布尔对象中传递true时。它引用了真实的参考。为什么是布尔值?还有其他课吗?
答案 0 :(得分:3)
传入的Boolean
b
可以转换为带有拆箱转化的原始boolean
,从而为true
语句生成表达式if
所有原始类型都有相应的内置包装类,Java将根据需要进行unbox / box。
(如果相应的包装类实例为NullPointerException
,则取消装箱转换将失败并显示null
:
Boolean test = null;
// NPE
boolean b = test;
)
答案 1 :(得分:1)
从javadoc:布尔类在对象中包装基本类型boolean的值。 Boolean类型的对象包含一个类型为boolean的字段。
如果你有
Boolean a = new Boolean(true);
Boolean b = new Boolean(true);
a
和b
是不同的对象,但a.booleanValue()
和b.booleanValue()
返回相同的原语。这可以通过测试a == b
与a.equals(b)
进行验证。
还有其他这样的课程,即。整数,双数等。正如其他人已经提到的那样,你应该研究自动装箱和拆箱。