.栈和堆
(1) 局部变量(方法变量)驻留在栈上
(2) 对象和它的实例变量驻留在堆上
2. 字面量和基本强制转换
(1) 整形字面值可以是十进制、八进制(如:013)或十六进制(如:0x3d)
(2) Long字面量以L或l结尾
(3) float字面量以F或f结尾,double字面量以数字、D或d结尾
(4) boolean字面量为true或false
(5) char字面量是单引号内的单个字符,如:’d’
3. 作用域
(1) 作用域指变量的生存期
(2) 有4种作用域:a.只要静态变量的类存在,静态变量就存在b.只要实例变量的对象存在,实例变量就存在c.只要局部变量的方法在栈上,局部变量就存在。但,如果它的方法调用了另一个方法,它就会临时变的不可用d.块变量(如:在for或if块中的变量)会存在到块完成为止
4.基本赋值
(1) 字面整数隐含为int
(2) 整数表达式总是会导致一个int大小的结果,而永远不会导致更小的结果
(3) 浮点数隐含为double(64位)
(4) 收缩基本类型会截去高阶位
(5) 组合赋值(如:+=)执行自动强制转换
(6) 引用变量保持用于引用对象的位
(7) 引用变量可以引用所声明类型的子类,但不能引用其父类
(8) 当创建一个新对象时(如:Button b = new Button();)会发生3件事情:A.建立一个名为b的Button类型的引用变量B.创建一个新的Button对象C.将Button对象赋予引用变量b
5.使用未初始化和未赋值的变量或数组元素
(1) 当实例化一个对象数组时,该数组内的对象不会被自动实例化,但所有引用都会得到默认值null
(2) 当实例化基本类型的数组时,元素会得到它们的默认值
(3) 实例变量总是用一个默认值进行初始化
(4) 局部/自动/方法变量从不会被赋予默认值。如果试图在初始化它之前使用,则将得到编译器错误。
6. 向方法传递变量
(1) 方法能够使用基本值和/或对象引用作为变元
(2) 方法变元总是一个副本
(3) 方法变元永远不是实际的对象(它们是对象的引用)
(4) 基本值变元是与原始基本值完全分离的副本
(5) 引用变元是指向原始对象的引用的另一个副本
(6) 当两个具有不同作用域的变量共享相同的名称时,就会出现隐藏。(Notice:考题多)
7. 数组声明、构建和初始化
(1) 数组能够保存基本类型或对象类型,但数组本身就是对象
(2) 当声明数组时,方括号可以位于数组名称的左边或右边
(3) 在声明中包含数组大小永远是不合法的
(4) 当(使用new)构建数组时,必须包含其大小,除非是在创建匿名数组
(5) 对象数组中的元素不会被自动创建,尽管基本数组元素会被赋予一个默认值
(6) 若试图使用对象数组中的数组元素,而改元素没有引用一个真正的对象,则会得到NullPointerException异常
(7) 数组索引从0开始
(8) 如果使用了错误的索引值,则会得到ArrayIndexOutOfBoundsException异常
(9) 数组具有一个length变量,其值是数组中的元素的个数(int a[] = {1,2,3};int len = a.length;)
(10) 可以访问的最后一个索引值总是比其长度值小1
(11) 多维数组就是数组的数组
(12) 多维数组中的维数可以有不同的大小
(13) 基本数组可以接受能够被隐式提升为数组声明类型的任何值。如:byte变量能够放入一个int数组中
(14) 对象数组能够持有通过了该数组声明类型IS-A测试(或者instanceof测试)的任何对象。如:若Horse扩展Animal,那么Horse对象就能够放入Animal数组中
(15) 当将一个数组赋予以前声明的数组引用时,正在赋值的数组必须与被赋值的引用具有相同的维数
(16) 可以将一种类型的数组赋值给以前声明的其父类型的数组引用
8. 初始化块
(1) 首次加载类时,会运行一次静态初始化块
(2) 每当创建一个新的类实例时,都会运行实例初始化块。它们的运行发生在所有父构造函数之后,构造函数的代码运行之前
(3) 若一个类中存在多个初始化块,它们会遵循上述规则,且它们的运行顺序与它们在源文件中出现的顺序相同
9. 使用包装器
(1) 包装器类与基本类型相关
(2) 包装器具有两个主要功能:A.包装基本类型,使它们能够像对象一个被处理B.为基本类型提供实用工具方法(通常是转换)
(3) 3个最重要的方法种类是:A.xxxValue(),不带任何变元,返回基本类型B.parseXxx(),带String变元,返回基本类型。若失败,会抛出NumberFormatException异常
(4) valueOf(),带String变元,返回包装的对象。若失败,会抛出NumberFormatException异常
(5) 除了Character只能带char变元外,包装器构造函数能够带String或基本类型的变元
(6) 如果指定基数,则通常表示10以为的基数,八进制的基数为8,十六进制的基数是16
10.装箱
(1) 从JAVA5起,装箱允许在基本类型和包装器间自动装换
(2) 结合使用==与包装器的装箱是有技巧性的,具有相同的较小值(通常小于127)的包装器将是==,具有较大值则不是==
11. 高级重载
(1) 基本值的加宽使用可能的”最小”方法变元
(2) 当分别使用时,装箱与var-arg都与重载兼容
(3) 不能从一种包装类型加宽到另一种包装类型(IS-A测试失败)
(4) 不能先加宽,后装箱(int不能变成Long)
(5) 可以先装箱,后加宽(int可以通过Integer变成Object)
(6) 可以组合使用var-arg与加宽或装箱
12.垃圾收集
(1) 在Java中,垃圾收集(GC)提供自动内存管理
(2) GC的目标是查找和删除不可到达的对象
(3) 只有JVM才能决定什么时候运行垃圾收集器,你只能建议它运行
(4) 无法确切知道GC算法
(5) 在对象能够进行垃圾收集之前,它必须是符合条件的
(6) 当没有任何活线程能够到达对象时,该对象就符合垃圾收集条件
(7) 要到达对象,必须有一个指向该对象的活的、可到达的引用
(8) Java应用程序能够耗尽内存
(9) 隔离岛能够被垃圾收集,即使它们相互引也能如此
(10) 应使用System.gc()方法请求垃圾收集(只对SCJP6以前的版本才如此)
(11) Object类具有finalize()方法
(12) 在垃圾收集器删除对象之前,可以保证finalize()方法运行一次,并且只运行一次
(13) 因为垃圾收集器不会做出任何保证,所以finalize()方法可能从不运行
(14) 在finalize()方法内可以让对象不符合垃圾收集条件
分享到:
相关推荐
第三章 赋值与输入输出 5学时 第四章 选择结构设计 4学时 第五章 循环结构设计 5学时 第六章 数组 6学时 期中考试 2学时 第七章 过程 6学时 第八章 数据文件 4学时 第九章 程序调试与错误...
Java 语言程序设计(郑莉)第三章课后习题答案 本资源是 Java 语言程序设计(郑莉)第三章课后习题答案的详细解析,涵盖了多个编程题目,涉及到 Java 语言的基础知识、算法和程序设计。下面是每个题目的详细解释和...
字符串用单引号、双引号或三引号包围,可以包含任何文本。 除此之外,Python的表达式和变量赋值也至关重要。表达式是计算的单元,可以是简单的数值、字符串或更复杂的组合,而变量是用来存储数据的标识符,通过赋值...
### 第三章 赋值语句与控制语句 - **赋值语句**:探讨不同数据类型之间的赋值操作及其注意事项。 - **顺序结构**:简单的输入输出操作示例。 - **选择结构**:if语句、switch语句的用法。 - **循环结构**:while...
在C语言的学习中,第三章主要讲解了顺序程序设计,这是理解C语言程序构造的基础。这一章涵盖了C语言中的基本概念和结构,包括C语句的概述、程序的三种基本结构,以及C语言的基本语句类型。 首先,C语言中的语句是...
高中数学的第二章“算法初步”中,2.2节主要讲解了变量与赋值的概念,这是编程和算法设计的基础。下面将详细阐述这个知识点。 首先,变量是研究问题过程中可以变化的量,它们用于存储数据,随着问题的进展而改变。...
【北大青鸟S1JAVA第三章课后练习详解】 在北大青鸟的S1JAVA课程中,第三章是Java编程的基础部分,涵盖了重要的概念和技术,为学员打下坚实的编程基础。这一章的学习内容通常包括变量、数据类型、运算符、控制结构...
"钱能C++第二版第三章课后题答案"这个资源对于初学者来说,无疑是一份宝贵的参考资料,它提供了对第三章习题的解答,帮助你检验自己的理解并解决疑惑。下面将详细探讨第三章可能涉及的知识点,并分享一些学习C++时的...
第三章“运算符”涉及C语言中的各种运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符等。通过这些运算符,程序员可以进行数学计算、逻辑判断以及数据的位级操作。 第四章至第八章可能包含了...
### C语言谭浩强第三版第三章至第十章核心知识点概览 #### 数据类型、运算符与表达式 - **常量与变量** - 常量:在程序执行过程中,其值不会改变的量,可以直接引用。 - 变量:值可变的量,需先定义后使用,分为...
在学习过程中,观看"第03章 方法与数组 03 数组的定义与四种赋值方式.mp4"视频将有助于你更直观地理解这些概念,通过实例演示和详细解释,你将能更好地掌握数组的操作技巧。同时,实践是检验理解的最好方式,尝试...
编译原理课后第四章答案 本节将对编译原理及实现第四章的课后答案进行详细的解释和分析。 4.1 对下面文法,设计递归下降分析程序。 文法:S→aAS|(A),A→Ab|c 解决方法:首先将左递归去掉,将规则A→Ab|c改成A...
` 获取矩阵A的第二行第三列的值,`slice = A(1:3, :)` 提取第一到第三行的所有列。 5. **函数和运算符**: MATLAB内置了丰富的数学函数,如`sin()`, `cos()`, `exp()`, `log()`, `sqrt()`等。运算符包括比较运算符...
例如,`names[0]`表示列表的第一个元素,这里用来获取并打印名字`eric`。 练习3-2进一步扩展了列表的使用,这次不是直接打印名字,而是为每个名字创建一条问候语。这展示了如何通过字符串拼接来组合元素,如`names...
第三章 如何运行程序 第四章 介绍Python对象类型 第五章 数字 第六章 动态类型简介 第七章 字符串 第八章 列表 第9章 元组、文件及其他 第10章 Python语句简介 第11章 赋值、表达式和打印 第12章 if测试 第13章 ...
这个压缩包包含了第一章至第三章的上机实践阶段的源代码以及指导学习1阶段的练习代码,对于想要自学或者巩固C#编程技能的人来说,是一份非常实用的学习资料。 首先,我们来详细了解这三个章节的知识点: **第一章...