一 成员变量
成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:
【访问修饰符】【修饰符】【类型】【属性名称】= 【初始值】
访问修饰符:public(公共的);protected(受保护的);无修饰符和private(私有的)。
修饰符:对属性特征的描述:如static,final 等等。
类型:属性的数据类型,可以是任意类型。
属性名称:任何合法标识符。
初始值:赋值给属性的初始值。
举例:
public static int index = 0;
二 成员方法
成员方法就是对象所具有的动态功能。基本格式如下:
【访问修饰符】【修饰符】【返回值类型】【方法名称】【参数】【异常】【方法体】
访问修饰符:public(公共的);protected(受保护的);无修饰符和private(私有的)。
修饰符:对属性特征的描述:如static,final,abstract 等等。
返回值类型:方法返回数据的类型。
方法名称:任何合法标识符。
参数:可以有多个,使用逗号分隔。
异常:关键字:throws 【具体异常】
方法体:该方法具体实现功能的地方。
案例:创建一个Book类
public class Book {
private int id; //成员变量
private String name; //成员变量
/**
* 成员方法
* @return
*/
public int getId() {
return id;
}
/**
* 成员方法
* @return
*/
public void setId(int id) {
this.id = id;
}
/**
* 成员方法
* @return
*/
public String getName() {
return name;
}
/**
* 成员方法
* @return
*/
public void setName(String name) {
this.name = name;
}
}
三 构造函数
构造函数:是特殊的成员方法,他的作用是创建对象并初始化成员变量。
构造函数定义规则:构造方法的方法名,必须和类名一致。
每个类都有一个隐藏的无参构造函数。
public class Dog{
/**
* 带参构造函数
* @param name
* @param age
*/
public Dog(String name,int age){
this.age = age;
this.name = name;
}
/**
* 无惨构造函数
*/
public Dog(){}
String name;
int age;
public void ptint(){
System.out.println("name = "+this.name+";age = "+age);
}
public static void main(String[] args) {
new Dog().ptint();
new Dog("花花",9).ptint();
}
}
运行结果:
四 析构函数
析构函数:finalize();
垃圾回收器准备释放内存的时候,会先调用finalize()。
在 Java 中,当你创建一个对象时,Java 虚拟机(JVM)为该对象分配内存、调用构造函数并开始跟踪你使用的对象。当你停止使用一个对象(就是说,当没有对该对象有效的引用时),JVM 通过垃圾回收器将该对象标记为释放状态。
当垃圾回收器将要释放一个对象的内存时,它调用该对象的finalize() 方法(如果该对象定义了此方法)。垃圾回收器以独立的低优先级的方式运行,只有当其他线程挂起等待该内存释放的情况出现时,它才开始运行释放对象的内存。(事实上,你可以调用System.gc() 方法强制垃圾回收器来释放这些对象的内存。)
在以上的描述中,有一些重要的事情需要注意。首先,只有当垃圾回收器释放该对象的内存时,才会执行finalize()。如果在 Applet 或应用程序退出之前垃圾回收器没有释放内存,垃圾回收器将不会调用finalize()。
其次,除非垃圾回收器认为你的 Applet 或应用程序需要额外的内存,否则它不会试图释放不再使用的对象的内存。换句话说,这是完全可能的:一个 Applet 给少量的对象分配内存,没有造成严重的内存需求,于是垃圾回收器没有释放这些对象的内存就退出了。
显然,如果你为某个对象定义了finalize() 方法,JVM 可能不会调用它,因为垃圾回收器不曾释放过那些对象的内存。调用System.gc() 也不会起作用,因为它仅仅是给 JVM 一个建议而不是命令。
This moment will nap, you will have a dream; But this moment study,you will interpret a dream.