zoukankan      html  css  js  c++  java
  • 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); 输出多少? 怎么理解?
             
        }
          
    }
  • 相关阅读:
    12-五子棋游戏:享元模式
    11-制作糖醋排骨:外观模式
    10-蒸馒头:装饰者模式
    09-公司层级结构:组合模式
    08-开关与电灯:桥接模式
    07-电源转换:适配器模式
    将博客搬至CSDN
    iview和element中日期选择器快捷选项的定制控件
    详解AJAX工作原理以及实例讲解(通俗易懂)
    最全肌肉锻炼动图
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11437924.html
Copyright © 2011-2022 走看看