`
o_o_0
  • 浏览: 16281 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

JAVA三种变量的初始化 (转载)

 
阅读更多

问题讨论变量的初始化,所以先来看一下Java中有哪些种类的变量。
  
  1. 类的属性,或者叫值域
  
  2. 方法里的局部变量
  
  3. 方法的参数
  
  对于第一种变量,Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。
  
  int类型变量默认初始值为0
  
  float类型变量默认初始值为0.0f
  
  double类型变量默认初始值为0.0
  
  boolean类型变量默认初始值为false
  
  char类型变量默认初始值为0(ASCII码)
  
  long类型变量默认初始值为0
  
  所有对象引用类型变量默认初始值为null,即不指向任何对象。注意数组本身也是对象,所以没有初始化的数组引用在自动初始化后其值也是null。
  
  对于两种不同的类属性,static属性与instance属性,初始化的时机是不同的。instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。这个问题会在以后的系列中进行详细讨论。
  
  对于第二种变量,必须明确地进行初始化。如果再没有初始化之前就试图使用它,编译器会抗议。如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。也就是说,把初始化语句放在只有if块的条件判断语句中编译器也会抗议,因为执行的时候可能不符合if后面的判断条件,如此一来初始化语句就不会被执行了,这就违反了局部变量使用前必须初始化的规定。但如果在else块中也有初始化语句,就可以通过编译,因为无论如何,总有至少一条初始化语句会被执行,不会发生使用前未被初始化的事情。对于try-catch也是一样,如果只有在try块里才有初始化语句,编译不通过。如果在 catch或finally里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要初始化成什么值好,就用上面的默认值吧!
  
  其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。

分享到:
评论

相关推荐

    C++全局变量初始化的一点总结

    注意:本文所说的全局变量指的是 variables with static storage,措词来自 c++ 的语言标准文档。  什么时候初始化 ...  static initialization: 静态初始化指的是用常量来对变量进行初始化,主要包括 zero init

    java类变量初始化顺序

    详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。

    易语言静态变量初始化

    易语言静态变量初始化源码,静态变量初始化,静态变量初始化例子

    解决C++全局变量只能初始化不能赋值的问题

    C++中,全局变量只能声明、初始化,而不能赋值 也就是说,下面这样是不被允许的: #include using namespace std; int a; a = 2; int main() { return 0; } 错误提示是: C++ requires a type specifier for all...

    关于Java静态成员变量和静态初始化块等的初始化顺序的详细介绍

    详细介绍了Java的静态成员变量、静态数据块、非静态成员变量和非静态成员变量等初始化顺序

    6种方法初始化JAVA中的list集合

    主要介绍了6种方法初始化JAVA中的list集合,文中讲解非常详细,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    Java变量初始化的时机

    对于JAVA中变量的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。...

    Java中static静态变量的初始化完全解析

    static所声明的变量在Java中有一个初始化的先后顺序,带着这个问题接下来我们就来进行Java中static静态变量的初始化完全解析:

    Java变量初始化

    java语言规定每个变量必须先声明,然后才能使用,声明变量时必须指定该变量的数据类型

    java面试题-类的初始化顺序.doc

    java面试题-类的初始化顺序.doc 大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某种运算,...

    VC++全局变量初始化-16.09.26

    重点说明了VC++全局变量动态初始化的顺序

    易语言源码易语言静态变量初始化源码.rar

    易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar 易语言源码易语言静态变量初始化源码.rar ...

    易语言静态变量初始化源码.zip

    易语言静态变量初始化源码.zip这个是易语言源码,希望是你需要的例程,只有学习才会进步,感谢你的关注。谢谢

    java语法\Java数组声明、创建、初始化

    Java数组的初始化有三种方式:动态初始化、静态初始化和默认初始化。 动态初始化 动态初始化是指数组定义与为数组分配空间和赋值的操作分开进行。例如,`int a[]; a = new int[3];`创建了一个名为`a`的整型数组,...

    Keil MDK下如何设置非零初始化变量

    一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备。...如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的。

    Java类加载器:静态变量初始化.docx

    Java类加载器:静态变量初始化.docx

    Java静态和非静态成员变量初始化过程解析

    主要介绍了Java静态和非静态成员变量初始化过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java 常量与变量

    java 常量与变量 java 常量与变量

    MDK下怎样才能让变量在复位时不被初始化

    最近一个项目需要保存一下临时数据,而产品容易受干扰而...所以需要保存一下数据,那么只有在系统复位时候不再初始化变量即可。对应MDK(keil)来说是一个比较麻烦的问题。通过网络上找了大量资料和测试发现终于可以了。

    详解C++中变量的初始化规则

    定义没有初始化式的变量时,系统有时候会帮我们初始化变量。 系统如何初始化取决于变量的类型以及变量定义的位置。  内置类型变量是否自动初始化取决于变量定义的位置。 函数体外定义的变量初始成0;函数体内定义的...

Global site tag (gtag.js) - Google Analytics