类基础
类表示一个新的数据类型。
简单类的一般形式:
class ClassName {
type instanceVariable;
//...
type method(parameterList) {
// 方法体
}
//...
}
有些 Java 应用不需要 main 方法。
定义对象
new 操作符在运行时动态地给一个对象分配内存并返回指向该对象的引用。这个引用本质上是该对象在内存中的地址。
创建一个类代表创建了一个新的数据类型,不需要占用内存空间;创建一个对象表示创建了一个类的实例,需要占用内存空间。
对象引用变量赋值
A origin = new A();
A another = origin;
此时 origin 和 another 变量都存储了同一个 A 的实例在内存中的地址,也就是这个实例的引用。
方法
type methodName(parameterList) {
// 方法体
return value;
}
type:表示该方法返回的数据类型。若方法不返回值,则返回类型为 void。
methodName:任意合法的标识符。
parameterList:用逗号分隔的类型和标识符对,表示调用方法时传递给方法的参数值。
value:返回值。
在类中定义的方法可以直接访问它所属的类中定义的实例变量,必须通过点操作符的方式访问不在同一个类中的 public 实例变量。
方法实际返回值的类型需要和方法定义时指定的返回值类型兼容。接收方法返回值的变量类型需要与方法定义时指定的返回值类型兼容。
parameter 表示方法调用时,用于接收传入方法的值的变量;argument 表示方法调用时,传入方法的值。
构造器
构造器(constructor)在对象被创建时,用于初始化对象的内部状态。
构造器没有返回类型,void 类型也不行。一个类的构造器的返回类型隐含是这个类类型(class type)本身。
当使用 Java 默认的构造器时,数值类型、引用类型、boolean 类型实例变量的默认值分别为 0、null、false。
当自定义了构造器,默认的构造器不再生效。
this
任意方法中的 this 引用当前对象。
在类的方法中使用 this 可以防止方法中的局部变量与类的实例变量重名时,无法访问实例变量的情况。
垃圾回收
当一个对象没有任何一个引用指向它时,表示该对象不再需要,它所占用的内存可以被回收。回收过程由运行时环境自动进行。
一个栈类
class Stack {
int s[10];
int index;
Stack() {
index = -1;
}
void push(int item) {
if (index == 9) {
System.out.println("stack is full");
} else {
s[++index] = item;
}
}
int pop() {
if (index == -1) {
System.out.println("stack is empty");
return 0;
} else {
return s[index--];
}
}
}
参考
[1] Herbert Schildt, Java The Complete Reference 11th, 2019.