type
status
date
slug
summary
tags
category
icon
password
原始类型 Primitive Types
JAVA中的内置的数据类型有:
byte
short
int
long
float
double
boolean
char
引用类型 Reference Types
除了原始类型之外,全是引用类型
声明变量
- 内存分配:当声明一个特定类型的变量时,计算机会为该类型分配足够的内存位来存储该类型的数据。例如:
- 声明一个
int
类型的变量时,会分配一个 32 位的内存空间(即 "box")。 - 声明一个
double
类型的变量时,会分配一个 64 位的内存空间。
- 内部表:Java 会创建一个内部表,用来将每个变量的名称与它所分配的内存位置进行映射。
- 安全性保障:Java 不会在这些分配的内存空间(“box”)中写入任何值。为了安全起见,Java 不允许访问未初始化的变量。
类的实例化
- 当我们实例化一个对象(例如
Dog
、Walrus
、Planet
)时,Java 会执行以下步骤: - 内存分配:Java 会为每个实例变量分配内存空间(即 "bit box"),并将这些内存位置填充为默认值。例如,基本数据类型会被初始化为默认值(如整数类型为
0
,布尔类型为false
),而对象引用类型则会被初始化为null
。 - 构造函数:构造函数通常会根据传递给类的参数或者其他逻辑,为这些内存位置赋予更具体的值。
引用类型的声明
当我们声明一个引用类型的变量时
- 内存分配:Java 会分配一个大小为 64 位的内存块,无论你声明的对象类型是什么。
- 内存值:这个 64 位的内存块可以被设置为:
null
(即所有位为 0),表示这个变量没有指向任何实际的对象。- 一个特定对象的 64 位“地址”,该地址是通过
new
操作符创建的对象实例的地址。
64位地址
- 零地址(
null
):所有为零的地址都表示为null
,即没有指向任何对象。
- 非零地址:非零的地址则表示为箭头,指向相应的对象。
这种表示方式有时被称为“箱子与指针(box and pointer)表示法”,用来帮助人类理解引用类型变量的内存管理和指针关系。
a和b指向同一个地址

总的来说,
数组的声明、实例化和赋值
- 声明(Declaration):
int[] a
声明了一个名为a
的整数数组变量,这个变量被分配了一个 64 位的内存空间来存储该数组的地址。
- 实例化(Instantiation):
new int[]{0, 1, 2, 95, 4}
创建了一个新的整数数组对象,并将其地址存储在a
变量中。
- 赋值(Assignment):将实例化的数组的地址赋给了变量
a
,即把新创建的数组对象的地址存入了名为a
的 64 位内存空间。
注意:
- 实例化的对象可能会丢失:如果我们将
a
重新赋值给其他内容(例如:a = somethingElse
),原来指向的数组对象就会失去引用,我们将无法再访问到这个原始的数组对象。
IntList 链表
构建链表
这里其实和C的构建方式也类似,就是内部嵌套一下
后面做了一些改进,在intlist类中又定义了一个同名的public的方法
这样一来,可以通过在外部调用方法,更方便地构建链表
如果没有的话,只能通过.rest.first.= 等等方法构建
size方法
递归法
这里通过递归的方法,遍历链表,返回链表的长度
感觉在cs61a中遍历树的subtree的方法很像
迭代法
用for也可以完成,这里用的是while
get方法
也是用递归实现的,没啥
小练习

increList
dincrList
其实也就是递归与迭代的区别
- 作者:昊卿
- 链接:hqhq1025.tech/article/cs61b/lec4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。