一、认识this
package com.pyk;
//this
/*this:
1、this是一个关键字,全部小写
2、this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身
3、this只能使用在实例方法中
4、this大部分情况下是可以省略的
*/
//定义一个”人“类
public class Person {
String name;//属性
//空构造器
public Person() {
}
//重载构造器
public Person(String s) {
name=s;
}
//定义一个“睡觉”的方法
public void sleep() {
//对象调用此方法,this便指当前对象
/*name是实例变量(必须采用"引用."的方法访问)*/
System.out.println(this.name+"在睡觉");
}
public static void main(String[] args) {
Person zs=new Person("张三");
Person ls=new Person("李四");
zs.sleep();
ls.sleep();
}
}
二、this避免就近原则
package com.pyk;
//this
//定义一个”人“类
public class Person {
//属性
int num;
//空构造器
public Person() {
}
//有参构造器
public Person(int a) {
num=a;
}
//方法
public void eat() {
int num=1000;//方法内部中的定义的局部变量不小心与属性重名
System.out.println("我喜欢的水果有"+num+"种");//则发生就近原则,此处age指的是离它最近的age(局部变量的age)
System.out.println("我喜欢的水果有"+this.num+"种");//避免就近原则,加上过关键字this
}
public static void main(String[] args) {
Person p =new Person(5);
p.eat();
}
}
三、this修饰属性
package com.pyk;
//this
//定义一个”人“类
public class Person {
//属性
int age;
String name;
double heigth;
//空构造器
public Person() {
}
//有参构造器
public Person(String name,int age,double heigth) {
//this修饰属性
this.age=age;
name=name;//没有用this修饰,此处name无法进行赋值,因此最后为系统默认值null
this.heigth=heigth;
}
//方法
public void grxx() {
System.out.println("我叫"+name+",今年"+age+"岁"+",身高为"+heigth+"cm");
}
public static void main(String[] args) {
Person p =new Person("张三",18,180.7);
p.grxx();
}
}
四、this修饰方法
package com.pyk;
//this
//定义一个”人“类
public class Person {
//this修饰方法
public void play() {
/*System.out.println("我喜欢打篮球");
System.out.println("我喜欢打羽毛球");*/
//play方法中有部分与plays方法重复,则可以this.plays()来进行引用
this.plays();//new的一个p对象调用play方法的时候,此处this指的就是当前的p对象,因此先在play方法里面调用plays方法,再执行play方法后面的(this可省略不写)
System.out.println("我喜欢跑步");
System.out.println("我喜欢打乒乓球");
}
public void plays() {
System.out.println("我喜欢打篮球");
System.out.println("我喜欢打羽毛球");
}
public static void main(String[] args) {
Person p =new Person();
p.play();
}
}
五、this修饰构造器
package com.pyk;
//this
//定义一个”人“类
public class Person {
//属性
String name;
int age;
//this修饰构造器
//同一个类中的构造器可以互相用this调用,注意:this修饰构造器必须放在第一行
//空构造器
public Person() {
}
//有参构造器
public Person(String name,int age) {
this(name);//调用一个参数的构造器
this.age=age;
}
public Person(String name) {
this.name=name;
}
public void zwjs() {
System.out.println("我叫"+name+"今年"+age+"岁");
}
public static void main(String[] args) {
Person p =new Person("张三",18);
p.zwjs();
}
}
|