this关键字的作用:让类中的一个方法去访问该类里的另一个方法或实例。
(因为现实中一个方法经常会依赖于另一个方法,所以this关键字很重要)
用法:
this可出现在非static的方法、构造器中。
——出现在非static的方法中,this就代表该方法的调用者
——出现在非static的构造器中,this就代表该构造器的调用者
(谁调用该方法/构造器,this就代表谁!)
——this可访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
**
(1)调用方法
**写一个类:
public class MyLiveGoals
{
//成员变量
int wifevalue;
double salary;
//方法
public void marry()
{
System.out.println("\n我一定能娶到老婆!");
}
public void value()
{
System.out.println("\n老婆的颜值打分:");
}
public void money()
{
System.out.println("\n一年工资:");
}
//测试方法
public void test()
{
this.marry(); //在此方法中访问该类的另一个方法
this.value();
System.out.println(this.wifevalue);
this.money();
System.out.println(this.salary);
}
}
**调用:
(需创建对象来调用该类,创建对象的根本途径是构造器!)
eg:
Person p = new MyLiveGoals();//调用类中的构造器来创建对象
——通过new调用了MyLiveGoals类的构造器,返回了一个MyLiveGoals实例,也称为MyLiveGoals对象,这个对象(实例,new出来的对象叫实例,也可以叫对象)被赋给MyLiveGoals类型的变量p。
变量p存在栈内存中,MyLiveGoals对象存放在堆内存中。
常写成:
var p = new MyLiveGoals.
因为变量p的类型一眼可知。
调用该类的方法:
public class GoalTest
{
public static void main(String[] args)
{
System.out.println("我的人生目标:");
MyLiveGoals g = new MyLiveGoals(); //创建g变量,使g可引用MyLiveGoals类的构造器
g.wifevalue = 9;
g.salary = 2000000;
g.test();
}
}
(2)调用构造器
//创建类
public class Apple
{
String color;
double weight;
//构造器用于对该对象执行初始化
public Apple(String color , double weight)//括号内为形参
{
//this的一个重要作用是用于区分方法或者构造器中的局部变量,尤其是与成员变量同名时
//构造器正在初始化谁,this就代表谁
this.color = color;//若没有this,则没有引用,直接输出string默认值null
this.weight = weight;//若没有this,则没有引用,直接输出double默认值0.0
}
}
**调用:**
public class AppleTest
{
public static void main(String[] args)
{
//此时构造器正在初始化ap,因此this代表ap
Apple ap = new Apple("黄色",0.34);//括号内为实参
System.out.println(ap.color);
System.out.println(ap.weight);
}
}
无this时的输出:
有this时的输出:
(3)访问类中的成员变量
用来区分成员变量 和局部变量(重名问题)
函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用**“this.成员变量名”**的方式来引用成员变量。
Public class Person
{
String name;//成员变量
int age;
public void setName(String name)
{
this.name = name;//因为同名,所以用this来引用成员变量
this.age = age;
}
}