内部类(成员、静态、方法)| java帮助文档 | 垃圾回收机制

来源:互联网 发布:linux rpm qa grep 编辑:程序博客网 时间:2024/05/18 22:45

一、内部类
内部类:在类内部定义的类,就称为内部类。
内部类又分为三种,分别是成员内部类,方法内部类,静态内部类。
1、成员内部类:
一个类中可以定义成员变量,成员方法,还可以定义类。
首先应该注意,内部类如果被声明为私有,外界则无法访问。
成员内部类格式

class Outer{    int num=1;//成员变量    public void test(){//成员方法        Inner inner=new Inner();//创建一个成员内部类对象        inner.show()//调用成员内部类方法    }    class Inner(){//成员内部类        void show(){//成员内部类方法            System.out.print(num);//成员内部类方法访问外部内的成员变量        }    }}public class Example01{    public static void main (String [] args){        Outer outer =new Outer();        outer.test();    }}//内部类在其所在的外部类中被调用自身方法 只需要实例化内部类,用内部类引用即可

//内部类在其所在的外部类中被调用自身方法 只需要实例化内部类,用内部类引用即可
那么,如果不是在自己所在的类中被调用应该如何呢?
那么就要用外部类创建内部类对象,创建内部类对象步骤如下

//外部类类名.内部类类名 变量名=new 外部类类名().new 内部类类名();//例如,如果想调用show方法,则需要如下步骤Outer.Inner neibuleiduixiang=new Outer().new Inner();neibuleiduixiang.show();

2、方法内部类
方法内部类就是定义在成员方法中的类,并且只能在该方法中使用
方法内部类可以访问外部类的成员变量
案例

class Outer{    int num=4;    public void test(){        class Inner{//方法内部类            void show(){                System.out.print(num);            }        }        Inner inner=new Inner();//创建对象        inner.show();//调用方法    }}public class Example02{    public static void main (String [] args){        Outer out=new Outer();        out.test();    }}

3、静态内部类
静态内部类实际上是一个被static修饰的成员内部类。前面有一篇文章已经说过static和静态方法,静态变量,静态代码块,如果不记得了,请先去复习前面的文章
静态内部类的好处就是可以在不创建外部类对象的情况下被实例化。
具体的与发给是如下

//外部类名.内部类名 变量名=new 外部类名.内部类名();//需要注意的是①静态内部类中只能访问外部类的静态成员。②静态内部类中可以定义静态的成员,而非静态内部类中不允许定义静态成员例子如下class Outer {    private static int num =6;    static class Inner{        void show(){            System.out.print(num);        }    }}class Example03{    public static void main (String [] args){        Outer.Inner inner=new Outer.Inner();        inner.show;    }}

二、垃圾回收机制

java 本身是会自动进行垃圾回收的,但是要等到垃圾积累到一定的成都才行。我们可以通过调用 System.gc( )方法来通知虚拟机立即进行垃圾回收。
但是我们不知道一个对象何时会被内存释放,但是我们知道当一个对象被释放时,他的finalize()方法会被自动调用,所以我们可以通过在类中定义飞finalize方法来观察对象何时被回收。
下面来模拟一下java虚拟机垃圾回收的步骤

class Person{    public void finalize(){        System.out.print("finalize方法被调用啦")    }}public class Example04{    public static void main (String [] args){        Person p1=new Person();        Person p2=new Person();        p1=null;        p2=null;        System.gc();        for(int i=0;i<10000000;i++){            //这个循环是用来延长程序运行时间的        }    }}//需要注意的是 在虚拟机中 这个过程是在后台运行的 所以看不到

三、java帮助文档

帮助文档需要借助文档注释才可以,文档注释的方法是/* /
java中提供了javadoc命令,可以自动生成帮助文档,可直接通过查看文档了解程序功能,而不需要查看程序源代码,因此可以大大提高开发效率。
@author 对类进行说明 表示程序作者
@version 对类进行说明,表示程序开发版本号
@param 用于对方法进行说明,表示方法定义的参数以及参数对应的说明
@return 用于对方法进行说明,表示方法的返回值代表的意义

jdk帮助文档

jdk帮助文档中对所有看Java类提供了详细的说明。开发人员一般将其作为文档查阅工具来使用。可以在oracle官网找到。

四、博主学习的教材是传智播客的,所以用的例子也有部分是的,如果有侵权,可联系进行删除。

阅读全文
0 0