0

当我们提供了自己的默认构造函数并且没有在其中初始化 id 时,实例变量 id 是如何被初始化为 0 的?输出为 id:0 status:B id 0 怎么样?

`class Demo{
    private int id;
    private char status; 

    public Demo(){ 
    status = 'B';
    }

    public void display(){
    System.out.println("Id:="+id+" Status:"+status);
    }

    public static void main(String args[]){
    Demo ob = new Demo();
    ob.display();
    }
}`
4

10 回答 10

2

以下是默认初始化

下表总结了上述数据类型的默认值。

Data 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
于 2013-08-13T07:51:02.110 回答
1

在 Java 中,每个未初始化的变量都会自动初始化为它声明的类型的默认值,即:

  • 浮动:0.0f
  • 整数/短/字节:0
  • 长:0L
  • 对象:空
  • 布尔值:假
于 2013-08-13T07:49:08.127 回答
1

原始类型默认为某些值。对于 int,它是 0。

于 2013-08-13T07:49:33.157 回答
1

TL;DR - 实例变量具有默认值。见[1]。


您正确地声明该值为零,或者更确切地说是 0。这是因为在 Java 中,实例变量是驻留在类中而不是方法中的变量,不必手动初始化。

在 Java 中,当声明实例变量时,如果没有给出值,编译器将应用默认值以允许程序运行。虽然这可以在您可能希望稍后更改实例变量的值的情况下使用,但通常被认为是不好的做法。

请参阅此处,Java 文档:

默认值

声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或空,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格。

有关按数据类型的默认值的信息,请参阅 [1]。

该文档包含有关其他变量的更多信息,即本地:

局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果您无法在声明它的地方初始化局部变量,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。

局部变量和实例变量(在 JVM 处理它们的方式上)之间存在差异的原因在于,实例变量被加载到称为“堆”[2] 的内存区域中,而局部变量是加载到称为“堆栈”[2]的单独内存区域;虽然,现在,这有例外 [3]。堆存储对象和对对象的引用,因此,实例变量与其对象一起存储。最终,做出了一个相当随意的选择,强制初始化本地变量,而不是实例变量。

[1] https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

[2] https://www.guru99.com/java-stack-heap.html

[3]为什么实例变量在java中有默认值?

于 2021-08-13T21:40:07.237 回答
0

实例变量使用默认值初始化,对于整数,它是 0。

于 2013-08-13T07:48:34.077 回答
0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或空,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格。

下表总结了上述数据类型的默认值。

+------------------------+----------------------------+
| Data 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            |
+------------------------+----------------------------+
于 2013-08-13T07:51:53.613 回答
0

“对于int类型,默认值为0,即0”。
您可以在语言规范中查看默认值:http: //docs.oracle.com/javase/specs/jls/se5.0/html/typesValues.html#96595

于 2013-08-13T07:52:09.023 回答
0

id是原始类型,int默认为0.

你在想对象

这实际上是对对象的引用,这些默认为 at null,这意味着它们不指向任何对象。

于 2013-08-13T07:48:48.430 回答
0
  • 因为inttype 的默认值是0.
  • 所有实例变量都分配有默认值
于 2013-08-13T07:49:06.760 回答
0

根据您的代码, id 是一个实例变量,如果未定义实例变量,则它将采用默认值。在您的情况下,因为 id 是 int 所以值为 0

于 2013-08-13T07:56:00.443 回答