传参:
变量有两种类型 基本类型 和类类型
参数也是变量,所以传参分为
基本类型传参
类类型传参
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);
}
}
预计打印结果会是xueping=0;
但是:
如果一个变量是基本类型
比如 int hp = 50;
我们就直接管hp叫变量
=表示赋值的意思。
如果一个变量是类类型
比如 Hero h = new Hero();
我们就管h叫做引用。
=不再是赋值的意思
=表示指向的意思
比如 Hero h = new Hero();
这句话的意思是
引用h,指向一个Hero对象
这在最之前的引用部分 有过论述。
类类型传参
以下示例,通过调用garen.attack(teemo, 100); 使得这两个引用都指向了同一个对象
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);
}
也就是 引用teemo garen 都指向了同样一个对象
这里的 System.out.println(teemo.hp);
能够打印出逻辑上的正确数字 因为变量都在方法之内的不存在方法之外。
以下就是方法之外的变量不可改变:
public void revive(Hero h){
h = new Hero("提莫",383);
}
public static void main(String[] args) {
Hero teemo = new Hero("提莫",383);
teemo.hp = teemo.hp - 400;
teemo.revive(teemo);
System.out.println(teemo.hp);
打印之后 数字为-17 并非383;
包的创建:
根据个人的需求进行类的分类也就是打包装进不同的包
这在做一个项目的时候 特别管用 工作也会提高效率。
值得注意的是:
在一个包中进行编译时 要想用到其他包的类 需要用到import 之后包名.类名
package le;
import property.Weapon;