《Java编程思想》读书笔记1

preview
需积分: 0 1 下载量 67 浏览量 更新于2022-08-03 收藏 771KB PDF 举报
在深入探讨《Java编程思想》中的知识点之前,我们首先要理解Java的核心概念——面向对象。这体现在标题和描述中,即“对象导论”和“一切都是对象”。 在Java中,对象是类的实例,类是对象的蓝图。当我们谈论“创建一个成员对象”时,意味着在新类的定义中包含了一个现有类的实例,这是组合的一部分。组合是对象构造的一种方式,它允许我们通过已有的类构建更复杂的结构。如果组合是动态的,比如在运行时决定哪些对象包含其他对象,那么我们称之为聚合。聚合强调的是松散耦合,例如,“汽车拥有引擎”是一种典型的“has-a”关系。 多态性是面向对象编程的重要特性,Java通过其默认的动态绑定机制实现了这一特性,这意味着在运行时确定方法调用。与C++不同,Java不需要显式使用关键字(如virtual)来实现多态。此外,Java的所有类都直接或间接地继承自Object类,这是Java的单根继承特性。 向上转型(子类对象赋值给父类引用)是安全的,因为它允许我们处理更抽象的类型。然而,向下转型(父类引用转换为子类对象)需要谨慎,因为如果对象的实际类型不是预期的子类,就会导致ClassCastException。 在第二章“一切都是对象”中,我们了解到在Java中,所有的东西都是对象,包括变量。对象可以存储在不同的内存区域,如寄存器、栈、堆、常量存储和非RAM存储。栈主要存放基本类型和引用,而堆则用于存储Java对象。基本类型不使用new操作符创建,它们在栈中直接分配,效率更高。Java的基本类型有固定的大小,不受硬件平台影响,这增强了可移植性。 Java只支持有符号数字,并且确保数组初始化和边界检查,这增加了安全性但可能会带来一定的性能开销。在作用域内重新声明同名变量是非法的,这有助于避免命名冲突。Java对象的生命周期超出了作用域,即使引用消失,对象依然存在于堆中,直到垃圾收集器回收。 Java会为类的成员变量赋予默认值,但不会为局部变量自动初始化。方法参数列表中必须指定参数的类型和名称,传递对象时实际上是传递引用。static关键字标识的成员属于类级别,而不是对象级别,这意味着static字段和方法只有一份,不依赖于对象实例。静态方法不能直接访问非静态成员,因为非静态成员需要对象实例来调用。 总结起来,《Java编程思想》中涉及的主要知识点包括对象的创建与组合、多态性、继承、内存管理、基本类型与对象的区别、作用域规则以及静态与非静态成员的使用。这些概念构成了Java编程的基础,理解和掌握它们对于成为一名熟练的Java开发者至关重要。