day_06

--暑假学习第六天--

一.构造代码块


构造代码块的作用:给对象进行统一的初始化。
构造函数的作用: 给对应的对象进行初始化。

构造代码块的格式:
 
 {
  构造代码块
 }
 
注意: 构造代码块的大括号必须位于成员 位置上。

代码块的类别:
 1. 构造代码块。
 2. 局部代码块.   大括号位于方法之内。  作用:缩短局部 变量 的生命周期,节省一点点内存。
 3. 静态代码块  static
 
eg:
class Baby{
	
	int id; //身份证
 
	String  name;  //名字
	
	//构造代码块...
	{
		//System.out.println("构造代码块的代码执行了......");
		
	}

	//带参构造函数
	public  Baby(int i , String n){
		id  = i;
		name = n;
	}
	
	//无参构造方法
	public Baby(){
	}

	public void cry(){
		System.out.println(name+"哇哇哭...");
	}

}	
class Demo1
{
 public static void main(String[] args)
 {
  Baby b1 = new Baby(110,"狗娃");  //  狗娃 狗剩 铁蛋
  System.out.println("编号:"+ b1.id + " 名字:"+b1.name);
}
}
构造代码块要注意的事项:

 1. java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
 
 2. 成员变量的初始化工作其实都在在构造函数中执行的。
 
 3. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在
     构造函数之前执行的,构造函数的中代码是最后执行的。
 
 4. 成员变量的显示初始化与构造代码块 的代码是按照当前代码的顺序执行的。
 
二.this关键字
 
this关键字代表了所属函数的调用者对象。
 
this关键字作用:
 1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定
           访问成员变量的数据。
 
 2. 在一个构造函数中可以调用另外一个构造函数初始化对象。
 
this关键字调用其他的构造函数要注意的事项:
 1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
 
 2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。
 
this关键字要注意事项:
 1. 存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
 
 2. 如果在一个方法中访问了一个变量,该变量只存在成员变量的情况下,那么java编译器会在该变量的 前面添加this关键字。
 
eg:
class Animal{

	String name ;  //成员变量

	String color;

	public Animal(String n , String c){
		name = n;
		color = c;
	}
	
	//this关键字代表了所属函数的调用者对象
	public void eat(){
		//System.out.println("this:"+ this);
		String name = "老鼠"; //局部变量
		System.out.println(name+"在吃..."); //需求: 就要目前的name是成员变量的name.
		
	}
}

class Demo2
{
	public static void main(String[] args) 
	{
		Animal dog = new Animal("狗","白色");  //现在在内存中存在两份name数据。

		Animal cat = new Animal("猫","黑色");

		cat.eat();
		
	
	}
}
原文地址:https://www.cnblogs.com/seduce-bug/p/9351645.html