电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺析Java 對(duì)象引用和對(duì)象本身

瀏覽:56日期:2022-08-26 08:50:55

示意圖

淺析Java 對(duì)象引用和對(duì)象本身

應(yīng)用場(chǎng)景

1.賦值

2.方法入?yún)?/p>

3.調(diào)用方法和被調(diào)用方法

代碼

import com.alibaba.fastjson.JSONObject;import java.util.ArrayList;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author gzh * @createTime 2020/8/25 8:41 AM */public class Test { private static final Logger log = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { // List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setName('gzh1'); userList.add(user1); User user2 = new User(); user2.setName('gzh2'); userList.add(user2); log.info(JSONObject.toJSONString(userList)); //// for (User user: userList) { //這里的list元素最終是舊值,因?yàn)闆]有被新的對(duì)象本身直接賦值// log.info(JSONObject.toJSONString(user));// User user3 = new User();// user3.setName('gzh3');//// user = user3;// log.info(JSONObject.toJSONString(user));// }// for (int i = 0; i < userList.size(); i++) { //這里的list元素最終是新值,因?yàn)楸恍碌膶?duì)象本身直接賦值// //// User user = userList.get(i);//// //// log.info(JSONObject.toJSONString(user));// User user3 = new User();// user3.setName('gzh3');// user = user3;//// //// log.info(JSONObject.toJSONString(user));// userList.set(i,user);// } for (int i = 0; i < userList.size(); i++) { //同上:這里的list元素最終是新值,因?yàn)楸恍碌膶?duì)象本身直接賦值 // log.info(JSONObject.toJSONString(userList.get(i))); // User user3 = new User(); user3.setName('gzh3'); // userList.set(i,user3); log.info(JSONObject.toJSONString(userList.get(i))); } // log.info(JSONObject.toJSONString(userList)); }}

執(zhí)行結(jié)果

19:49:39.062 [main] INFO Test - [{'name':'gzh1'},{'name':'gzh2'}]19:49:39.064 [main] INFO Test - {'name':'gzh1'}19:49:39.065 [main] INFO Test - {'name':'gzh3'} //因?yàn)閘ist的元素被新的對(duì)象本身直接賦值,所以值改變了19:49:39.065 [main] INFO Test - {'name':'gzh2'}19:49:39.065 [main] INFO Test - {'name':'gzh3'} //同上19:49:39.065 [main] INFO Test - [{'name':'gzh3'},{'name':'gzh3'}] //同上

import com.alibaba.fastjson.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author gzh * @createTime 2020/8/25 8:41 AM */public class Test2 { private static final Logger log = LoggerFactory.getLogger(Test2.class); public static void main(String[] args) { User user = new User(); user.setName('gzh1'); log.info('調(diào)用方法之前:{}',JSONObject.toJSONString(user)); updateUser2(user); log.info('調(diào)用方法之后:{}',JSONObject.toJSONString(user)); } private static void updateUser(User user) { // log.info(JSONObject.toJSONString(user)); // User user2 = new User(); user2.setName('gzh2'); user = user2; // log.info(JSONObject.toJSONString(user)); } private static void updateUser2(User user) { // log.info(JSONObject.toJSONString(user)); user.setName('gzh2'); // log.info(JSONObject.toJSONString(user)); }}

運(yùn)行結(jié)果

19:50:35.072 [main] INFO Test2 - 調(diào)用方法之前:{'name':'gzh1'}19:50:35.077 [main] INFO Test2 - {'name':'gzh1'}19:50:35.077 [main] INFO Test2 - {'name':'gzh2'}19:50:35.077 [main] INFO Test2 - 調(diào)用方法之后:{'name':'gzh2'} //因?yàn)槿雲(yún)⑷匀恢赶蛲粋€(gè)對(duì)象本身,并沒有被新的對(duì)象本身重新賦值,所以入?yún)⒌闹?即對(duì)象本身)改變之后,入?yún)⒌脑紝?duì)象引用的值(即對(duì)象本身)也改變了。

總結(jié)

1.不同的對(duì)象引用,存放在不同的內(nèi)存地址,而該內(nèi)存地址存儲(chǔ)的值又是對(duì)象本身的內(nèi)存地址,對(duì)象引用正是通過(guò)對(duì)象本身的內(nèi)存地址指向?qū)ο蟊旧怼?/p>

2.對(duì)象引用的值(即指向的對(duì)象本身)什么時(shí)候會(huì)被改變?什么時(shí)候不會(huì)被改變?

只有直接賦值了新的對(duì)象本身,對(duì)應(yīng)引用的值才會(huì)改變。

不同的對(duì)象引用沒有關(guān)系,1)如果被同一個(gè)對(duì)象本身賦值,那么兩個(gè)對(duì)象引用都指向同一個(gè)對(duì)象本身,除此之外,就沒有其他的關(guān)系,不同的對(duì)象引用是互相獨(dú)立的,且他們之間沒有任何關(guān)系2)如果一個(gè)對(duì)象引用被新的對(duì)象本身賦值,另一個(gè)對(duì)象引用仍然是指向舊的對(duì)象本身,所以再次證明兩個(gè)對(duì)象引用之間是沒有任何關(guān)系的,兩個(gè)對(duì)象本身之間也是沒有任何關(guān)系的。

3.如果改的是同一個(gè)對(duì)象本身,那么對(duì)象引用1和對(duì)象引用2的值同時(shí)改變。

4.如果對(duì)象引用2是指向了新的對(duì)象,那么對(duì)象引用2的值改變,對(duì)象引用1的值不變。

最佳實(shí)踐

1.如果想要改變引用的值,應(yīng)該直接賦值,而不是間接通過(guò)其他對(duì)象引用來(lái)改變。

2.如果是調(diào)用方法修改,應(yīng)該通過(guò)返回值修改,而不是通過(guò)對(duì)象引用。

以上就是淺析Java 對(duì)象引用和對(duì)象本身的詳細(xì)內(nèi)容,更多關(guān)于Java 對(duì)象引用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: U拓留学雅思一站式服务中心_留学申请_雅思托福培训 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 圆周直径尺-小孔内视镜-纤维研磨刷-东莞市高腾达精密工具 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | sfp光模块,高速万兆光模块工厂-性价比更高的光纤模块制造商-武汉恒泰通 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 | 青岛美佳乐清洁工程有限公司|青岛油烟管道清洗|酒店|企事业单位|学校工厂厨房|青岛油烟管道清洗 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 粘度计,数显粘度计,指针旋转粘度计 | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 仿清水混凝土_清水混凝土装修_施工_修饰_保护剂_修补_清水混凝土修复-德州忠岭建筑装饰工程 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 洁净实验室工程-成都手术室净化-无尘车间装修-四川华锐净化公司-洁净室专业厂家 | FFU_空气初效|中效|高效过滤器_空调过滤网-广州梓净净化设备有限公司 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 |