1.this是什么?
this是一个引用类型,保存内存地址指向自身
在堆中的每一个java对象上都有this
2.this用在成员方法中: 谁去调用这个方法,this就代表谁,this指的就是当前对象(this.可以省略)
public class Demo01 {
public static void main(String[] args) {
MyDate M = new MyDate();
System.out.println();
MyDate M1 = new MyDate(2000,12);
System.out.println(M1.month+"月"+M1.year+"年");
}
}
class MyDate{
int year;
int month;
MyDate(){
}
MyDate(int _year,int _month){
year = _year;
month = _month;
}
}
public class Demo02 {
public static void main(String[] args) {
Worker w1 = new Worker(21, "Garb");// 创建对象
w1.Works();
}
}
class Worker {
int age;
String name;
Worker(int _age, String _name) {
age = _age;
name = _name;
}
public void Works() {
System.out.println(name + "在工作");
System.out.println(this.name+"在工作");//两行输出一样
}
}
this可以用来区分成员变量和局部变量
this.成员变量
public class Demo03 {
public static void main(String[] args) {
}
}
class vss{
int age;
private String name;
void aa(int age,String name) {//成员方法
this.name = name;
//this.成员变量 = 局部变量
this.age = age;
}
public String getName(){
return name;
//return this.name;实际上是这个
}
}
this不能使用在静态方法中
静态方法的执行,不需要java对象的存在,直接使用 类名. 进行访问。而this代表当前对象,所以静态方法中根本没有this。
public class Demo04 {
public static void main(String[] args) {
}
}
class person{
String name;
person (){
}
person(String name){
this.name = name;
}
public static void m1() {
//System.out.println(this.name);静态方法中不能使用this
person p1 = new person("lili");//静态方法中可以创建一个对象来访问name
System.out.println(p1.name);
}
}
this用在构造方法中---this(实参); 通过一个构造方法去调用另外一个构造方法(实现代码重用)
this必须出现在构造方法的第一行
class person{
String name;
int ID;
int age;
person(){
this(200012,18,"lili");//实现了代码的重用
}
person (int _ID,int _age,String _name){
ID = _ID;
age = _age;
name = _name;
}
}