本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
9分46秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 引用和指向 步骤 2 : 多个引用,一个对象 步骤 3 : 一个引用,多个对象 步骤 4 : 练习-引用 步骤 5 : 答案-引用 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建了一个对象,没有办法访问它 为了访问这个对象,会使用引用来代表这个对象 Hero h = new Hero(); h这个变量是Hero类型,又叫做引用 =的意思指的h这个引用代表右侧创建的对象 “代表” 在面向对象里,又叫做“指向” public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public static void main(String[] args) {
//创建一个对象
new Hero();
//使用一个引用来指向这个对象
Hero h = new Hero();
}
}
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public static void main(String[] args) { //创建一个对象 new Hero(); //使用一个引用来指向这个对象 Hero h = new Hero(); } }
引用有多个,但是对象只有一个。
在这个例子里,所有引用都指向了同一个对象。 对象就像 "房产", 引用就像"房产证" 房产证的复印件可以有多张,但是真正的"房产" 只有这么一处 public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public static void main(String[] args) {
//使用一个引用来指向这个对象
Hero h1 = new Hero();
Hero h2 = h1; //h2指向h1所指向的对象
Hero h3 = h1;
Hero h4 = h1;
Hero h5 = h4;
//h1,h2,h3,h4,h5 五个引用,都指向同一个对象
}
}
第8行,引用garen指向新创建的对象(对象1)
第9行,同一个引用garen指向新创建的对象(对象2) 这个时候,对象1,就没有任何引用指向了 换句话说,就没有任何手段控制和访问该对象,那么该对象就变得没有意义。 package charactor;
public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero garen = new Hero();
garen = new Hero();
}
}
package charactor; public class Hero { public String name; protected float hp; public static void main(String[] args) { Hero garen = new Hero(); garen = new Hero(); } }
如代码,问题:
h4所指向的对象和h2所指向的对象,是否是同一个对象? package charactor;
public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
}
}
package charactor; public class Hero { public String name; protected float hp; public static void main(String[] args) { Hero h1 = new Hero(); Hero h2 = new Hero(); Hero h3; Hero h4; h3 = h1; h4 = h3; } }
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-07-27
沃特发
13 个答案
lagu 跳转到问题位置 答案时间:2024-05-07 public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
System.out.println("h1:"+h1);
System.out.println("h2:"+h2);
System.out.println("h3:"+h3);
System.out.println("h4:"+h4);
658721cm 跳转到问题位置 答案时间:2024-04-17 不同
hncj指尖风雨 跳转到问题位置 答案时间:2023-12-28 不是
java贝贝 跳转到问题位置 答案时间:2023-12-27 不是
木木程序员 跳转到问题位置 答案时间:2022-11-23 不是
lanren9 跳转到问题位置 答案时间:2022-11-08 不是
Java_Zheuser 跳转到问题位置 答案时间:2022-04-11 不是 kuxingsengmachao 跳转到问题位置 答案时间:2022-02-06 h4指向的是h1在堆中new出来的对象,和h2所指向的对象并不是同一个对象
从入门到入坟 跳转到问题位置 答案时间:2022-01-28 不是
白咩咩 跳转到问题位置 答案时间:2021-11-29 h1,h3,h4指向了heap中的一个实体,而h2指向了另一个实体
phm228 跳转到问题位置 答案时间:2021-10-20 不是一个对象。
szy000178519 跳转到问题位置 答案时间:2021-10-08 创建了两个对象,h1,h3,h4指向对象1,h2指向对象2
浮云有水 跳转到问题位置 答案时间:2021-07-27 所以h1,h3,h4指向的是同一对象1,h2指向的是对象2
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-09-25
自己画的图解
10 个答案
wxw727123 跳转到问题位置 答案时间:2021-10-14 public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
System.out.println("h1:"+h1);
System.out.println("h2:"+h2);
System.out.println("h3:"+h3);
System.out.println("h4:"+h4);
System.out.println("h1,h3,h4指向同一个对象,h2单独指向一个对象");
}
}
zh311184 跳转到问题位置 答案时间:2021-07-07 在那个地方看的视频?stack都不开口怎么出栈
1922649889 跳转到问题位置 答案时间:2021-06-17 不是, wxtlove1314 跳转到问题位置 答案时间:2021-06-02 Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
前两行表示创建了两个具有地址的数;其地址不同 第三行第四行表示定义两个变量 第五行把h1的地址给了h3,此时h3指向的地方与h1相同 第六行把h3的地址(也就是h1的地址),此时h4,h3,h1地址相同 h2的地址不同,h1,h2都存储与椎里面 无限月度 跳转到问题位置 答案时间:2021-05-02 h4指向h1的 h2 指向h2 大数据工程师 跳转到问题位置 答案时间:2021-04-05 这种的话,画图确实比较好理解
wwzjavaer 跳转到问题位置 答案时间:2021-03-18 下雨 跳转到问题位置 答案时间:2021-03-17 System.out.println(h1);
System.out.println(h2);
System.out.println(h3);
System.out.println(h4);
解臾 跳转到问题位置 答案时间:2021-03-13 babab 跳转到问题位置 答案时间:2020-10-19 public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
System.out.println("h4的地址为:" + h4);
System.out.println("h2的地址为:" + h2);
}
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-06-20
不是同一个对象也不是同一个值
2020-06-08
不同的指向
2020-03-08
打印里的name指的是谁?
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 31 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|