`
spirithenry
  • 浏览: 1746 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

TIJ Learning:Java变量初始化问题

阅读更多
Java中有3种的变量
  
  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里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要初始化成什么值好,就用上面的默认值吧!
  
  其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。
分享到:
评论

相关推荐

    thinkinjava源码-TIJ4:java中思考的源代码

    8. **反射和动态代理**:Java的反射机制允许在运行时检查类的信息并实例化对象,动态代理则允许在运行时创建代理对象,增强或拦截方法调用。 9. **枚举和注解**:Java 5引入了枚举类型和注解,源码中会有它们的使用...

    tij4:java中的思考第四版

    1. **基础语法**:Java是一种面向对象的语言,其基础语法包括变量、数据类型、运算符、控制结构(如if语句、switch语句、循环)以及方法的定义和调用。理解这些基本元素是学习Java的第一步。 2. **类与对象**:Java...

    thinkinjava源码-TIJ4Example:Java4示例源代码中的思考

    2. **类与对象**:Java是一种面向对象的语言,"TIJ4Example"会展示如何定义类、创建对象、封装、继承和多态等面向对象编程的概念。这有助于理解对象的生命周期和它们之间的关系。 3. **异常处理**:Java异常处理...

    TIJ4-solutions

    1. **基础语法**:TIJ4介绍了变量、数据类型、运算符、控制流(if、switch、for、while)、方法、类与对象等基础知识。解决方案会展示如何正确使用这些语法进行程序设计。 2. **面向对象编程**:书中深入探讨了类、...

    TIJ_Exercises:Java 4 中思考的练习

    《TIJ_Exercises:Java 4 中思考的练习》是一份专为学习和深化Java编程技能而设计的资源。这个项目基于《Thinking in Java》第四版中的练习,这本书由Bruce Eckel编写,是Java编程领域的一本经典教材。通过解决这些...

    TIJ4-code_idea:Java 中的思考第 4 版练习题

    1. **基础语法**:Java的基础语法包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while)、方法定义与调用等。在练习中,你会遇到如何正确声明和使用这些元素的实例。 2. **类与对象**:Java是一种...

    javajar源码-TIJ4-code:java编程思想第四版源码maven构建注意:在D:\Java\jdk1.7.0_80\jre\lib

    《javajar源码-TIJ4-code:java编程思想第四版源码maven构建注意:在D:\Java\jdk1.7.0_80\jre\lib》这个压缩包文件,主要涉及的是Java编程语言的学习资源,特别是《Thinking in Java》第四版的源代码,该书由Bruce ...

    tij4-code:java编程思想第四版-GIT

    "tij4-code:java编程思想第四版-GIT" 指的是该书的源代码已经托管在了Git版本控制系统中,方便读者查阅和学习。Git是一种分布式版本控制系统,用于跟踪对文件或项目的修改,非常适合软件开发团队协作和管理代码。 ...

    TIJ4-code:Java源代码中的Tink

    用Java思考,第4版:下载,安装和测试代码 请注意,本书涵盖了Java 5/6。 最新一本书涵盖了Java 8。 这项工作是根据。 按此页面顶部的绿色按钮,下载代码。 按下按钮后,选择“下载Zip”。 创建要在其中安装代码...

    [Thinking In Java 练习题答案 第四版]Annotated+Solution+Guide+for+TIJ4.rar

    2. **类与对象**:Java是一种面向对象的语言,书中详细介绍了类的定义、对象的创建与使用,以及封装、继承和多态等面向对象的核心特性。 3. **集合框架**:Java集合框架是处理数据的重要工具,包括List、Set、Map等...

    TIJ4-code_ThinkinginJava_conversationemk_

    14. **枚举(Enum)**:Java 5引入的枚举类型,用于定义固定的常量集合,比传统的final static变量更安全。 15. **Lambda表达式**:Java 8引入的新特性,简化了函数式编程,尤其是对处理集合的操作。 以上这些只是...

    TIJ4-code-master.zip及相关jar包、练习题答案

    - **面向对象**:Java是面向对象的语言,书中详细介绍了封装、继承、多态三大特性,以及接口、抽象类的应用。 - **异常处理**:异常处理在Java中占有重要地位,书中详细讲述了try-catch-finally机制和自定义异常。...

    Java编程思想 Thinking in Java 课后习题答案

    5. **多线程**:Java提供了丰富的多线程支持,习题可能涉及到线程的创建、同步、通信等问题,答案会解释如何避免并发问题并实现高效的并发编程。 6. **输入/输出与流**:Java的I/O系统是处理文件、网络通信等任务的...

    Thinking In Java 源码

    1. **基础语法**:Java语言的基础包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环、switch语句)以及方法定义。在源码中,你可以看到如何使用这些元素构建程序。 2. **面向对象编程**:Java是...

    TIJ4-code.rar_TI

    3. **异常处理**:Java的异常处理机制是其强大的特性之一,"TIJ4-code"中包含了各种异常的处理示例,有助于读者学习如何编写健壮的代码。 4. **集合框架**:Java的集合框架是处理数据的重要工具,这里包含了...

    Thinking in java\TIJ4-solutions-demo

    - 变量的声明与初始化。 - 常量的概念及其使用。 - 数据类型的自动转换与显式转换。 - 运算符的优先级与结合性。 3. **第3章:控制结构** - 条件语句:if-else、switch-case。 - 循环语句:while、do-while、...

    TIJ阅读笔记.doc

    【TIJ阅读笔记】 在Java编程中,内存管理是一个关键的概念。Java的内存分为两种主要区域:堆(Heap)和栈(Stack)。堆是用于动态创建对象的主要内存池,包括数组和其他复杂对象,由垃圾回收机制自动管理。而栈则...

    Thinking In Java 第四版-源代码TIJ4-code

    4. **集合框架**:Java的集合框架包括List、Set、Queue、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现。通过源代码,你可以看到这些数据结构的实际运用和性能差异。 5. **输入/输出**:I/O流是...

    Thinking in Java 4th 英文版 pdf&doc双份格式 附随书代码

    4. **异常处理**:Java的异常处理机制是其强大之处,书中详细阐述了如何通过try-catch-finally语句块来捕获和处理程序运行时可能出现的问题。 5. **输入/输出(I/O)**:Java的I/O流系统是处理文件读写、网络通信的...

    Thing in java-3rd-edition-code

    1. **基础语法**:Java的基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制(if-else、switch、for、while循环)以及方法定义等。在TIJ-3rd-edition-code中,这些基础示例会帮助初学者建立...

Global site tag (gtag.js) - Google Analytics