5初始化与清理
Posted guyuangang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5初始化与清理相关的知识,希望对你有一定的参考价值。
5.1 用构造器确保初始化
1、构造器与类名相同,构造器没有返回值,这与返回值为"void"明显不同。
2、构造器有助于减少错误,并使代码更易于阅读,Java中的"初始化"和"创建"是捆绑在一起的,两者不可分离
练习一:创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成了null。
1 package cn.gyg.test; 2 /* 3 练习1:创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成了null 4 */ 5 public class Test01 { 6 public static String str1; 7 public static void main(String[] args) { 8 System.out.println(str1); 9 } 10 } 11 12 out:null
练习二:创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器
初始化的String域。这两种方式有和差异。
1 package cn.gyg.test; 2 3 /* 4 练习二:创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器 5 初始化的String域。这两种方式有和差异 6 */ 7 public class Test02 { 8 9 public static String str1 = "aaa"; 10 public static String str2; 11 12 public static void main(String[] args) { 13 System.out.println("----------创建对象前---------"); 14 15 System.out.println("str1:" + str1); 16 System.out.println("str2:" + str2); 17 System.out.println("----------创建对象后---------"); 18 new Test02("bbb"); 19 System.out.println("str1:" + str1); 20 System.out.println("str2:" + str2); 21 } 22 23 /*区别:str1在类加载的时候被初始化为"aaa" 24 str2在类加载的时候被初始化为null 25 str2在创建对象的时候被初始化为"str2" 26 */ 27 public Test02(String s) {//通过构造器初始化str2 28 this.str2 = s; 29 } 30 31 public Test02() { 32 } 33 } 34 35 out: 36 ----------创建对象前--------- 37 str1:aaa 38 str2:null 39 ----------创建对象后--------- 40 str1:aaa 41 str2:bbb
5.2 方法重载
当创建一个对象时,也就是给此对象分配到的内存空间取了一个名字。而方法则是给某个动作取的名字。
1、区分重载方法:参数列表不同。不可以用返回值类型不同区分方法重载,不推荐使用参数顺序不同区分方法重载
2、基本数据类型作为重载方法的参数:如果传入的数据类型(实际参数的类型)小于方法中形式参数的类型,实际参数类型就会被提升。
3、char类型作为重载方法的参数:如果无法找到恰好能够接受char类型参数的方法,char会直接提升为int。
4、在编写一个类的时候,编译器会默认提供一个无参构造器,但如果自己定义了构造器,编译器将不会提供默认构造器,所以建议在设计类的时候都提供一个无参构造器。
练习三:创建一个带默认构造器(即无参构造器)的类,在构造器中打印一条消息,为这个类创建一个对象。
1 package cn.gyg.test; 2 /* 3 练习三:创建一个带默认构造器(即无参构造器)的类,在构造器中打印一条消息,为这个类创建一个对象 4 */ 5 public class Test03 { 6 public Test03() {//Test03的无参构造方法 7 System.out.println("调用了Test03的无参构造器"); 8 } 9 public static void main(String[] args) { 10 new Test03(); 11 } 12 } 13 out: 14 调用了Test03的无参构造器
练习四:为前一个练习中的类添加一个重载构造器,令其接收一个字符串参数,并在构造器中把自己的消息和接收的参数一起打印出来。
1 package cn.gyg.test; 2 3 public class Test04 { 4 5 public Test04() {//Test03的无参构造方法 6 System.out.println("调用了Test04的无参构造器"); 7 } 8 9 public Test04(String s) {//重载构造器 10 System.out.println("调用了Test04的重载构造器"); 11 System.out.println("s:" + s); 12 } 13 14 public static void main(String[] args) { 15 new Test04("aaa"); 16 } 17 } 18 out: 19 调用了Test04的重载构造器 20 s:aaa
练习五:创建一个名为Dog的类,它具有重载的bark方法,此方法根据不同的基本数据类型进行重载,
并根据被调用的版本,打印出不同类型的狗吠(barking)、咆哮(howling)等信息。编写main()
来调用所有不同版本的方法。
1 package cn.gyg.test; 2 3 public class Dog { 4 public void bark(int i){ 5 System.out.println("int:打鼾"); 6 } 7 8 public void bark(double d) { 9 System.out.println("double:barking"); 10 } 11 12 public void bark(char c) { 13 System.out.println("char:howling"); 14 } 15 }
1 package cn.gyg.test; 2 /* 3 练习五:创建一个名为Dog的类,它具有重载的bark方法,此方法根据不同的基本数据类型进行重载, 4 并根据被调用的版本,打印出不同类型的狗吠(barking)、咆哮(howling)等信息。编写main() 5 来调用所有不同版本的方法 6 */ 7 public class Test05 { 8 public static void main(String[] args) { 9 Dog dog = new Dog(); 10 dog.bark(1); 11 dog.bark(1.1); 12 dog.bark(‘a‘); 13 } 14 } 15 out: 16 int:打鼾 17 double:barking 18 char:howling
以上是关于5初始化与清理的主要内容,如果未能解决你的问题,请参考以下文章