--暑假学习第六天--
一.构造代码块
构造代码块的作用:给对象进行统一的初始化。
构造函数的作用: 给对应的对象进行初始化。
构造代码块的格式:
{
构造代码块
}
注意: 构造代码块的大括号必须位于成员 位置上。
代码块的类别:
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关键字指定
访问成员变量的数据。
1. 如果存在同名成员变量与局部变量时,在方法内部默认是访问局部变量的数据,可以通过this关键字指定
访问成员变量的数据。
2. 在一个构造函数中可以调用另外一个构造函数初始化对象。
this关键字调用其他的构造函数要注意的事项:
1. this关键字调用其他的构造函数时,this关键字必须要位于构造函数中 的第一个语句。
2. this关键字在构造函数中不能出现相互调用 的情况,因为是一个死循环。
this关键字要注意事项:
1. 存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量(java 采取的是“就近原则”的机制访问的。)
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(); } }