public class Hero { String name; float hp; float armor; int moveSpeed; public Hero(){ } public Hero(String name,float hp){ this.name = name; this.hp = hp; } public void revive(Hero h){ h = new Hero("提莫",383); } public static void main(String[] args) { Hero teemo = new Hero("提莫",383); teemo.hp = teemo.hp - 400; teemo.revive(teemo); System.out.println(teemo.hp); } } 以上程序输出结果为 。
时间: 2023-06-19 16:03:38 浏览: 109
输出结果为 -17.0。
在程序中,首先创建了一个 Hero 对象 teemo,并且将其 hp 属性减去了 400,此时 hp 属性为 -17。然后调用 revive 方法,传入的参数是 teemo 对象本身。在 revive 方法中,重新创建了一个名为 h 的 Hero 对象,但是这个对象并没有与外部的 teemo 对象产生任何关联,因此 revive 方法结束后,teemo 对象的属性值仍然是 -17。最后输出 teemo.hp 的值,因此输出结果为 -17.0。
相关问题
5.在方法中,使参数引用指向一个新的对象,外面的引用是指向原来的对象?还是新的对象? public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public Hero(){ } public Hero(String name,float hp){ this.name = name; this.hp = hp; } //复活 public void revive(Hero h){ h = new Hero("提莫",383); } public static void main(String[] args) { Hero teemo = new Hero("提莫",383); //受到400伤害,挂了 teemo.hp = teemo.hp - 400; teemo.revive(teemo); //问题: System.out.println(teemo.hp); 输出多少? 怎么理解? } }
在这段代码中,`revive`方法中的参数`h`是一个局部变量。当我们在方法内部将`h`指向新的`Hero`对象时,只是改变了局部变量的引用,而不会对外部的引用产生影响。
因此,在`main`方法中,调用`revive`方法后,`teemo`引用仍然指向原来的对象,而不是新创建的对象。所以打印`teemo.hp`输出的结果仍然是原来对象的血量减去400。
所以,输出结果为:-17
这是因为在`main`方法中,`teemo.hp = teemo.hp - 400;`执行后,`teemo.hp`的值变为-17。而在`revive`方法中创建的新对象并没有对外部的引用产生影响。
4.为Hero设计4个参数的构造方法 这四个参数分别是 String heroName float heroHP float heroArmor int heroMoveSpeed
好的,以下是为Hero设计的四个参数的构造方法:
```java
class Hero {
String name;
float hp;
float armor;
int moveSpeed;
public Hero(String heroName, float heroHP, float heroArmor, int heroMoveSpeed) {
name = heroName;
hp = heroHP;
armor = heroArmor;
moveSpeed = heroMoveSpeed;
}
}
public class Main {
public static void main(String[] args) {
Hero hero = new Hero("英雄", 100.0f, 50.0f, 300);
System.out.println("英雄名称:" + hero.name);
System.out.println("英雄生命值:" + hero.hp);
System.out.println("英雄护甲值:" + hero.armor);
System.out.println("英雄移动速度:" + hero.moveSpeed);
}
}
```
以上代码为Hero类添加了一个四个参数的构造方法。在构造方法中,将传入的参数分别赋值给对应的成员变量。在Main类中进行了实例化操作,并打印了英雄的名称、生命值、护甲值和移动速度。
阅读全文