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

一、内部类
内部类:在类内部定义的类,就称为内部类。
内部类又分为三种,分别是成员内部类,方法内部类,静态内部类。
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值