Java 不了解我的变量是如何初始化的
所以我想我错过了什么。我知道Java 不了解我的变量是如何初始化的,java,class,variables,constructor,initialization,Java,Class,Variables,Constructor,Initialization,所以我想我错过了什么。我知道 如果没有提供构造函数,java会为您创建一个 如果定义了构造函数,则不使用java的默认构造函数 构造函数用于初始化变量 下面是一些简单的代码: class a { int f; // a variable with no value int c; // a variable later initialized by the constructor int b = 5; // this will be second question, a
class a {
int f; // a variable with no value
int c; // a variable later initialized by the constructor
int b = 5; // this will be second question, a less important one
a(){
c = 1; // Constructor initiatives C, but not F
}
public static void main(String[] args){
a var = new a();
System.out.print(var.f); // Please see my comment below
}
}
这是我不明白的。为什么要打印var.f?我没有在构造函数中初始化f,但是,没有编译错误,并且初始化了0值。我不明白“0”是如何初始化为“f”的,尽管我没有在构造函数中使用它
关于b=5,我理解这段代码会导致什么,但是,我不认为我理解这里的初始化是什么/谁,是新的操作符还是其他什么?谢谢
编辑:因为到目前为止的答案并没有解决我的问题
我知道默认值。我以为是默认构造函数分配了它们,不是吗?如果没有,什么会指定默认值 与大多数编程语言一样,Java也有未初始化变量的默认值。每个数值类型的变量都初始化为与0相关的值。 默认情况下,布尔值为
false
。
字符串和所有对象的默认值为null
查看文档了解更多信息:int是一种基本数据类型。根据定义,原语不能为null,因为它们不是对象,如果未初始化,将具有默认值。请看这里:
如果希望能够有一个未初始化的变量,可以使用int java.lang.Integer的对象等价物为已声明但未初始化的实例变量指定默认值 引用的默认值为null 基本体采用默认值零 对于原始int变量b的查询,不需要新运算符,在实例化引用时使用新运算符。当实例化引用时,将创建一个对象,并在JVM上为该对象分配内存 字符串是一个引用变量,但可以使用new关键字进行实例化,例如:
String example = new String("abc");
System.out.println(example); // prints abc.
通常你会写:
String example = "abc";
在后者中,文本被放入“字符串池”。。。
您可以在此处阅读有关字符串池的更多信息:
如果没有提供构造函数,java会为您创建一个
对
c = 1; // Constructor initiatives C, but not F
如果定义了构造函数,则不使用java的默认构造函数
它不是生成的
构造函数用于初始化变量
对
c = 1; // Constructor initiatives C, but not F
不真实。您的代码初始化c
。生成的构造函数初始化这两个函数
我没有在构造函数中初始化f
没有,但Java做到了
Java为构造函数生成以下代码:
false、
zero或null
构造器。任何构造函数 “null”初始化为“f”是什么意思
f
应该初始化为0
。很抱歉,我是说0。这是个打字错误