编程思想_初始化与清理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq3399013670/article/details/89791881

初始化

1、用构造器确保初始化

创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。

如何命名这个方法?
问题:所取的名字可能与类的某个成员名称相冲突;调用构造器是编译器的责任,所以必须让编译器知道应该调用哪个方法。故Java采用了与类相同的名称作为构造器。

2、方法重载

方法名相同,形参不同。
如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际类型就会自动提升。char型略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升至int型。

如果方法接受较小的基本类型作为参数。如果传入的实际参数较大,就得通过类型转换执行窄化处理。

3、默认构造器

如果类中没有写构造器,则编译器自动会帮你创建一个默认构造器。

4、this关键字

this关键字只能在方法内部使用,表示对"调用方法的那个对象”的引用。

当需要返回对当前对象的引用时,就常用return this;

this关键字将当前对象传给外部其他方法也很有用。

在构造器中调用构造器,避免重复。

5、static关键字

在static方法的内部不能调用非静态方法。

6、初始化

静态初始化只在Class对象首次加载的时候进行一次。

清理

7、垃圾回收

finalize()调用,并非总是被垃圾回收。

  • 对象可能不被垃圾回收
  • 垃圾回收并不等于"析构“
  • 垃圾回收只与内存有关

之所以要有finalize(),是由于在分配内存时可能采用了类似C语言中的做法,这种情况主要发生在“本地方法”的情况下,本地方法是一种在Java中调用非Java代码的方式。

finalize()还有一个有趣的用法,就是对对象终结条件的验证。

了解:引用计数,停止-复制,标记-清扫,Java HotSpot技术采用了惰性评估,意思就是即时编译器只在必要的时候才编译代码。这样,从不会被执行的代码也许压根不会被JIT所编译。代码每次执行的时候都会做一些优化,所以执行的次数越多,他的速度就会越快。

8、枚举类型

enum有一个特别实用的特性,即它可以在switch中使用。
枚举变量必须大写。使用枚举是要创建该类型的引用,并将其赋给某个实例。
程序举例:

public enum Spiciness{
 NOT,MILD,MEDIUM,HOT,FLAMING
}
public class Burrito {
  Spiciness degree;
  public Burrito(Spiciness degree) { this.degree = degree;}
  public void describe() {
    System.out.print("This burrito is ");
    switch(degree) {
      case NOT:    System.out.println("not spicy at all.");
                   break;
      case MILD:
      case MEDIUM: System.out.println("a little hot.");
                   break;
      case HOT:
      case FLAMING:
      default:     System.out.println("maybe too hot.");
    }
  } 
  public static void main(String[] args) {
      Burrito plain = new Burrito(Spiciness.NOT),
      greenChile = new Burrito(Spiciness.MEDIUM),
      jalapeno = new Burrito(Spiciness.HOT);
      plain.describe();
      greenChile.describe();
      jalapeno.describe();
  }
} /* Output:
This burrito is not spicy at all.
This burrito is a little hot.
This burrito is maybe too hot.

猜你喜欢

转载自blog.csdn.net/qq3399013670/article/details/89791881
今日推荐