您的位置:首页 > 编程语言 > Java开发

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

2017-08-11 17:58 901 查看
一、内部类

内部类:在类内部定义的类,就称为内部类。

内部类又分为三种,分别是成员内部类,方法内部类,静态内部类。

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官网找到。

四、博主学习的教材是传智播客的,所以用的例子也有部分是的,如果有侵权,可联系进行删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: