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里也有,则可以通过编译。总之,要保证局部变量在使用之前一定被初始化了。所以,一个好的做法是在声明他们的时候就初始化他们,如果不知道要初始化成什么值好,就用上面的默认值吧!
其实第三种变量和第二种本质上是一样的,都是方法中的局部变量。只不过作为参数,肯定是被初始化过的,传入的值就是初始值,所以不需要初始化。
分享到:
相关推荐
8. **反射和动态代理**:Java的反射机制允许在运行时检查类的信息并实例化对象,动态代理则允许在运行时创建代理对象,增强或拦截方法调用。 9. **枚举和注解**:Java 5引入了枚举类型和注解,源码中会有它们的使用...
1. **基础语法**:Java是一种面向对象的语言,其基础语法包括变量、数据类型、运算符、控制结构(如if语句、switch语句、循环)以及方法的定义和调用。理解这些基本元素是学习Java的第一步。 2. **类与对象**:Java...
2. **类与对象**:Java是一种面向对象的语言,"TIJ4Example"会展示如何定义类、创建对象、封装、继承和多态等面向对象编程的概念。这有助于理解对象的生命周期和它们之间的关系。 3. **异常处理**:Java异常处理...
1. **基础语法**:TIJ4介绍了变量、数据类型、运算符、控制流(if、switch、for、while)、方法、类与对象等基础知识。解决方案会展示如何正确使用这些语法进行程序设计。 2. **面向对象编程**:书中深入探讨了类、...
《TIJ_Exercises:Java 4 中思考的练习》是一份专为学习和深化Java编程技能而设计的资源。这个项目基于《Thinking in Java》第四版中的练习,这本书由Bruce Eckel编写,是Java编程领域的一本经典教材。通过解决这些...
1. **基础语法**:Java的基础语法包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while)、方法定义与调用等。在练习中,你会遇到如何正确声明和使用这些元素的实例。 2. **类与对象**:Java是一种...
《javajar源码-TIJ4-code:java编程思想第四版源码maven构建注意:在D:\Java\jdk1.7.0_80\jre\lib》这个压缩包文件,主要涉及的是Java编程语言的学习资源,特别是《Thinking in Java》第四版的源代码,该书由Bruce ...
"tij4-code:java编程思想第四版-GIT" 指的是该书的源代码已经托管在了Git版本控制系统中,方便读者查阅和学习。Git是一种分布式版本控制系统,用于跟踪对文件或项目的修改,非常适合软件开发团队协作和管理代码。 ...
用Java思考,第4版:下载,安装和测试代码 请注意,本书涵盖了Java 5/6。 最新一本书涵盖了Java 8。 这项工作是根据。 按此页面顶部的绿色按钮,下载代码。 按下按钮后,选择“下载Zip”。 创建要在其中安装代码...
2. **类与对象**:Java是一种面向对象的语言,书中详细介绍了类的定义、对象的创建与使用,以及封装、继承和多态等面向对象的核心特性。 3. **集合框架**:Java集合框架是处理数据的重要工具,包括List、Set、Map等...
14. **枚举(Enum)**:Java 5引入的枚举类型,用于定义固定的常量集合,比传统的final static变量更安全。 15. **Lambda表达式**:Java 8引入的新特性,简化了函数式编程,尤其是对处理集合的操作。 以上这些只是...
- **面向对象**:Java是面向对象的语言,书中详细介绍了封装、继承、多态三大特性,以及接口、抽象类的应用。 - **异常处理**:异常处理在Java中占有重要地位,书中详细讲述了try-catch-finally机制和自定义异常。...
5. **多线程**:Java提供了丰富的多线程支持,习题可能涉及到线程的创建、同步、通信等问题,答案会解释如何避免并发问题并实现高效的并发编程。 6. **输入/输出与流**:Java的I/O系统是处理文件、网络通信等任务的...
1. **基础语法**:Java语言的基础包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环、switch语句)以及方法定义。在源码中,你可以看到如何使用这些元素构建程序。 2. **面向对象编程**:Java是...
3. **异常处理**:Java的异常处理机制是其强大的特性之一,"TIJ4-code"中包含了各种异常的处理示例,有助于读者学习如何编写健壮的代码。 4. **集合框架**:Java的集合框架是处理数据的重要工具,这里包含了...
- 变量的声明与初始化。 - 常量的概念及其使用。 - 数据类型的自动转换与显式转换。 - 运算符的优先级与结合性。 3. **第3章:控制结构** - 条件语句:if-else、switch-case。 - 循环语句:while、do-while、...
【TIJ阅读笔记】 在Java编程中,内存管理是一个关键的概念。Java的内存分为两种主要区域:堆(Heap)和栈(Stack)。堆是用于动态创建对象的主要内存池,包括数组和其他复杂对象,由垃圾回收机制自动管理。而栈则...
4. **集合框架**:Java的集合框架包括List、Set、Queue、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现。通过源代码,你可以看到这些数据结构的实际运用和性能差异。 5. **输入/输出**:I/O流是...
4. **异常处理**:Java的异常处理机制是其强大之处,书中详细阐述了如何通过try-catch-finally语句块来捕获和处理程序运行时可能出现的问题。 5. **输入/输出(I/O)**:Java的I/O流系统是处理文件读写、网络通信的...
1. **基础语法**:Java的基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制(if-else、switch、for、while循环)以及方法定义等。在TIJ-3rd-edition-code中,这些基础示例会帮助初学者建立...