《Java程序设计语言(第4版)》阅读笔记(2)-类与对象

类有三种成员:字段、方法和嵌套类与嵌套接口。学习类,可以从这三种成员的声明、修饰符、初始化(包括类对象创建)和使用这些角度展开。这里主要讲的是字段和方法。

声明

字段的声明为,修饰符(可选)、类型名、字段名、初始化子句(可选);
方法的声明为,修饰符、返回类型、方法签名(方法名、参数列表)、异常和方法体。

修饰符

整理总结成了一张表,如下:

每一类修饰符,都可以展开成一个很庞大的话题,这里不展开了。表中,“是”表示可以有,“否”表示不适用。

初始化

字段初始化,最直接的就是使用初始化子句。字段初始化子句,可以是常量、其他字段和方法的调用。注意:(1)初始化子句必须保证类型正确;(2)初始化子句不能抛出异常。未被初始化的字段会被赋予默认的初始值。

对象初始化,必须显示初始化。初始化的方式是构造方法(书中称为构造器)和初始化段(类里面,除了字段、方法、嵌套类和嵌套接口之外的用{}包括的代码段,或者用static{}包括的代码段,后者又称静态初始化,显然只能对静态数据成员进行初始化)。

使用

这里有一点颠覆了我的认识,即Java中的方法都是按值传递的,没有按引用传递的。给个测试的例子代码,如下:

 1 class A
 2 {
 3     int v = 0;
 4 }
 5 
 6 class B 
 7 {
 8     public static void main(String[] args) 
 9     {
10         A a = new A();
11         System.out.println(a.v);
12         foo(a);
13         System.out.println(a.v);
14         foo2(a);
15         System.out.println(a.v);
16     }
17 
18     public static void foo(A a)
19     {
20         a.v = 1;
21     }
22 
23     public static void foo2(A a)
24     {
25         a = new A();
26         a.v = 2;
27     }
28 }

如果按照以往的按引用传递的观点,输出的值应该是 0、1 、2(分三行显示,下同),而实际是 0、1、 1。这说明了,传递给foo2的参数a,仍然只是一个拷贝,也就是按值传递的意思。

posted @ 2012-04-24 22:12  tt-0411  阅读(667)  评论(0编辑  收藏  举报