对象
前言
在学对象之前,先问问你自己,你有对象吗?很抱歉,有的话,不建议往下学,有时间多陪陪对象(不是,开玩笑的)。
对象的创建、属性和行为
鉴于这里大部分的方法其实和C++中的对象的机制几乎一样,这里就不过多介绍,用一个例子来说明。
public class Person {
String name;
int age;
char sex;
public Person() {
// 无形参构造方法
}
public Person(String name, int age, char sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public static void print(String str) {
System.out.print(str);
}
public void print() {
System.out.println("我是"+name+", 今年"+age+"岁"+"性别:"+sex);
}
public static void main(String args[]) {
var xm = new Person("小明", 18, '男');
xm.print();
var dm = new Person(); // 第二次创建对象
dm.print(); // 调用对象方法,打印对象信息
Person.print("" + xm.age); // 访问对象的成员变量
}
}
这里创建了一个简单的Person
类,写了两种构造方法。
对象的引用
Java 中创建对象时,对象本身其实是等号右边的部分。new person()
这里是创建的对象本身,为了方便开发者随时访问,用一个Person
类型的引用变量来随时访问这个创建的对象。
说白了,和C++中的指针是一个东西。
对象的销毁
Java 中的垃圾回收机制会自动回收无用但是占用内存的资源。以下两种情况会被Java回收:
- 对象超过其作用范围,或者说超过生命周期。
- 对象被置为null。
{
Example e = new Example();
}// 超过声明周期
{
Example e = new Example();
e = null; // 被置为null时
}
public class Example {
public static void main(String args[]) {
var example = new Example();
System.out.println(example);
example = null; // 被置为 null
System.out.println(example);
}
}
// 被置为null后没有指向的内存地址
Java 中的垃圾回收机制很完善,但是只能回收那些通过new
操作符来创建的对象。如果不是通过new
关键字来创建的对象,必须在类中定义finalize()
方法,这个方法是在Object()
类中被申明为protected
的一个方法。
因为垃圾回收机制不受人为控制,所以Java提供了System.gc()
方法来强制启动垃圾回收机制。