| 
			
	
	
	
						  
						
						
						
	
 
	本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
	 
			 
	10分59秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项) 步骤 1 : 基本类型传参 步骤 2 : 引用与= 步骤 3 : 类类型传参 步骤 4 : 练习-传参 步骤 5 : 答案-传参 
					基本类型传参
 
					
				在方法内,无法修改方法外的基本类型参数 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);
        
    }
     
}
 
								
										
									
								
							
					如果一个变量是基本类型 
					
				比如 int hp = 50; 我们就直接管hp叫变量 =表示赋值的意思。 如果一个变量是类类型 比如 Hero h = new Hero(); 我们就管h叫做引用。 =不再是赋值的意思 =表示指向的意思 比如 Hero h = new Hero(); 这句话的意思是 引用h,指向一个Hero对象 
					类类型又叫引用
 
					
				第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); 输出多少? 怎么理解?
        
    }
     
}
 
								
										
									
								
							
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			 
			 
			
			
			
			
			
		
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 
 |