构造器

一.为什么需要构造器

构造器确保初始化,C程序中经常出现程序员忘记初始化,元素一直占用着资源无法释放导致内存用尽。构造器提供了“垃圾回收站”,对于不再使用的内存资源对其自动释放。

每个类都有一个初始化方法,JAVA在操作对象前自动调用相应构造器,以确保初始化进行

如何定义构造器

构造器命名与类名相同原因有两个:1.防止与类中成员名冲突2.调用构造器是编译器责任,必须让编译器知道该方法

public class ConstructorTest {
public ConstructorTest(){
System.out.println("这是无参构造器");
}
public ConstructorTest(int i ){
System.out.println("这是参有构造器");
}
public static void main(String[] args) {
new ConstructorTest();//new对象时会为对象分配空间,调用相应构造器
new ConstructorTest(5);
}
}

三.注意事项

1.构造器为特殊类型的方法,名称首字母小写不适用,且没有返回值(与返回值void不同)

2.默认构造器:即无参构造器,没有形式参数的构造器--作用为创建一个默认对象,若类中没有构造器,编译器会自动帮助生成。但定义了一个后(无论是否有参),编译器都不再自动生成

四.练习

练习1:创建一个类,包含一个未初始化String引用,验证该引用被JAVA初始化成了null

public class Constructor1 {
	//String 未被初始化即未被赋值
	String s;
	public static void main(String[] args) {
		Constructor1 c = new Constructor1();
		System.out.println(c.s);
	}
}

练习2.创建一个类,包含一个定义时就被初始化了的String域,以及一个通过构造器初始化的String域,有何区别

public class Constructor2 {
	//定义时就初始化的string
	String s1= "string1";
	//通过构造器定义string
	public Constructor2(String s2){
		System.out.println(s2);
	}
	public static void main(String[] args) {
		//通过构造器初始化string
		Constructor2 c = new Constructor2("string2");
		System.out.println(c.s1);
	}
}
//两者区别在于:后者通过main改变值,前者S的值直接赋值写死

练习3:创建一个带默认构造器的类,在构造器中打印一跳消息,为这个类创建一个对象

public class ConstructorTest {
	public ConstructorTest(){
		System.out.println("这是无参构造器");
	}

	public static void main(String[] args) {
		ConstructorTest c = new ConstructorTest();
	}
}

练习4:创建一个没有构造器的类,并在main中创建其对象,用以验证编译器是否真的自动加入默认构造器

public class Constructor3 {
		public static void main(String[] args) {	
			Constructor3 c = new Constructor3();
	}	
}


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值