传递布尔对象中的值

时间:2014-02-12 18:57:18

标签: java

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时。它引用了真实的参考。为什么是布尔值?还有其他课吗?

2 个答案:

答案 0 :(得分:3)

传入的Boolean b可以转换为带有拆箱转化的原始boolean,从而为true语句生成表达式if

所有原始类型都有相应的内置包装类,Java将根据需要进行unbox / box。

  • Boolean< =>布尔
  • 字节< =>字节
  • 字符< =>炭
  • 短< =>短
  • 整数< => INT
  • 长< =>长
  • Float< =>浮
  • Double< =>双

(如果相应的包装类实例为NullPointerException,则取消装箱转换将失败并显示null

Boolean test = null;
// NPE
boolean b = test;

这是Java's tutorial on boxing and unboxing

答案 1 :(得分:1)

javadoc布尔类在对象中包装基本类型boolean的值。 Boolean类型的对象包含一个类型为boolean的字段。

如果你有

Boolean a = new Boolean(true);
Boolean b = new Boolean(true);

ab是不同的对象,但a.booleanValue()b.booleanValue()返回相同的原语。这可以通过测试a == ba.equals(b)进行验证。

还有其他这样的课程,即。整数,双数等。正如其他人已经提到的那样,你应该研究自动装箱和拆箱。