Java 语言(4)
—— from Java course, Prof. Z, Fudan University
1 数据的存储
Java 的数据类型
- 基本数据类型:short, int, long, double, float, byte, boolean, char
- 类:变量、方法
- 引用
Element a = new Element();a 是创建的类的引用。
Java 的内存管理
方法中声明的基本数据类型、对象的引用一般存在栈中
类的成员变量(基本数据类型、对象的引用)一般存在堆中
示例:
1 | class Element{ |

类的方法的实现(代码)只需要存储一份。

static
static 变量
类的变量一般通过类的实例化来分配空间,有些变量是本类所有对象共用。因此引入类的 static 数据(所有实例化对象共享,只存储一份)。
static 方法
类的方法一般通过类的实例化对象来调用,有些方法和对象的实例化数据没有关系。因此引入类的 static 方法。
static 方法
- 只处理 static 数据
- 调用方式:类名.方法名(普通方法为:对象名.方法名)
final
final 修饰的类的变量
有些数据不希望在对象创建后被修改,因此引入 final 变量。
final 变量须在分配内存空间时赋值(不能在除了构造方法之外的方法中赋值)。
final 修饰的引用
final 修饰对象的引用,该引用只能指向一个对象,不能再修改,但是被指向的对象的数据可以修改。
final/static
final static 用于修饰常量,例如
1 | final static double PI = 3.1415926535; |
因为是 static 的,会在对象创建前分配空间;因为是 final 的,必须在分配空间的时候赋值,因此不可以在构造函数中赋值。
2 String 类
String 类的数据
1 | private final char[] value; //存储字串 |
String 构造之后,字串不能更改,主要原因有:
- 实现字符串池,复用空间
- 拷贝时只需要复制引用
- 多线程安全
- Hash 值固定,不用重算
1 | String a = "12345"; |
创建内容为 12345 的 String 对象,引用赋值 a
将该引用赋值给 b

1 | String a = "12345"; |
创建内容为 12345 的 String 对象 1, 67 的对象 2
对象 1 的引用赋值 a
创建内容为 1234567 的 String 对象,引用赋值 a

String 类的常用方法
1 | char charAt(int dex); // 取字符 |
String 对象的 +
Java 不支持操作符重载,只实现了 String 类的 + 重载
- 类似于 concat
- 可以 + 各种基本变量,甚至各种对象(先转成字串)
1 | String a = "a"; |
StringBuffer 与 StringTokenizer
动态更改内容的字串类