不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java的 this 关键字
this关键字指向的是当前对象的引用。
三大作用:调用类的属性、方法、构造器和当前对象。
- 调用类的属性:
没有使用this的情况
class Person{
private String name;
private int age;
public Person(String name, int age){
name = name;
age = age;
}
public String getInfo() {
return "姓名:" + name + ",年龄:" + age;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person("tutu", 24);
System.out.print(person.getInfo());
}
}
程序输出
姓名:null,年龄:0
结论:
没有正确将内容赋给属性;
此时,为了明确哪个是类中的属性,需要加上this.类中属性。
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getInfo() {
return "姓名:" + name + ",年龄:" + age;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person("tutu", 24);
System.out.print(person.getInfo());
}
}
程序输出:
姓名:tutu,年龄:24
(通过构造方法为类中的属性赋值)
- 调用构造方法
class Person{
private String name;
private int age;
public Person() {
System.out.println("无参构造方法!");
}
public Person(String name){
this();
this.name = name;
}
public Person(String name, int age) {
this(name);
this.age = age;
}
public String getInfo() {
return "姓名:" + name + ",年龄:" + age;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person("tutu", 24);
System.out.print(person.getInfo());
}
}
程序输出:
无参构造方法! 姓名:tutu,年龄:24
注意:
1)this()调用其他构造方法的语句只能放在构造方法(在其他普通方法里是不行的)的首行;
2)在使用this调用其他构造方法的时候,至少有一个构造方法是不用this调用的。(必须要有结尾,不能无限期的调用下去,循环递归调用);
3)其他普通方法不能调用this()方法。
- 调用普通方法
class Person{
private String name;
private int age;
public Person() {
System.out.println("无参构造方法!");
}
public Person(String name){
this();
this.name = name;
}
public Person(String name, int age) {
this(name);
this.age = age;
}
public void print(){
System.out.println("~~~~~~~~~~~");
}
public String getInfo() {
this.print();
return "姓名:" + name + ",年龄:" + age;
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person("tutu", 24);
System.out.print(person.getInfo());
}
}
程序输出:
无参构造方法! ~~~~~~~~~~~ 姓名:tutu,年龄:24
注意:这个this可以省略。
- 调用当前对象
class Person{
private String name;
private int age;
public Person() {
System.out.println(this);
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person();
System.out.print(person);
}
}
程序输出:
Person@15db9742 Person@15db9742
结论:
用this调用的是当前对象。
浙公网安备 33010602011771号