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)构成重载,因为两个方法的参数列表的顺序不同