Java 变量到底要如何初始化

原创 2016年05月31日 06:32:16
本问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。
  • 类的属性,或者叫值域
  • 方法里的局部变量
  • 方法的参数

对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
  1. int类型变量默认初始值为0
  2. float类型变量默认初始值为0.0f
  3. double类型变量默认初始值为0.0
  4. boolean类型变量默认初始值为false
  5. char类型变量默认初始值为0(ASCII码)
  6. long类型变量默认初始值为0
  7. 所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。

对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。

对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译部通过。如果在catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要出事化成什么值好,就用上面的默认值吧!

其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。 
版权声明:本文为芝麻软件工作室原创文章,未经芝麻软件工作室允许不得转载。

java中成员变量和局部变量的初始化

java中成员变量和局部变量的初始化 成员变量的初始化 在java中,成员变量存在于类之内,方法和代码块之外。 class A{ 修饰符  数据类型 成员变量名; 方法(){} }这类变量在创建时如...
  • qq_20051151
  • qq_20051151
  • 2016年07月02日 09:40
  • 4279

java变量的初始化之后的默认值

对于类的成员变量 不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。 2、单精度浮点...
  • abc5382334
  • abc5382334
  • 2014年01月14日 09:35
  • 36063

java中声明变量和初始化变量的相关感想

1、定义基本类型变量时 (1)定义局部基本类型变量 定义局部变量时,在使用该变量之前必须对其进行赋值初始化,否则编译器会报错,建议声明变量和赋值同时进行。 (2)定义类全局基本类型变量 无论是静态...
  • wiwayahu
  • wiwayahu
  • 2016年11月09日 15:32
  • 209

JAVA当中变量什么时候需要初始化?

转自:http://blog.163.com/shuzhen_an/blog/static/119399304200962334211324/ 1. 对于类的成员变量,不管程序有没有显式的进行初...
  • xiaoyufu007
  • xiaoyufu007
  • 2011年08月02日 16:35
  • 10260

Java____变量的初始化与赋值相关

Java的赋值和初始化包括很多容易被忽视的地方,在此分类总结如下: 1.和赋值相关: 基本类型的赋值运算需要注意的是赋值时的类型转换问题,什么时候可以自动转换,什么时候需要强制类型转换是需...
  • u010241120
  • u010241120
  • 2015年10月08日 13:59
  • 1228

java 如果一个变量是double或者float,如何初始化为0?

double是0d,float是0f,中间不要有点, 0d就是0的Double。0f就是0的Float。
  • mmd1234520
  • mmd1234520
  • 2017年04月18日 13:30
  • 3509

Java中String类的初始化和方法

public class testString { public static void main(String[] args){ String s = "123a"; //初始化方法1 ...
  • laodengbaiwe0838
  • laodengbaiwe0838
  • 2016年08月28日 21:40
  • 1150

Mac环境变量配置错了以后初始化的方法

配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是:  source .bas...
  • or7rccl
  • or7rccl
  • 2016年03月14日 14:39
  • 3413

java trycatch变量是局部的

try catch里面的是局部变量。 java变量的作用域分为四个级别:类级、对象实例级、方法级、块级。 块级变量就是定义在一个块({})内部的变量都是局部变量 try{}中try后面的{}就是...
  • huangning1995
  • huangning1995
  • 2017年03月10日 10:03
  • 928

java中变量什么时候需要初始化

1. 对于类的成员变量,不管程序有没有显式的进行初始化,加载时Java虚拟机都会先自动给它初始化为默认值。   基本数据类型默认值如下:              Boolean      fa...
  • u010698072
  • u010698072
  • 2016年06月30日 17:28
  • 1575
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 变量到底要如何初始化
举报原因:
原因补充:

(最多只允许输入30个字)