`
dasheng
  • 浏览: 146270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

<java编程思想>学习笔记5,第5章 初始化和清理

阅读更多

1,根据返回值来区分重载方法是不行的;

 

2,默认构造器

 

如何你的写的类没有构造器,编译器会帮你创建一个默认构造器;如果已经定义了一个构造器,编译器不会再帮你创建一个

 

构造器。

 

3,this关键字

 

在构造器中调用构造器,

 

public class Flower {
  int petalCount = 0;
  String s = "initial value";
  Flower(int petals) {
    petalCount = petals;
    print("Constructor w/ int arg only, petalCount= "
      + petalCount);
  }
  Flower(String ss) {
    print("Constructor w/ String arg only, s = " + ss);
    s = ss;
  }
  Flower(String s, int petals) {
    this(petals);   //构造器中调用构造器
//!    this(s); // 不能调用两个构造器

    this.s = s; // Another use of "this"
    print("String & int args");
  }
  Flower() {
    this("hi", 47);//构造器中调用构造器
    print("default constructor (no args)");
  }
  void printPetalCount() {
//! this(11); // Not inside non-constructor!//在非构造器里不能调用构造器
    print("petalCount = " + petalCount + " s = "+ s);
  }
  public static void main(String[] args) {
    Flower x = new Flower();
    x.printPetalCount();
  }
} /* Output:

 

4,static的含义

 

static方法就是没有this的方法,在static方法里不能调用非静态方法,反过来,却可以,就是非静态方法可以调用

 

static方法。

 

5,静态的初始化至在class对象首次加载的时候进行一次

 

class Cup {
  Cup(int marker) {
    print("Cup(" + marker + ")");
  }
  void f(int marker) {
    print("f(" + marker + ")");
  }
}

class Cups {
  static Cup cup1;
  static Cup cup2;
  static {
    cup1 = new Cup(1);   //只执行一次
    cup2 = new Cup(2); //只执行一次
  }
  Cups() {
    print("Cups()");
  }
}

public class ExplicitStatic {
  public static void main(String[] args) {
    print("Inside main()");
    Cups.cup1.f(99);  // (1)
  }
  // static Cups cups1 = new Cups();  // (2)
  // static Cups cups2 = new Cups();  // (2)
} /* Output:

 

6,非静态事理初始化

 

class Mug {
  Mug(int marker) {
    print("Mug(" + marker + ")");
  }
  void f(int marker) {
    print("f(" + marker + ")");
  }
}

public class Mugs {
  Mug mug1;
  Mug mug2;
  {
    mug1 = new Mug(1);
    mug2 = new Mug(2);
    print("mug1 & mug2 initialized");
  }
  Mugs() {
    print("Mugs()");
  }
  Mugs(int i) {
    print("Mugs(int)");
  }
  public static void main(String[] args) {
    print("Inside main()");
    new Mugs();
    print("new Mugs() completed");
    new Mugs(1);
    print("new Mugs(1) completed");
  }
} /* Output:

 

7,可变参数列表

 

public class NewVarArgs {
  static void printArray(Object... args) { //可变参数
    for(Object obj : args)
      System.out.print(obj + " ");
    System.out.println();
  }
  public static void main(String[] args) {
    // Can take individual elements:
    printArray(new Integer(47), new Float(3.14),
      new Double(11.11));
    printArray(47, 3.14F, 11.11);
    printArray("one", "two", "three");
    printArray(new A(), new A(), new A());
    // Or an array:
    printArray((Object[])new Integer[]{ 1, 2, 3, 4 });
    printArray(); // Empty list is OK
  }
} /* Output: (75% match

 

8,jdk5增加了枚举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:

 

 

 

分享到:
评论

相关推荐

    <<JAVA学习笔记>>实例源代码

    &lt;&lt;java 学习笔记&gt;&gt;的实例源代码 后面还有SWF文件

    corejava<java核心技术>重点笔记

    java核心技术 corejava 笔记

    java编程思想学习笔记

    Java是一种面相对象的编程语言。计算机语言分成两种,第一种是面向机器结构的语言,构建数据模型是基于机器的结构。第二种是面向待解决问题结构的语言,构建数据模型是基于问题的结构。Java提供了更丰富的工具来描述...

    Java 学习笔记Java学习笔记

    Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记

    Java学习笔记学习笔记

    Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...

    java编程思想读书笔记

    java编程思想读书笔记,114页,压缩文件才39K。

    Java编程思想(第4版)读书笔记by CZF

    Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF

    java编程思想笔记

    java编程思想笔记,建议与书本结合使用。。。。。。。。。。。

    Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)

    Java 学习笔记-手机书 Rev.3 (080603)

    &lt;br&gt;&lt;br&gt;此为第三版Java Study Note Rev.3 (080603)&lt;br&gt;&lt;br&gt;1).增加了学习笔记下半部。&lt;br&gt;&lt;br&gt;在转换的过程中可能存在其他失误,请见谅,如果有好的见解请登陆我的博客:&lt;br&gt;&lt;br&gt;...

    Java编程思想读书笔记.doc

    Java编程思想读书笔记 doc doc

    雨痕的<>高清完整版

    《Python学习笔记》。是一个名为:雨痕的前辈写的。虽然是未完成版,但是读起来很顺畅,于是周末两天,除了逛街就是在读这本书。不到200页的电子书,很快可以读完。 书分为三个部分:Python语言,Python标准库,...

    jive.chm

    1 应用Struts的网站建设 &lt;br&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt;Java基础&lt;br&gt; 1 20个Java基础Tips &lt;br&gt; 2 abstract,static,final修饰符 &lt;br&gt; 3 ChinaUnix.net Java精华贴 &lt;br&gt; 4 ANT学习笔记 &lt;br&gt; 5 极度性能调整 &lt;br&gt;&lt;br&gt; &lt;br&gt;FAQs&lt;br&gt;...

    《java编程思想》之学习笔记

    java编程思想的笔记。是别人的学习笔记。

    Java并发编程学习笔记.rar

    Java并发编程学习笔记

    Java编程思想-笔记.docx

    《java编程思想》学习笔记

    Jive资料集

    系统设计&lt;br&gt; 1 jive设计思路 &lt;br&gt; 2 jive的工作内幕 &lt;br&gt; 3 Jive源代码研究 &lt;br&gt; 4 Jive中的设计模式 &lt;br&gt; 5 jive学习笔记 &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;数据库设计&lt;br&gt; 1 Jive Forums数据库说明(英文) &lt;br&gt; 2 Jive KB...

    JAVA个人学习笔记

    JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记JAVA学习笔记

Global site tag (gtag.js) - Google Analytics