Java构造函数和this关键字

 

1、  构造函数java

/*
	一个函数中定义的变量必需要初始化,不然编译会报错
	一个类中的数据成员
		一、 若是在定义的时候不初始化,则它的值是系统自动分配好的默认值! 如int型为零 boolean型是false
			如本程序的A类对象就是这样

		二、 若是在定义的同时赋初值, 则是能够的,也就是说该值是生效的.注意在C++中则不能够,在C++中一个类的数据成员不能在定义的同时初始化,它只能在构造函数中初始化
			如本程序的A类对象就是这样
			
		三、 若是在定义的同时赋初值,固然生效,但若是在构造函数中又改变了定义时赋的初值,
			则该数据成员最终的值就是构造函数中修改以后的那个值,由于:
				系统会先执行定义时赋的初值,而后再执行构造函数中赋的初值
			如本程序的B类对象就是这样
*/

class A
{
	int i;
	int j = 10;
	boolean flag;

	void show()
	{
		System.out.println("i = " + i);
		System.out.println("j = " + j);		
		System.out.println("flag = " + flag);
	}
}

class B
{
	int i;
	int j = 10;
	boolean flag;

	public B()
	{	
		System.out.println("之前的值是 " + i + "  " + j + " " + flag);

		i = 88;
		j = 88;
		flag = true;
	}

	void show()
	{
		System.out.println("i = " + i);
		System.out.println("j = " + j);		
		System.out.println("flag = " + flag);
	}
}

class TestConst_3
{
	public static void main(String[] args)
	{
		A aa1 = new A();
		aa1.show();

		B bb1 = new B();
		bb1.show();
	}
}
/*
	在j2sdk1.4.2_16中的运行结果是:
--------------
i = 0
j = 10
flag = false
之前的值是 0  10 false
i = 88
j = 88
flag = true
--------------
*/

2、  this关键字函数

/*
  关键字this:
    1,在普通方法中,关键字this表明方法的调用者,即本次调用了该方法的对象
    2,在构造方法中,关键字this表明了该方法本次运行所建立的那个新对象
*/

class A
{
	private int i;
	public A(int i)
	{
		this.i = i;  //将形参 i 赋给该构造方法本次运行所建立的那个新对象的i数据成员
	}
	public void show(){
		System.out.println("i = " + this.i);
			//this表示当前时刻正在调用show方法的对象
			//this能够省略
	}
}

public class TestThis
{
	public static void main(String[] args){
		A aa1 = new A(100);
		aa1.show();
		
		A aa2 = new A(200);
		aa2.show();
	}	
}