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没有局部变量是自动初始化的