构造器 (一)

2014-11-24 10:11:46 · 作者: · 浏览: 0
public class Test2 {
	/**
	 * 创建一个类,他包含了一个在定义时就被初始化了的string域, 以及另一个通过构造器初始化了的string域,这两种的方式有何差异
	 */
	String st1 = new String("你好");
	Test2() {

	}

	Test2(String i) {
		this.st1 = new String("我爱你");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
Test2 ts1=new Test2();
System.out.println(ts1.st1);
Test2 ts2=new Test2("我爱你");
System.out.println(ts2.st1);
	}

}

创建一个类,他包含了一个在定义时就被初始化了的string域, 以及另一个通过构造器初始化了的string域,这两种的方式有何差异?

当我们创建了构造器时,系统是不会再为我们创建默认构造器的。所以如果我们还需要使用默认构造器(无参构造器)时一定需要我们自己来创建。构造函数是在对象创建时调用,它会覆盖类定义初始化的String

此方法应根据不同的基本数据类型(作为参数列表)进行重载,根据被调用的版本,它打印出不同类型的狗吠(barking)、咆哮(howling)等信息。在测试类里编写main()方法来调用所有不同版本的方法。

public class Dog{
public static void main(String[] args) {
barking();
barking("汪汪汪");
barking(5);
howling();
howling("老虎");
howling("老虎",10);
}

public static void barking(){
System.out.println("狗吠");
}

public static void barking(String str){
System.out.println("狗吠"+str);
}

public static void barking(int number){
System.out.println(number+"只狗在吠");;
}

public static void howling(){
System.out.println("咆哮");
}

public static void howling(String animal,int number){
System.out.println(number+"只"+animal+"在咆哮");
}

public static void howling(String animal){
System.out.println(animal+"在咆哮");
}
}

public class Dog{
public static void main(String[] args) {
barking();
barking("汪汪汪");
barking(5);
howling();
howling("老虎");
howling("老虎",10);
}

public static void barking(){
System.out.println("狗吠");
}

public static void barking(String str){
System.out.println("狗吠"+str);
}

public static void barking(int number){
System.out.println(number+"只狗在吠");;
}

public static void howling(){
System.out.println("咆哮");
}

public static void howling(String animal,int number){
System.out.println(number+"只"+animal+"在咆哮");
}

public static void howling(String animal){
System.out.println(animal+"在咆哮");
}
}
编写一个类,拥有两个静态字符串域,其中一个在第一处初始化,另一个在静态块中初始化。现在,加入一个静态方法用以打印出两个字段值。请证明它们都会被使用之前完成初始化动作

 public class Test5 {  
    String str = new String("我爱你");  
    Test5(String str) {  
        System.out.print(str);  
    }  
  
    static void print() {  
        Test5 test = new Test5("你好");  
        System.out.println(test.str);  
    }  
    public static void main(String[] args) {  
        print();  
    }  
}  

public class Test5 {
	String str = new String("我爱你");
	Test5(String str) {
		System.out.print(str);
	}

	static void print() {
		Test5 test = new Test5("你好");
		System.out.println(test.str);
	}
	public static void main(String[] args) {
		print();
	}
}

 /** 
 * 请证明加载类的动作仅发生一次,证明该类的第一个实体 
 * 的创建或者对static成员的访问都有可能引起加载*/  
class A {  
    static int j = printInit("A.j initialized");  
  
    static int printInit(String s) {  
        System.out.println(s);  
        return 1;  
    }  
  
    A() {  
        System.out.println("A() constructor");  
    }  
}  
  
class B extends A {  
    static int k = printInit("B.k initialized");  
  
    B() {  
        System.out.println("B() constructor");  
    }  
}  
  
class C {  
    static int n = printInitC("C.n initialized");  
    static A a = new A();  
  
    C() {  
        System.out.println("C() constructor");  
    }  
  
    static int pr