Java初始化与清理

it2022-05-05  157

1.构造器的定义

构造器用于初始化对象,同时jvm会为该对象分配内存空间,不接受任何参数的构造器叫作默认构造器或者无参构造器,构造器没有返回值,这里有一个面试题

String str=new String("content");

当String的构造器运行后,jvm会给str分配一部分的内存空间,并且str指向堆区的content,然后str得到的值并不是构造器所返回的,而是new动作的结果,构造器完成初始化后就结束了

一个简单的面试题:

创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器初始化的String域,这两种有何区别?

package section.five; /** * Created by mac on 2017/7/16. */ public class ExerciseTwo { String str1 = "hello"; String str2 = null; String str3 = str2; public ExerciseTwo(String str2){ this.str2 = str2; } }

 

package section.five; /** * Created by mac on 2017/7/16. */ public class Main { public static void main(String[] args){ ExerciseTwo exerciseTwo = new ExerciseTwo("world"); System.out.println("str1: "+exerciseTwo.str1); System.out.println("str2: "+exerciseTwo.str2); System.out.println("str3: "+exerciseTwo.str3); } }

 输出结果可得:

str1: hello str2: world str3: null 

在定义时就被初始化了的String域在实例化的时候引用str1被赋值了一次,而另一个str2第一次被赋值为null,第二次通过构造器赋值为world,所以被赋值了两次

2.重载

java中的重载具有以下几个特点:

1.方法名相同 2.参数列表不同(若参数列表的类型相同但是参数列表的顺序不同也属于重载) 3.返回值可以相同也可以不同

 举个例子:int show(); 和void show();两个方法不能构成重载,所谓的重载是指方法名和参数列表,两者合称为方法签名

                    int show(int a,String b);和int show(String a,int b)构成重载,因为两个方法的参数列表的顺序不同

 

 

 

 

 

 

 

 

 

 

 


最新回复(0)