如果有空值,则空值仅适用于对象,因此如果未显式声明原语,则原语具有隐式初始值。看,这是我不明白的。为什么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
}
}