《Java基础知识》Java成员变量,成员方法,构造方法和析构方法

一 成员变量

成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:

【访问修饰符】【修饰符】【类型】【属性名称】= 【初始值】

访问修饰符: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.
原文地址:https://www.cnblogs.com/jssj/p/11279462.html