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); 输出多少? 怎么理解?
             
        }
          
    }
  • 相关阅读:
    关于C++名字空间
    选择组合OR继承?
    编译器为C++ 空类自动生成的成员函数
    函数返回值为引用类型
    关于数据库存储过程分页DatagridView BindingNavigator 控件的详细实现
    ADO.NET 安全编码指南 来自MSDN
    ADO.NET中调用存储过程
    视图
    高效使用连接的模式
    GROUP BY, HAVING, COMPUTE, ORDER BY 语句
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11437924.html
Copyright © 2011-2022 走看看