每日学习-Java基础(九)类和对象6(传参)

一、基本数据类型传参
基本数据类型https://blog.csdn.net/weixin_41117393/article/details/102861389

// 基本类型传参
public class Hero {
	String name; // 英雄名称
	float hp; // 血量
	float armor; // 护甲
	int moveSpeed; // 移动速度

	// heal 回血
	void heal(int xp) {
		hp += xp;
		xp = 0; // 这个血瓶空啦
	}

	public static void main(String[] args) {
		// 基本类型传参
		// 8种基本数据类型
		// 变量的值不变
		Hero h1 = new Hero();
		int xp = 100;
		h1.heal(xp);
		System.out.println("xp:" + xp); // 100 
		// 此处的xp不变,传参时只是赋值,与函数内的xp是不同的变量
	}
}

运行结果:
在这里插入图片描述
二、类类型传参

// 类类型传参
public class Hero {
	String name; // 英雄名称
	float hp; // 血量
	float armor; // 护甲
	int moveSpeed; // 移动速度

	Hero(String name, float hp) {
		this.name = name;
		this.hp = hp;
	}

	// attack 攻击
	void attack(Hero h, int damage) {
		h.hp -= damage; // 受到damage攻击,血量减少damage
	}

	public static void main(String[] args) {
		// 类类型传参 引用
		// 对象的值改变
		Hero garen = new Hero("盖伦", 616);
		Hero teemo = new Hero("提莫", 383);
		System.out.println("teemo.hp:before:" + teemo.hp); // 383.0

		garen.attack(teemo, 100);
		// h = teemo; // 一个对象,多个引用
		// https://blog.csdn.net/weixin_41117393/article/details/103522415
		// teemo h
		//     ↓ ↓
		//     提莫
		// teemo、h 这2个引用 都指向 对象提莫

		// 引用h改变对象的值,teemo也指向对象,因此获取的值就是改变后的值
		System.out.println("teemo.hp:after:" + teemo.hp); // 283.0
	}
}

运行结果:
在这里插入图片描述
三、不一样的类类型传参
// 哪个孙悟空是真的呢?

public class Hero {
	String name; // 英雄名称
	float hp; // 血量
	float armor; // 护甲
	int moveSpeed; // 移动速度

	Hero(String name, float hp) {
		this.name = name;
		this.hp = hp;
	}

	// attack 攻击
	void attack(Hero h, int damage) {
		h.hp -= damage; // 受到damage攻击,血量减少damage
	}

	// revive 复活
	void revive(Hero h) {
		h = new Hero("提莫", 383);
	}

	public static void main(String[] args) {

		// 类类型传参 引用
		// 对象的值改变
		Hero garen = new Hero("盖伦", 616);
		Hero teemo = new Hero("提莫", 383);
		System.out.println("teemo.hp:before:" + teemo.hp); // 383.0

		garen.attack(teemo, 400); // 提莫挂啦
		// teemo h
		//     ↓ ↓
		//     提莫 受到袭击的提莫 血量 383-400 = -17

		teemo.revive(teemo); // 复活提莫,提莫是否复活?
		// h
		// ↓
		// 提莫 新的提莫 血量383

		// 引用h指向新的提莫,而不是指向被袭击的提莫
		System.out.println("teemo.hp:after:" + teemo.hp); // 这是被袭击的提莫
	}
}

运行结果:
在这里插入图片描述
我的学习源泉:https://how2j.cn/k/class-object/class-object-class-attribute/296.html?p=114999
Java自学网站:https://how2j.cn?p=114999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值