java中变量初始化

    技术2022-05-20  51

     

     

    相关概念:

     

    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

     

     

    代码分析:

    class A{ int var1=1; int var2; public static void main(String[] args){ int var3=3; int var4; int var5=5; /* static int var6; 错误提醒: Illegal modifier for parameter var6; only final is permitted */ A a=new A(); System.out.println(a.var1);//结果为1 System.out.println(a.var2);//结果为0 System.out.println(var3);//结果为3 //System.out.println(var4);错误, 方法变量需要手动初始化 } }  

     

     

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

     


    最新回复(0)