this关键字是类里用来区分全局变量与局部变量的。
this关键字
-
this的引用:
- 在类中,有局部变量和类的属性同名的情况,而在方法与构造器中变量又是就近原则
- 所以引出this来解决此问题
- 且this.变量必是指类中的属性,方便与局部变量区分
-
this使用细节:
① this关键字可以用来访问本类的属性、方法、构造器
② this用于区分当前类的属性和局部变量
③ 访问成员方法的语法:this.方法名(参数列表)
④ 访问构造器的语法:this(参数列表)
注意:④只能在构造器中使用,且规定必须放在第一条语句
即,只能在构造器中访问另外一个构造器 -
this只能在类里面中使用,不能在类定义外使用
接下来看个例子:
public class ThisExercise{
//编写一个main方法
public static void main(String[] args){
/*this练习:
定义类Person,里面有age、name属性,并提供comepareTo方法用来比较两个人是否相等,相等返回true,否则返回false
*/
Person p1 = new Person(18, "part");
Person p2 = new Person(20, "jary");
System.out.println("比较结果=" + p1.comepareTo(p2));
}
}
class Person{
int age;
String name;
public Person(int age, String name){
this.age = age;//this.变量必是指类中的属性与局部变量区分开
this.name = name;//this.name指类中的属性,name则是形参
}
public boolean comepareTo(Person p){
return this.age == p.age && this.name == p.name;
}
}
运行结果:
构造器
构造器其实没有像它的名字一样神秘,就是和方法相似的东西,只是没有方法里的返回值类型。
-
构造方法又称构造器(constructor),是类的一种特殊方法,它的主要作用是完成对新对象的初始化
特点:
①方法名和类名相同
②没有返回值
③在创建对象时,系统会自动调用该类的构造器完成对对象的初始化 -
基本语法:[修饰符] 方法名 (形参列表){方法体;}
-
构造器:
①构造器的修饰符可以默认(不写就是默认)
②方法名和类名必须一致
③构造器没有返回值
④构造器的调用,由系统完成(不再需要对象.构造器,即直接在创建对象时就调用了)
习题辅助理解:
public class ConstructorDetail{
//编写一个main方法
public static void main(String[] args){
//构造器也可以重载
Person wolfpeople = new Person("缄默德克萨斯",22);//构造器由系统调用
Person wolf = new Person(22);
//这里Person(22)就直接调用了构造器,不用再通过对象调用,直接由系统调用
}
}
class Person{
String name = "德克萨斯";
int age = 14;
//第1个构造器
public Person(String pname, int page){//方法名和类名必须一致
name = pname;
age = page;
System.out.println("限定:"+ name+" 年龄:"+age);
}
//第2个构造器(也是重载)
public Person(int page){
page = age;
System.out.println("干员:"+ name+" 年龄:"+age);
}
}
运行结果: