类对象 this
this 即代表当前对象
可以但应打印当前地址
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//打印内存中的虚拟地址
public void show(){
System.out.println("打印this看到的虚拟地址: "+this);
}
public static void main(String[] args){
Hero garen = new Hero();
garen.name = "盖伦";
//直接打印对象,会希纳是该对象在内存中的虚拟地址
//格式:Hero@c17164,每次执行,得到的地址不一定一样
System.out.println("打印对象看到的虚拟地址: "+garen);
//调用show,打印该对象的this
garen.show();
Hero teemo = new Hero();
teemo.name = "提莫";
System.out.println("打印对象看到的虚拟地址: "+teemo);
teemo.show();
}
}
this关键字访问对象的属性
通过this调用其他的构造方法
/**
* 通过this调用其他的构造方法
* 如果要在一个构造方法中,调用另一个构造方法,可以调用this()
*/
public class Hero{
String name;//姓名
float hp;//血量
float armor;//护甲
int moveSpeed;//移动速度
//带一个参数的构造方法
public Hero(String name){
System.out.println("一个参数的构造方法");
this.name = name;
}
//带两个参数的构造方法
public Hero(String name,float hp){
this(name);
System.out.println("两个参数的构造方法");
this.hp =hp;
}
public static void main(String[] args){
Hero teemo = new Hero("提莫",383);
System.out.println(teemo.name);
}
}
结果:
一个参数的构造方法
两个参数的构造方法
提莫
练习题
/**
* 需求:设计一个构造方法,但是参数名称不太一样
* String name
* float hp
* float armor
* int moveSpeed
* 在构造方法中调用 ”public Hero(String name,float hp)“
* */
public class Hero{
String name;//姓名
float hp;//血量
float armor;//护甲
int moveSpeed;//移动速度
public Hero(){}
//带有两个参数的构造方法
// public Hero(String name,float hp,float armor,int moveSpeed){
//
// }
public Hero(String name,float hp){
this.name = name;
this.hp = hp;
}
public Hero(String name,float hp,float armor,int moveSped) {
this(name,hp);
this.armor = armor;
this.moveSpeed = moveSpeed;
}
}