所以我觉得我错过了什么。我知道
这是一些简单的代码:
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' 0' 0' 0被初始化为' f'尽管我没有在构造函数中使用它
关于b = 5,我理解这段代码会导致什么,但是,我不认为我理解这里的初始化是什么/谁,是新运算符还是其他什么?感谢。
编辑:因为到目前为止的答案并没有解决我的问题
我知道默认值。我认为这是分配它们的默认构造函数,不是吗?如果没有,什么分配默认值?
答案 0 :(得分:0)
Java与大多数编程语言一样,具有未初始化变量的默认值。每个数字类型的变量都初始化为 0 相关值。
默认情况下,布尔值为false
。
字符串和所有对象都有null
作为默认值。
检查文档以获取更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 1 :(得分:0)
int是原始数据类型。根据定义,基元不能为空,因为它们不是对象,如果未初始化则具有默认值。见这里:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
如果您希望能够拥有一个未初始化的变量,可以使用与java java.lang.Integer等效的对象
答案 2 :(得分:0)
声明但未初始化的实例变量将被赋予默认值。
参考采用默认值 null 。
基元采用默认值零
关于对原始int变量b的查询,不需要new运算符,在实例化引用时使用new运算符。当实例化一个引用时,创建一个对象并在JVM上为该对象分配内存。
字符串是引用变量,但可以使用new关键字实例化,例如:
String example = new String("abc");
System.out.println(example); // prints abc.
通常你会写:
String example = "abc";
在后者中,文字放在'字符串池'中...... 您可以在此处阅读有关字符串池的更多信息:http://examples.javacodegeeks.com/core-java/lang/string/java-string-pool-example/
答案 3 :(得分:0)
如果没有提供构造函数,java会为你创建一个。
正确。
如果定义了构造函数,则不使用java的默认构造函数。
它不是生成的。
构造函数用于初始化变量
正确。
c = 1; // Constructor initiatives C, but not F
不真实的。 您的代码初始化c
。生成的构造函数初始化两者。
我没有在构造函数
中初始化f
不,但是Java确实。
Java为构造函数生成以下代码:
false,
零或null
。关于b = 5,我理解这段代码会导致什么,但是,我不认为我理解这里的初始化是什么/谁,是新操作符还是别的什么?
见上文。
我知道默认值。我认为这是分配它们的默认构造函数,不是吗?
没有
如果没有,是什么指定默认值?
构造函数。 任何构造函数。