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 不允许访问未初始化的变量。

类的实例化

  • 当我们实例化一个对象(例如 DogWalrusPlanet)时,Java 会执行以下步骤:
    • 内存分配:Java 会为每个实例变量分配内存空间(即 "bit box"),并将这些内存位置填充为默认值。例如,基本数据类型会被初始化为默认值(如整数类型为 0,布尔类型为 false),而对象引用类型则会被初始化为 null
    • 构造函数:构造函数通常会根据传递给类的参数或者其他逻辑,为这些内存位置赋予更具体的值。

引用类型的声明

当我们声明一个引用类型的变量时
  • 内存分配:Java 会分配一个大小为 64 位的内存块,无论你声明的对象类型是什么。
  • 内存值:这个 64 位的内存块可以被设置为:
      1. null(即所有位为 0),表示这个变量没有指向任何实际的对象。
      1. 一个特定对象的 64 位“地址”,该地址是通过 new 操作符创建的对象实例的地址。

64位地址

  • 零地址(null:所有为零的地址都表示为 null,即没有指向任何对象。
  • 非零地址:非零的地址则表示为箭头,指向相应的对象。
这种表示方式有时被称为“箱子与指针(box and pointer)表示法”,用来帮助人类理解引用类型变量的内存管理和指针关系。

a和b指向同一个地址

notion image
 
 
总的来说,

数组的声明、实例化和赋值

  • 声明(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方法

也是用递归实现的,没啥
 

小练习

notion image

increList

dincrList

 
其实也就是递归与迭代的区别
Lec 5 - SLLists, Nested Classes, Sentinel NodesLab 2
Loading...
昊卿
昊卿
一个普通的干饭人🍚
最新发布
5.2 参数管理
2025-3-11
5.1 层和块
2025-3-11
4.9 环境和分布偏移
2025-3-11
4.8 数值稳定性和模型初始化
2025-3-11
4.7 前向传播、反向传播和计算图
2025-3-11
4.6 暂退法 (Dropout)
2025-3-11