Java基础笔记——对象初始化

细读《Java编程思想》后的笔记和自己的个人想法。

用构造器确保初始化:每个类都有自己的构造器,如果没有明确定义构造器,Java编译器会自动帮你创建一个默认构造器;如果已经定义了构造器,Java编译器就不会再帮你创建默认构造器,相当于说你都知道类必须有构造器了,所以没必要编译器再自动帮你创建构造器了。在Java中,初始化和创建是绑定在一起,比如new class_name();这段简单的代码可以理解为呢new一个class_name对象并调用class_name()构造器初始化(个人理解)。所以构造器确保了对象的初始化。

区分重载方法:前面说过方法的唯一标识是方法名和参数类型列表。所以要区分重载方法,只能通过参数类型列表。也就是方法名一样参数类型列表不一样。要注意的一点,基本类型能从“较小”的类型自动提升到一个“较大”的类型,此过程一旦涉及到重载,可能会造成一些混淆(详情可以看Java编程思想)。或者我们会想用返回值来区分重载方法,但是我们在调用方法的时候,是不用管它是否有返回值(就算它是有返回值),所以当我们定义返回void和返回int类型的同名方法,我们只是调用方法,不理防护值,那我们怎么知道调用了哪个方法呢?如:void f(){}和 int f(){}。所以返回值区分重载方法是行不通的。

this关键字:很通俗的解释就是当前对象,但是这个解释说的很模糊,当前对象?什么是当前对象?当前对象是什么?好像很难理解。《Java编程思想》里面的解释就很容易理解:this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。那个对象调用该方法,this就是那个对象。

public class ThisText {
	int i = 0;
	int j = 0;
	public ThisText() {
		System.out.println("Hello this");
	}
	public ThisText(int i) {
		this.i = i;  //这里this是为了表明this.i是对象的成员变量i,而i是函数里的i。
	}
	public ThisText(int i, int j) {
		this(i);
		//this(j);此处不用再调用构造器
		this.j = j;
		//this(i)是调用当前对象的构造器,这里是ThisText(int i);
		//尽管可以用this来调用构造器,但是不能在一个方法里调用两个构造器。此外,必须将构造器的调用置于方法最起始处。
	}
	
	public ThisText method()
	{
		return this;//返回当前对象的引用
	}
}

成员初始化:Java尽力保证所有变量在使用前都能得到恰当的初始化。对于类的数据成员是基本类型都有会有个默认值,但是在方法中的数据成员和其他变量就不会有默认值,所以强制程序员提供一个初始值,否则会报错。

构造器初始化:在运行时,可以调用方法或执行某些动作来确定初值,但是要牢记:基本类型的成员变量一定会自动初始化,而且是在构造器调用之前执行。

初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。

static(静态)数据的初始化:无论创建了多少个对象,静态数据都只占用一个内存存储空间,static关键字不能应用于局部变量,只能应用于全局。初始化的顺序是先静态对象再“非静态”对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值