java中变量初始化

 

 

相关概念:

 

1、 类变量(类静态成员) 类被加载时产生;它的生存期是类的生存期;自动初始化(类被加载)

成员变量(类成员):  在使用new创建该类实例时产生;它的生存期与该类实例对象的生存期相同;

 

2、 方法变量是指在方法中声明的变量,方法变量的修饰词要么没有,有的话永远只可能有一个,那就是final,其它任何修饰词都是不允许的。

 

 3、 方法变量(类的方法中的变量),不会被自动初始化。  该方法被调用时产生; 在该方法退出后结束; 必须显式初始化。比如main方法中的变量index,定义如int index;   它不会被自动初始化。

 


一、 类成员如果没有被定义会自动获取一个初始值。首先运行声明的类成员,如果有定义,则取定义值,随后调用构造函数,如果构造函数中对已定义变量重赋值,则取重赋的值。

 

 

二、  当用new定义一些变量,会自动初始化,如 int [] d = new int[100];  它自动初始化为0

 各数据类型的数组自动初始值如下:

 byte  0

 short  0

 int  0

 long  0l

 float  0.0f

 double  0.0d

 char  /u0000    即数值0,而非字符0,因为它是0~~65535的序列。字符0位置在48上,即/u0030

 boolean  false

 reference null String

 

三、  Stack类型自动初始化为空。空显示为[],而不是null

 

举例:

class Test

{

 static int myArg ;

 public static void main(String[] args)

 {

  int myArg; //如果此行没有写,即可通过编译了。

  System.out.pringln(myArg);

 }

}

 

通不过编译。

 

四、 数组定义

 可以如下定义

 int iArray[] = null;

 

wu静态块和类成员定义的优先级

 

//仍模糊,静态块,或代码块什么时候调用,是在类生成初么?那应该要比成员变量要早,因此,首先int i = 10;其次 i = 20

 

如下:

public class Test

{

 int i = 20;

 

 static

 {

  int i = 10;

 }

 

 public static void main(String [] args)

 {

  Test a = new Test();

  System.out.println(a.i);

 }

}

 

运行结果:20  其中static中的i属于代码块。

 

关于局部变量和类成员之间的关系:  如果局部变量和类成员同名,那么该方法中认局部变量。

 

8  Boolean是引用类型和String类似吧,初始值为null;而boolean是基本类型,初始值为false

 

 

代码分析:

 

 

 

略有修改, 原文地址:http://blog.youkuaiyun.com/shangpusp/archive/2009/05/08/4162260.aspx

 

### Java变量初始化方法Java 编程中,变量初始化是一个非常基础且重要的概念。以下是关于不同类型的变量及其初始化方法的具体说明。 #### 成员变量初始化 成员变量可以在声明时直接初始化,也可以通过构造函数或实例代码块来完成初始化过程[^1]。 例如: ```java public class Example { private int a = 10; // 声明时直接初始化 } ``` 如果未显式初始化,则编译器会自动赋予默认(如 `int` 类型为 `0`,`boolean` 类型为 `false` 等)。然而,在某些情况下,开发者可能希望手动控制初始以满足特定需求。 #### 静态变量初始化 对于静态变量而言,其生命周期贯穿整个程序运行期间,并且只会在类加载阶段被一次性初始化一次[^2]。可以通过以下两种方式进行设置: - **声明处初始化**:类似于普通成员变量的方式。 - **静态代码块初始化**:当逻辑较为复杂或者依赖其他资源时推荐使用这种方式。 示例代码如下所示: ```java public class StaticExample { private static String name; static { name = "Static Block Initialization"; // 使用静态代码块初始化 } } ``` 需要注意的是,`static final` 字段必须在第一次使用之前就完全确定下来;因此要么是在定义的时候给予固定数,要么借助专门为此设计好的静态初始化区块来进行操作[^3]。 #### 构造器与实例初始化块 除了上述提到过的手段之外,还可以利用构造器以及实例初始化块来做进一步定制化处理。前者主要针对每次创建新对象都需要重新计算的情况适用;后者则适合那些不需要参数传入却又要早于常规构造流程执行的任务场景。 例子展示如下: ```java public class ConstructorAndBlockExample { private final double pi; { // 实例初始化块 System.out.println("Instance initialization block executed."); pi = Math.PI; } public ConstructorAndBlockExample() { System.out.println("Constructor called after instance init block."); } } ``` 以上就是有关于Java里头各种类型变数该如何恰当设定初的一些基本指导原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值