how2j.cn


工具版本兼容问题
this这个关键字,相当于普通话里的“

小明说 “我吃了” 这个时候,“” 代表小明
小红说 “我吃了” 这个时候,“” 代表小红
""代表当前人物

this这个关键字,相当于普通话里的“
this即代表当前对象

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



12分37秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : this代表当前对象   
步骤 2 : 通过this访问属性   
步骤 3 : 通过this调用其他的构造方法   
步骤 4 : 练习-构造方法(this)   
步骤 5 : 答案-构造方法(this)   

步骤 1 :

this代表当前对象

this代表当前对象
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 //打印内存中的虚拟地址 public void showAddressInMemory(){ System.out.println("打印this看到的虚拟地址:"+this); } public static void main(String[] args) { Hero garen = new Hero(); garen.name = "盖伦"; //直接打印对象,会显示该对象在内存中的虚拟地址 //格式:Hero@c17164 c17164即虚拟地址,每次执行,得到的地址不一定一样 System.out.println("打印对象看到的虚拟地址:"+garen); //调用showAddressInMemory,打印该对象的this,显示相同的虚拟地址 garen.showAddressInMemory(); Hero teemo = new Hero(); teemo.name = "提莫"; System.out.println("打印对象看到的虚拟地址:"+teemo); teemo.showAddressInMemory(); } }
步骤 2 :

通过this访问属性

通过this关键字访问对象的属性
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 //参数名和属性名一样 //在方法体中,只能访问到参数name public void setName1(String name){ name = name; } //为了避免setName1中的问题,参数名不得不使用其他变量名 public void setName2(String heroName){ name = heroName; } //通过this访问属性 public void setName3(String name){ //name代表的是参数name //this.name代表的是属性name this.name = name; } public static void main(String[] args) { Hero h =new Hero(); h.setName1("teemo"); System.out.println(h.name); h.setName2("garen"); System.out.println(h.name); h.setName3("死歌"); System.out.println(h.name); } }
步骤 3 :

通过this调用其他的构造方法

如果要在一个构造方法中,调用另一个构造方法,可以使用this()
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 //带一个参数的构造方法 public Hero(String name){ System.out.println("一个参数的构造方法"); this.name = name; } //带两个参数的构造方法 public Hero(String name,float hp){ this(name); System.out.println("两个参数的构造方法"); this.hp = hp; } public static void main(String[] args) { Hero teemo = new Hero("提莫",383); System.out.println(teemo.name); } }
步骤 4 :

练习-构造方法(this)

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
参考练习-构造方法 设计一个构造方法,但是参数名称不太一样,分别是
String name
float hp
float armor
int moveSpeed

不仅如此,在这个构造方法中,调用这个构造方法

public Hero(String name,float hp)
步骤 5 :

答案-构造方法(this)

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

5分46秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


public class Hero { String name; // 姓名 float hp; // 血量 float armor; // 护甲 int moveSpeed; // 移动速度 // 带一个参数的构造方法 public Hero(String name) { System.out.println("一个参数的构造方法"); this.name = name; } // 带两个参数的构造方法 public Hero(String name, float hp) { this(name); System.out.println("两个参数的构造方法"); this.hp = hp; } // 带有四个参数的构造方法 public Hero(String name, float hp, float armor, int moveSpeed) { this(name,hp); this.armor = armor; this.moveSpeed = moveSpeed; } public static void main(String[] args) { Hero teemo = new Hero("提莫", 383); System.out.println(teemo.name); Hero db = new Hero("死哥",400,27,360); System.out.println(db.moveSpeed); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-07-06 交作业
ChingNolan



作业
	public Hero (String name,float hp,float armor,int moveSpeed) {
		this(name,hp);
		this.armor = armor;
		this.moveSpeed = moveSpeed;
	}

							


3 个答案

lzt501 答案时间:2018-07-09
盲僧400.0

黄金左岸 答案时间:2018-07-07
要求是设计四个参数的构造函数,并调用两个参数的构造函数

eskii 答案时间:2018-07-07




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-07-05 作业
Keikei



写作业
package j2se;
//为Hero设计4个参数的构造方法
//这四个参数分别是 
//String heroName
//float heroHP
//float heroArmor
//int heroMoveSpeed
//参考练习-构造方法 设计一个构造方法,但是参数名称不太一样,分别是 
//String name
//float hp
//float armor
//int moveSpeed
//
//不仅如此,在这个构造方法中,调用这个构造方法
//public Hero(String name,float hp)

public class HeroTest01 {
	String name; // 姓名

	float hp; // 血量

	float armor; // 护甲

	int moveSpeed; // 移动速度
	
	//无参构造方法
	public HeroTest01() {
		
	}
	//2参数构造方法
	public HeroTest01(String name,float hp) {
		this.name = name;
		this.hp = hp;
		System.out.println(name + '\n' + hp);
		
	}
	
	//4参数构造方法
	public HeroTest01(String name, float hp, float armor, int moveSpeed) {
		this(name,hp);
		this.name = name;
		this.hp = hp;
		this.armor = armor;
		this.moveSpeed = moveSpeed;
		System.out.println(name + '\n' + hp+ '\n' + armor+ '\n' + moveSpeed);
	}
	
	public static void main(String[] args) {
		HeroTest01 teemo = new HeroTest01("提莫",400f,5f,2);
		

	}

}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-06-14 交作业
2018-06-11 为啥我的第二个构造函数里面调用this.(name)提示错误?
2018-06-01 交作业呀交作业
2018-05-29 两个虚拟地址是一样的
2018-05-15 交作业
2018-05-06 作业
2018-05-06 这个为什么提示错误啊!
2018-04-24 提交作业,this
2018-04-24 交作业
2018-04-20 【交作业】this
2018-04-20 交作业-打卡
2018-04-11 打卡
2018-03-21 所以说,this()调用的其他构造方法名要和this所在的方法名一致是么?
2018-03-19 答案
2018-03-11 交作业
2018-03-02 为什么步骤一里的方法中的this就指的是地址,而不是其他的?
2017-12-02 作业
2017-11-14 一个关于 “this的指向” 的问题
2017-10-31 构造函数重载时,每次都会调用一个参数的函数,尽管实例化时有两个参数,或者多个参数
2017-10-15 小疑问
2017-09-26 交作业
2017-09-17 Java的构造函数没有默认值是吗?
2017-06-19 作业
2017-04-17 this(name); 这个是什么意思呢
2017-03-12 为什么提示我叫我重新命名方法名啊
2017-02-15 this调用问题
2017-01-14 public void 和public 用法的区别
2016-11-18 被调用方法的参数名和调用方法的参数名可以不同吗,this(name,hp)name和hp是类的变量还是方法的参数呢?
2016-09-26 个人理解,看注释部分,不知道对不对
2016-07-27 this()形式调用构造方法和用this调用变量的区别。
2016-06-17 计算量的问题
2016-06-13 是不是用this,就不用在()里面输入不同名字的构造方法??直接用 name, hp等
2016-05-10 第19行this(name); 是什么意思
2016-04-24 步骤三为什么会将两个构造方法里的语句都输出啊?
2016-04-16 请问要在一个构造方法中调用两个构造方法应怎样实现?




提问之前请登陆
关于 JAVA 基础-类和对象-this 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 620943819
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图