在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null.
当然如果你定义的是局部变量就必须初始化了,否则编译会报错
这正是java的特点,极大的提高了代码安全性
在类中定义的成员变量如果你没有初始化java会自动帮你初始化,如果是数字会自动初始化成0,字符会初始化成'o',对象引用会初始化成null.当然如果你定义的是局部变量就必须初始化了,否则编译会报错这正是java的特点,极大的提高了代码安全性
对于
JAVA
中
变量
的
初始化
是一个很基础的问题,其
中
的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。以下是对
java
变量
初始化
的时机的分析。
【
java
变量
执行
初始化
的步骤】
java
是一门强类型语言,因此
java
语言规定每个
变量
必须先声明,然后才能使用,声明
变量
时必须指定该
变量
的数据类型。首先看下面这条语句的执行过程:
int a = 5;
实际上面这条语句会被拆分成两个过程执行:
(1)int a ;//创建
java
对象时根据该语句为
变量
分配内存空间;
1 .类里定义的数据成员称为属性,属性可不赋初值,若不赋初值则
JAVA
会按上表为其添加默认值;方法里定义的数据成员称为
变量
,
变量
在参与运算之前必须赋初值。有了这个模板,就可以用它来创建对象:Vehicle veh1 = new Vehicle();
通常把这条语句的动作称之为创建一个对象,它包含了四个动作。
1)右边的“new Vehicle”,是以Vehicle类为模板,在堆空间里创建一个Ve
在
java
中
有这么一条规则,声明在方法
中
的
变量
在使用时必须要
初始化
(注意这里是使用时,如果不使用的话,你也可以不赋值,但是一般
变量
声明了之后都是要使用的,所以你最好
初始化
),否则不能通过编译。
定义的时候不赋值是不会报错是, 但是在使用的时候会报错。
In a word,
变量
在声明时会有一个默认值,所以可以不必赋值。但是如果使用,就必须赋值,所以最好一般都赋值。
程序里经常需要定义
变量
,但是是否需要
初始化
一直比较模糊,下面总结3种情况。
方法里面的形参
变量
:
Java
类方法,属于按值传递机制,调用方法的时候,完成参数的传递,相当形参被
初始化
。
局部
变量
与成员
变量
不同,局部
变量
必须显示
初始化
,才能够使用。
成员
变量
成员
变量
无需
初始化
,系统在创建实例的过程
中
默认
初始化
。
可能的原因如下,当我们新建一个对象时,
Java
会在Heap
中
申请一块内存区域用以存放类的数据。而成员
变量
就是类的数据,也是放在这块内存区域
中
的。只需要JVM在申请内存的时候顺便把整块区域都置为零即可完成
初始化
,方便快捷。
而对于方法的局部
变量
,是在线程的Stack
中
,当然Stack他也可以帮我们
初始化
,不过有一个问题。对于有些局部
变量
,在方法的一开始是没有的,有些在循环
中
的局部
变量
是要反复的声明多次的.
成员
变量
有默认初始值,而方法内的局部
变量
却没有初始值。这个问题涉及到JVM类加载和字节码执行两个阶段,这两个阶段是依次执行的。
JVM类加载是JVM利用类加载器将class文件加载到JVM的过程,涉及“加载”、“验证”、“”准备“、“”解析“和”
初始化
“。
一、类的成员
变量
初始化
---在JVM类加载阶段完成
类的成员
变量
又分为静态成员
变量
和非静态成员
变量
。
静态成员
变量
静态成员
变量
会被
初始化
两次,第一次在“准备”阶段,先进行一次
初始化
,系统附上默认值;第二次在“
初始化
”阶段,.