一、基本数据类型传参
基本数据类型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