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

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

声明

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

修饰符

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

《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,仍然只是一个拷贝,也就是按值传递的意思。

你可能感兴趣的:(java)