黑马程序员0826_java基础知识

本文深入探讨了Java编程语言的关键概念,包括内部类的可见性、类的单态设计模式、静态成员的使用、垃圾回收机制及其相关方法,以及Java文档注释的规范。通过实例演示了静态代码块、构造函数、非静态与静态成员的区别和调用顺序,旨在为开发者提供全面的Java编程指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- android培训、java培训、期待与您交流! ----------------------

在一个类中可以定义一个叫public void finalize()的方法(已尝试,不管是private还是其他返回均报错),在调用system.gc时,就会执行所有的finalize内容;

(后来才知道system.gc只是主动召唤垃圾回收器而已,它不一定来得,所以不能指望finalize()一定会执行,这是不确定的)

类中的Static静态变量在所有的实例中值都相同,就好象是该类所有实例的一个公共变量,可以通过实例名+变量名或者类名+变量名来访问;

静态方法相当于某类共有的方法,和变量类似,也可以用实例名+方法名或者类名+方法名来执行;

在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。

类中

Static

{

         Code;

}(从李刚的书中了解到不带static的角初始化块,几乎是类初始化时最优先执行的)

叫做静态代码块,就是说类第一次被调用时会被执行一次,且只执行一次,亲自试验后发现它比构造函数先调用,还有就是先定义的方法可以调用后定义的变量,static代码块的中方法和静态方法的其他注意事项相同;

所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

(对这个设计模式做过好几次,刚开始的时候总是稀里糊涂的啊,现在是so easy!哈哈)

实现方法:首先将类的构造函数定义为private则从外边不能直接创建类的新对象;然后在类中定义一个static方法,供外界使用,通过这个static方法返回一个static实例对象;因为static实例对象是类中所有对象共有的,又不能再产生新的其他东西,从而达到这个类只有一个实例的效果,虽然可以指向不同的指针,但是还是指向同一个实例;

如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量,这个道理不难想象!所以static嵌套类很少使用。

public class Outer

{
 private int size;
 public class Inner

         {
            private int size;
            public void doStuff( int size)

                   {
                    size++; // 引用的是doStuff函数的形参

                                this.size++; //引用的是Inner类中的成员变量

                                Outer.this.size++; // 引用的Outer类中的成员变量//在后两面那两个面试题的视频用来好几次

                }

         }

}

【内部类如何被外部引用】

class Outer

{

             private int size=10;

             public class Inner

             {

                       public void doStuff()

                       {

                           System.out.println(++size);

                       }

             }

}

    public class TestInner

    {

             public static void main( String[] args)

             {

                       Outer outer = new Outer();

                       Outer.Inner inner = outer.new Inner();

                       inner.doStuff();

             }

    }

(方法中的内部类的可见性非常小,连外部类也访问不了,只能是方法内部访问,这时可以使用另外定义一个接口来联系它们;)

嵌套类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。例如,在方法中,或甚至在for循环体内部,都可以定义嵌套类 。

在方法中定义的内部类只能访问方法中的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。

使用Java的文档注释

Java/**comments*/类型的注释一定要放在类定义的前面,不能放错位置;

import java.io.*;

/**

* Title:  engineer类<br>

* Description:  通过engineer类来说明java中的文档注释<br>

* Copyright: (c) 2003 www.it315.com<br>

* Company: 锐智科技咨询中心<br>

* @author 张孝祥

* @version 1.00

*/

public class engineer

{

         public String Engineer_name;

         /**

         *  这是engineer对象的构造函数

         *  @param name engineer的名字

         */

         public engineer(String name)

         {

         }

         /**

         *  这是repairing方法的说明

         *  @param sum 需要修理的机器总数

         *  @param alltime 需要修理的总时间

         *  @return Repairing的数量

         */

         public int repairing(int sum,int alltime)

         {

         }

 }

【可以做注释的类必须是public的,所以说文件名和类名要相同】

命令示例:javadoc –d engineer –author –version engineer.java


---------------------- android培训、java培训、期待与您交流! ---------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值