Java自學-類和對象 傳參


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); 輸出多少? 怎么理解?
         
    }
      
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM