Java中的傳參
變量有兩種類型 基本類型 和類類型
參數也是變量,所以傳參分為
基本類型傳參
類類型傳參
步驟 1 : 基本類型傳參
基本類型傳參
在方法內,無法修改方法外的基本類型參數
public class Hero {
String name; //姓名
float hp; //血量
float armor; //護甲
int moveSpeed; //移動速度
public Hero(){
}
//回血
public void huixue(int xp){
hp = hp + xp;
//回血完畢后,血瓶=0
xp=0;
}
public Hero(String name,float hp){
this.name = name;
this.hp = hp;
}
public static void main(String[] args) {
Hero teemo = new Hero("提莫",383);
//血瓶,其值是100
int xueping = 100;
//提莫通過這個血瓶回血
teemo.huixue(xueping);
System.out.println(xueping);
}
}
步驟 2 : 引用與=
如果一個變量是基本類型
比如 int hp = 50;
我們就直接管hp叫變量
=表示賦值的意思。
如果一個變量是類類型
比如 Hero h = new Hero();
我們就管h叫做引用。
=不再是賦值的意思
=表示指向的意思
比如 Hero h = new Hero();
這句話的意思是
引用h,指向一個Hero對象
步驟 3 : 類類型傳參
類類型又叫引用
第24行的引用 teemo與 第17行的引用hero,是不同的引用
通過調用garen.attack(teemo, 100); 使得這兩個引用都指向了同一個對象
所以在第18行hero.hp = hero.hp - damage; 就使得該對象的hp值,發生了變化
因此第25行,打印該對象的Hp值就是變化后的值
public class Hero {
String name; // 姓名
float hp; // 血量
float armor; // 護甲
int moveSpeed; // 移動速度
public Hero(String name, float hp) {
this.name = name;
this.hp = hp;
}
// 攻擊一個英雄,並讓他掉damage點血
public void attack(Hero hero, int damage) {
hero.hp = hero.hp - damage;
}
public static void main(String[] args) {
Hero teemo = new Hero("提莫", 383);
Hero garen = new Hero("蓋倫", 616);
garen.attack(teemo, 100);
System.out.println(teemo.hp);
}
}
練習: 傳參
(在方法中,使參數引用指向一個新的對象
外面的引用是指向原來的對象?還是新的對象?)
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); 輸出多少? 怎么理解?
}
}