如果有空值,则空值仅适用于对象,因此如果未显式声明原语,则原语具有隐式初始值。看,这是我不明白的。为什么Java在构建器中调用phone的构造函数时会表现出行为,而在我尝试在Main中用null参数实例化phone类时却没有表现出来?啊,我得到了@Tayl

如果有空值,则空值仅适用于对象,因此如果未显式声明原语,则原语具有隐式初始值。看,这是我不明白的。为什么Java在构建器中调用phone的构造函数时会表现出行为,而在我尝试在Main中用null参数实例化phone类时却没有表现出来?啊,我得到了@Tayl,java,design-patterns,null,int,builder,Java,Design Patterns,Null,Int,Builder,如果有空值,则空值仅适用于对象,因此如果未显式声明原语,则原语具有隐式初始值。看,这是我不明白的。为什么Java在构建器中调用phone的构造函数时会表现出行为,而在我尝试在Main中用null参数实例化phone类时却没有表现出来?啊,我得到了@Taylor。。thanx因为我在构造函数Null中编写自己的代码,所以它不会编译,但实际上,在没有初始化Int变量的情况下,它的默认值仍然是0。这很有意义,突然,我被搞糊涂了,因为在调试时,在调用构造函数之前,我看到了错误的变量。处理器是一个字符串,


如果有空值,则空值仅适用于对象,因此如果未显式声明原语,则原语具有隐式初始值。看,这是我不明白的。为什么Java在构建器中调用phone的构造函数时会表现出行为,而在我尝试在Main中用null参数实例化phone类时却没有表现出来?啊,我得到了@Taylor。。thanx因为我在构造函数Null中编写自己的代码,所以它不会编译,但实际上,在没有初始化Int变量的情况下,它的默认值仍然是0。这很有意义,突然,我被搞糊涂了,因为在调试时,在调用构造函数之前,我看到了错误的变量。处理器是一个字符串,所以它的默认值是一个字符串。提醒一下,实例变量原语类型的默认值永远不能为null,只有实例变量对象的默认值可以为null。突然之间,我被搞糊涂了,因为在调试时,在调用构造函数之前,我看到了错误的变量。处理器是一个字符串,所以它的默认值是一个字符串。请注意,实例变量原语类型默认值不能为null,只有实例变量对象默认值可以为null谢谢。你是对的,我做了一个错误的假设。我开始这样想是因为我的出发点不对。我在看一个空字符串。。我搞混了。。。。新手犯了错误不用担心,我在生活中犯了更严重的错误;)非常感谢。你是对的,我做了一个错误的假设。我开始这样想是因为我的出发点不对。我在看一个空字符串。。我搞混了。。。。新手犯了错误不用担心,我在生活中犯了更严重的错误;)
public class Phone {    

    private String os;  
    private int ram; 
    private String processor;   
    private double screenSize;   
    private int battery;    

    public Phone(String os, int ram, String processor, double screenSize, int battery) {
        super();
        this.os = os;
        this.ram = ram;
        this.processor = processor;
        this.screenSize = screenSize;
        this.battery = battery;
    }

}
    public class PhoneBuilder {

        private String os; 
        private int ram; 
        private String processor;
        private double screenSize;
        private int battery; 

        public PhoneBuilder setOs(String os) {
            this.os = os;
            return this;
        }

        public PhoneBuilder setRam(int ram) {
            this.ram = ram;
            return this;
        //...

        public Phone getPhone() {
            return new Phone(os, ram, processor, screenSize, battery);
        }
    }
private int ram = 1;
public class NoNullForPrimitives{
    private static int myInt;

    public static void main(String[] args){
        System.out.println(myInt); //prints 0
    }
}