《Java 2 实用教程》读书笔记(四)

第4章  类、对象和接口


1. 机器语言和汇编语言都是面向机器语言,需针对不同的机器来编写不同的代码,常称为低级语言。

2. 过程语言:C语言和Fortran等,用这些语言把代码组成称为过程或函数的块,习惯上也被称为高级语言。

3. 无论哪种高级语言编写的源文件,计算机都不能直接执行,必须把源文件转换成机器指令,经常使用下列两种方式:

(1)编译方式(Compilation):针对当前的机器处理器芯片,将源文件全部翻译成机器指令,称为目标程序,再将目标程序交给计算机执行。

(2)解释方式(Interpretation):这种方式不产生整个的目标程序,而是根据当前的机器处理器芯片,边解释边执行,解释一句,执行一句。

C语言采用的是编译方式。

4. Java语言的处理方式既不是编译方式也不是解释方式,Java编译器把源文件编译成称为字节码的一种中间代码,可以在提供了Java虚拟机(JVM)的任何系统上被解释执行,即解释一句,执行一句。同一个程序,如果是解释执行的,那么它的运行速度通常会比被编译成可执行的机器代码的运行速度慢一些。但是对Java来说,两者的差别不太大,Java的字节码经过仔细设计,很容易便能使用JIT(即时编译方式)编译技术将字节码直接转化成高性能的本地机器码。

5. 面向对象编程主要体现下列3个特性:封装性(核心思想之一就是将数据和对数据的操作封装在一起),继承多态

6. 有两种意义的多态,一种是操作名称的多态,即有多个操作具有相同的名字,但这些操作所接收的消息类型必须不同;另一种多态是和继承有关的多态,是指同一个操作被不同类型对象调用时可能产生不同的行为。

7. 类是组成Java程序的基本要素,类封装了一类对象的状态和方法,类的实现包括两部分:类声明和类体,类体的内容由两部分构成:一部分是变量的定义,用来刻画属性,另一部分是方法的定义,用来刻画功能。

8. 在类体的两部分中,变量定义部分所定义的变量被称为类的成员变量,在方法体重定义的变量和方法的参数被称为局部变量。成员变量在整个类内都有效,局部变量只在定义它的方法内有效。如果局部变量的名字和成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。如果想在该方法内使用成员变量,必须使用this。

9. 成员变量又分为实例成员变量(简称实例变量)和类变量(也称静态变量,加static);类中的方法也可以分为实例方法和类方法。

10. 方法的定义包括两部分:方法声明和方法体。

11*. 如果局部变量的定义是在一个复合语句中,那么该局部变量的有效范围是该复合语句;如果局部变量的定义是在一个循环语句中,那么该局部变量的有效范围是该循环语句。

12*. 功能的多态性就是方法的重载,方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。

13. 构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载,只能用new调用来创建对象,但是构造方法是特殊的方法,不能用static修饰构造方法。

14. 值得注意的问题:(1)对成员变量的操作只能放在方法中,但在定义类的成员变量时可以同时赋予初值。

(2)实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。

(3)一个类中的方法可以互相调用,实例方法可以调用该类中的其他方法;类中的类方法只能调用该类的类方法,不能调用实例方法。

15. 创建一个对象包括对象的声明和为对象分配内存两个步骤。如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。

16. 声明对象变量后,该变量的内存中还没有任何数据,这时的变量称为一个空对象,空对象不能使用,必须再为对象分配内存;

     对象分配内存会做两件事:(1)类的成员变量被分配内存空间,然后执行构造语句中的语句。(如果没有初始化操作,整型的默认初值为0,浮点型的默认初值为0.0,boolean型的默认初值是false,引用型的默认初值为null)

    (2)给出一个信息,确保这些变量是属于该对象的,即由该对象操作管理。在为变量分配内存后,将返回一个引用个对象变量。

17. 当对象调用类中的一个方法时,方法中的局部变量被分配内存空间,执行完毕后,局部变量即刻释放内存。局部变量声明时如果没有初始化,就没有默认值,因此在使用局部变量之前,要事先赋值。

18*. 内存空间称为该对象的实体,对象中存放着引用。两个对象p1和p2,p1=p2表示把p2的引用赋给了p1,系统将取消原来分配给p1的内存,即释放分配给p1的变量。
19. 没有实体的对象称为空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。
20*. Java有所谓的“垃圾回收”机制,周期地检查某个实体是否已不再被任何对象所拥有,如果发现,就释放实体所占的内存。C++程序员要时刻检查哪些对象应该释放内存。
21. 在Java中,方法的所有变量都是“传值”的,即方法中参数变量的值是调用者指定的值的副本,方法如果改变参数的值,不会影响向参数“传值”的变量的值。
22*. 对于基本数据类型参数的传值:向该参数传递的值的级别不可以高于该参数的级别;
       对于引用类型参数的传值:Java的引用型数据包括对象、数组以及接口。此时,“传值”传递的是变量的引用而不是变量所引用的实体,如果改变参数变量所引用的实体,就会                                                 导致原变量的实体发生同样的变化。  

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值