这里说说Java变量的的初始化。
这里先说说初始化操作:
在初始化变量时,应该把变量名写在左边,随后是赋值操作符“=”,然后再在右边加上一个恰当的Java表达式或值。
变量的初始化有两种方法:一种是在声明变量的时候就同时给它赋一个值:
int i = 4;
还有一种情况是,先声明变量,然后再在适当的时机给它赋值:
int k;
… …
k = 10;
前面说过了,Java中声明变量后,在使用变量之前,必须为变量进行初始化,即赋值操作。不能使用一个没有初始化过的、没有值的变量。
但我们一般只强调所有的局部变量在使用之前,都必须初始化(也就是说,必须要有值)。这里需要解释一下,成员变量在使用之前也是需要进行初始化的,不例外,但是Java对成员变量特殊的处理化方式,使得我们只需要关注局部变量的初始化工作,防止发生编译错误。
好了,我们现在就来看看,Java如何进行成员变量的初始化操作,导致Java局部变量与成员变量的初始化要求产生了如此不同。
其实也很好解释,就是如果你不给成员变量进行初始化操作的话,Java编译器就默默的为你做了这份工作了。。。。。。就和默认构造器是一个道理的。但是如果有必要的话,最好还是自己亲自动手为特定的成员变量进行初始化操作。毕竟它没有那么智能,只是机械进行默认的初始化操作——成员变量的默认初始化。
现在看看成员变量默认初始化的值:
类型 默认值 类型 默认值
byte 0 、short 0 、 int 0 、long 0L 、 float 0.0f 、double 0.0d 、char ‘\u0000’ 、boolean false 、object reference null
看下面这个例子:
public class GlobalVar {
int j;
public void b() {
System.out.println(j + 10);
}
public static void main(String[] agrs) {
GlobalVar t = new GlobalVar();
t.b();
}
}
在这个程序中,定义了一个成员的int类型的变量j,它没有被显式的初始化。在方法b()中,直接使用这个变量和一个整型数据相加,并将结果打印到控制台。
编译并执行这个程序将在控制台打印出一个数字10。这是因为虽然没有显式的初始化变量j,但是因为它是成员变量,系统自动给它赋了一个初值0,这样,打印出来的的结果是0+10等于10。
虽然成员变量可以不用显式初始化即可使用,但是,系统给不同数据类型的成员变量初始化时,它的初始化的值是不同的,比如,int类型的初始化值是0,boolean类型的初始化值是false。
下面列出了各种数据类型成员变量的默认初值:
int:0
byte: 0
double: 0.0
float:0.0
char:
long:0
short:0
boolean:false
Object:null
最后在强调一次,Java只针对成员变量进行默认初始化操作。
分享到:
相关推荐
2. **初始化列表初始化**:接着执行构造函数的初始化列表,其中的初始化顺序与成员变量声明的顺序一致,而不受初始化列表中实际顺序的影响。例如`A(int a_):a(a_){};` 3. **构造函数体内的初始化**:最后执行构造...
在使用 new 操作符创建一个类的实例对象的时候,开始分配空间并将成员变量初始化为默认的数值。在这里并不是指将变量初始化为在变量定义处的初始值,对于基本类型变量,默认值为空值是 0 或 false,对于引用类型变量...
在编程语言中,特别是在C++和Qt框架下,变量初始化的顺序确实是一个重要的概念,它与成员变量在类中的声明顺序密切相关。这个问题涉及到C++的构造函数和成员初始化列表。 在C++中,当创建一个类的对象时,构造函数...
1. **成员变量初始化**:它能确保类的成员变量在构造函数体执行之前就被正确初始化,这对于包含复杂类型的成员变量尤其重要。 2. **提高性能**:直接初始化可以避免不必要的临时对象创建和复制操作,从而提高程序的...
1. **类内的成员变量不能在定义时初始化**。这意味着你不能像普通变量那样在类的定义内部为它们赋值。 2. **一般的数据成员**可以在构造函数中初始化,通过构造函数的初始化列表。例如,`CSomeClass::CSomeClass() :...
Java静态和非静态成员变量初始化过程解析 Java静态和非静态成员变量初始化过程解析是Java语言中一个非常重要的概念。了解Java静态和非静态成员变量的初始化过程对大家的学习或者工作具有一定的参考学习价值。 首先...
详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序
因此,static 成员变量不能在定义对象时对变量初始化,用构造函数来初始化。其正确的初始化方式是: ```cpp class Foo { private: static int i; }; int Foo::i = 100; // 在类体外初始化 ``` 这表明: * 初始化...
C++语言中的初始化成员列表是一种特殊的语法结构,它允许在构造函数中对类的成员变量进行初始化。这种机制可以解决一些特殊的问题,如成员变量是类类型且没有默认构造函数的类,或者const成员或引用类型的成员。 ...
- 初始化:类变量在类加载时初始化,成员变量在对象创建时初始化,局部变量必须在使用前显式初始化。 了解这些差异有助于优化代码,例如,如果希望一个变量对所有对象都可见,应使用类变量;如果变量只与特定对象...
成员初始化列表提供了更灵活且高效的成员变量初始化方式,特别是在处理对象成员、const 成员以及引用成员时。通过使用成员初始化列表,可以避免不必要的复制操作,提高程序效率,并确保程序逻辑的正确性。对于初学者...
2. **父类静态成员变量初始化**:接下来,执行 `basename = "父类静态变量"` 这一行,将 `basename` 的值设置为 `"父类静态变量"`。 3. **父类静态初始化块**:然后是第一个静态初始化块,输出 `"我输出的是父类...
1. **默认初始化**: 如果没有明确初始化,成员变量会有一个默认值。例如,对于整型,默认值是0;对于布尔型,是false;对于引用类型,是null。 2. **访问控制修饰符**: public成员变量可以在任何地方被访问;...
2. **对象的生成及成员变量初始化**: 当创建一个新对象时,成员变量的初始化过程分为两个阶段: - 首先,执行实例初始化块(如果存在)。实例初始化块中的代码会在每次创建新对象时运行,且在构造函数调用之前。 ...
4. **默认值初始化**:如果没有明确指定初始值,那么Java会给成员变量一个默认值,例如`int`类型的成员变量默认值为0,`String`类型的成员变量默认值为`null`。 #### 示例分析 假设我们有一个简单的类定义如下: ...
// 实例成员变量初始化 public static TestB b = new TestB(); public static void main(String[] args) { new TestOrder(); } } class TestA { public TestA() { System.out.println("Test--A"); } } ...
3. **变量初始化** 声明变量后,通常需要为其分配初始值。这可以通过声明和初始化一起完成: ```java int age = 25; String name = "张三"; ``` 如果未初始化,变量将具有默认值,对于基本类型,数值类型默认...
需要注意的是,在 Java 中,数组变量必须在使用前进行初始化,否则将会抛出 NullPointerException。 二维数组的初始化 在 Java 中,二维数组可以通过多种方式进行初始化。 1. 声明数组变量:`int[][] a;`,这只...