【CS61B】Lec3-Java Basic2

  • 1235 字
  1. 1. Java Basic 2
    1. 1.1. 声明变量的原理
    2. 1.2. 类的实例化
    3. 1.3. 引用类型
    4. 1.4. 参数传递
    5. 1.5. 数组的比较
    6. 1.6. 实例:递归实现链表

Java Basic 2

声明变量的原理

  • 计算机留出对应变量类型的内存空间
  • Java创建一个内部表用来将变量名与各个位进行对应
  • 首次声明时,Java不会在这些空间里写入任何东西,但你不可以使用一个未定义的变量,对变量赋值后,才会向里面填充内容

类的实例化

当实例化一个对象时

  • Java对类中的每个实例变量分配空间并初始化值
  • 构造函数用其他一些值填充这些空间

其中,new关键字的作用类似于寻找并返回新创建的对象的地址

引用类型

不属于Java的八种基本类型的类型统称为引用类型

当声明一个引用类型时:

  • Java会分配64bits空间,无论是哪一种对象
  • 这些空间会被设置为
    • Null(二进制位全0)
    • 该类特定实例的地址

参数传递

The Golden Rule of Equals:

给予变量a与b,a=b的意义为把b的bits值复制给a

参数传递的方式按照此规律:即按值传递(有时候值为地址),而不能使用引用(如C++中的&)

数组的比较

Java中,==运算符仅仅是比较两个数组的地址是否相同

如果需要比较内容是否已知,可以使用Arrays.equals(x,y);方法

实例:递归实现链表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package lec3;

// 无限长的整型链表
// 使用递归写
public class IntList {
public int first;
public IntList rest;

public IntList(int f, IntList r) {
first = f;
rest = r;

}

public int size() {
if (rest == null) {
return 1;
}
return 1 + rest.size();
}

public int get(int x) {
if (x == 0) return this.first;
return this.rest.get(x - 1);
}

public static void main(String[] args) {
IntList L = new IntList(15, null);
L = new IntList(10, L);
L = new IntList(5, L);

System.out.println(L.size());
System.out.println(L.get(2));
}
}

赞助喵
非常感谢您的喜欢!
赞助喵