Java自学-类和对象 传参

摘要:
如果变量是类类型,例如Heroh=newHero();我们称之为h参考。)PublicclassHero{Stringname;//name floathp;//HP floatarmor;//armor intmoveSpeed;//移动速度publicHero(){}publicHero{this.name=name;this.HP=HP;}//复活publicvoid复活{h=newHero;}Publicstaticvoidmain{Heroteemo=newHero;//你受伤了400,你挂了tee-mo.hp=tee-mo.hp-400;tee-mo.revive;//问题是:System.out.println;输出多少?

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

免责声明:文章转载自《Java自学-类和对象 传参》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mysql数据库编码问题ASP生成静态Html文件技术杂谈下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core MVC基础知识

本章将和大家分享ASP.NET Core MVC的一些基础知识,包括Action接收参数、Action向视图传值、常用过滤器的使用、布局页、分部视图、视图组件ViewComponent的使用以及在视图中如何导入公共命名空间等,希望通过本文的分享能够对初学者有所帮助。下面我们直接进入主题。 首先来看一下我们的解决方案: 本Demo的Web项目为ASP.NE...

TCP/IP协议学习(五) 基于C# Socket的C/S模型

TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的;然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多。C#通过提供的Socket API实现了对TCP/IP协议栈的封装,让实现C/S模型变得更加简单,对于入门TCP/IP协议学习十分有帮助。 Socket通讯实现参考标准的流程如图所示, · 服...

Redis——Springboot集成Redis集群

前言 在 springboot 1.5.x版本的默认的Redis客户端是 Jedis实现的,springboot 2.x版本中默认客户端是用 lettuce实现的。 Lettuce 与 Jedis 比较 Lettuce 和 Jedis 的都是连接 Redis Server的客户端。 Jedis 在实现上是直连 redis server,多线程环境下非线...

(三)Java 高级特性

第一章 集合框架 集合框架是为表示和操作集合而规定的一种统一的标准系结构。集合框架都包含三个块内容对外的接口、接口的实现和集合运算的算法。 接口:表示集合的抽象数据类型,如Collection、List、Set、Map、Iterator。 实现:集合框架中接口的具体实现,如ArrayList、LinkedList、HashMap、HashSet。 算法:...

Dev控件常用属性【转载】

1、 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2、 如何新增一条记录 (1)、gridView.AddNewRow() (2)、实现 gridView_InitNewRow 事件 3、如何解决 GridControl 记录能获取而没有显示出来的问题 grid...

C++11 之 override

override 关键字 作用:在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。 使用以后有以下好处:1.可以当注释用,方便阅读.2.告诉阅读你代码的人,这是方法的复写.3.编译器可以给你验证 override 对应的方法名是否是你父类中所有的,如果没有...