Java 自动变量赋值?
新手问题: 我有两门课:Java 自动变量赋值?,java,Java,新手问题: 我有两门课: class A { public static void main(String...args){ B b = new B() System.out.println(B.firstVar); // 0 } } class B { public int firstVar; } 为什么在没有为firstVar分配值的情况下打印0?0值是int类型的默认值 以下是一些其他默认值: 0值是int类型的默认值 以下是一些
class A {
public static void main(String...args){
B b = new B()
System.out.println(B.firstVar); // 0
}
}
class B {
public int firstVar;
}
为什么在没有为firstVar分配值的情况下打印0?0值是int类型的默认值 以下是一些其他默认值:
0值是int类型的默认值 以下是一些其他默认值:
0值是int类型的默认值 以下是一些其他默认值:
0值是int类型的默认值 以下是一些其他默认值:
这就是Java初始化变量的方式。 例如,int用
0
初始化,对象用null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
这就是Java初始化变量的方式。 例如,int用
0
初始化,对象用null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
这就是Java初始化变量的方式。 例如,int用
0
初始化,对象用null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
这就是Java初始化变量的方式。 例如,int用
0
初始化,对象用null
Object obj; // obj is null
int i; // i is 0
double d; //d is 0
当您没有为变量设置任何内容时,它默认为零(在int情况下)当您没有为变量设置任何内容时,它默认为零(在int情况下)当您没有为变量设置任何内容时,它默认为零(在int情况下)当您没有为变量设置任何内容时,默认情况下它被分配为零(在int的情况下)首先,代码中有两个错误 一个是缺少分号:
B b = new B()
第二种是尝试使用类名为的非静态成员
System.out.println(B.firstVar);
应该是
System.out.println(b.firstVar);
回答您的问题:当调用构造函数时,它会将类的成员变量/属性初始化为相应的类型默认值
Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false
键入默认值(用于字段)
字节0
短0
整数0
长0L
浮动0.0f
双0.0d
字符'\u0000'
字符串(或任何对象)null
布尔假
这就是为什么即使没有初始化,它也会打印0
注意:局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。首先,代码中有两个错误 一个是缺少分号:
B b = new B()
第二种是尝试使用类名为的非静态成员
System.out.println(B.firstVar);
应该是
System.out.println(b.firstVar);
回答您的问题:当调用构造函数时,它会将类的成员变量/属性初始化为相应的类型默认值
Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false
键入默认值(用于字段)
字节0
短0
整数0
长0L
浮动0.0f
双0.0d
字符'\u0000'
字符串(或任何对象)null
布尔假
这就是为什么即使没有初始化,它也会打印0
注意:局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。首先,代码中有两个错误 一个是缺少分号:
B b = new B()
第二种是尝试使用类名为的非静态成员
System.out.println(B.firstVar);
应该是
System.out.println(b.firstVar);
回答您的问题:当调用构造函数时,它会将类的成员变量/属性初始化为相应的类型默认值
Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false
键入默认值(用于字段)
字节0
短0
整数0
长0L
浮动0.0f
双0.0d
字符'\u0000'
字符串(或任何对象)null
布尔假
这就是为什么即使没有初始化,它也会打印0
注意:局部变量略有不同;编译器从不为未初始化的局部变量指定默认值。首先,代码中有两个错误 一个是缺少分号:
B b = new B()
第二种是尝试使用类名为的非静态成员
System.out.println(B.firstVar);
应该是
System.out.println(b.firstVar);
回答您的问题:当调用构造函数时,它会将类的成员变量/属性初始化为相应的类型默认值
Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
String (or any object) null
boolean false
键入默认值(用于字段)
字节0
短0
整数0
长0L
浮动0.0f
双0.0d
字符'\u0000'
字符串(或任何对象)null
布尔假
这就是为什么即使没有初始化,它也会打印0
注意:局部变量略有不同;编译器从不将缺省值分配给未初始化的局部变量。< /P>整数的默认值是0-注意,在C++和java中,0是自动初始化整数类型实例变量的。而整数类型的局部变量是在Java中自动初始化的only@mangusta没有局部变量在java中自动初始化参见link@TheMohanAhuja是的,你是对的:)我混淆了“C++对未初始化的局部变量没有编译时错误,而java给出编译错误”整数的默认值是0:C++中的java和java都自动初始化整数类型的实例变量,而整数类型的局部变量在Java中自动初始化。only@mangusta没有局部变量在java中自动初始化参见link@TheMohanAhuja是的,你是对的:)我把它弄糊涂了“C++对未初始化的局部变量不给出编译时错误,而Java给出编译错误“整数的默认值是0:C++中,java中的整数类型变量由0自动初始化,而整数类型的局部变量在java中自动初始化。only@mangusta没有局部变量在java中自动初始化参见link@TheMohanAhuja是的,你是对的:)我把它弄糊涂了“C++对未初始化的局部变量不给出编译时错误,而Java给出编译错误“整数的默认值是0:C++中,java中的整数类型变量由0自动初始化,而整数类型的局部变量在java中自动初始化。only@mangusta没有局部变量是自动初始化的