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

您的位置:首頁技術文章
文章詳情頁

淺析java中String類型中“==”與“equal”的區別

瀏覽:4日期:2022-08-26 14:08:51

一、前言

1.1、首先很多人都知道,String中用“==”比較的是地址,用equals比較的是內容,很多人對此用的是記憶法,通過記憶來加強此的引用,但是其真正的原理其實并不難,當我們真正明白其為什么的時候,用起來也會更加靈活,更加有底氣(形容得不太好,朋友別見怪);

二相關知識的準備

類型常量池 運行時常量池 字符串常量池

我們今天討論的主題是當然是字符串常量池:為什么在這要把另外兩個常量池拿出說一下呢,首先小生我在網上或者cnds上看到很多人在爭論字符串常量池是存在與方法區還是堆里面,因此我在這里面非常負責任的告訴各位讀者:1、類型常量池,存放在方法區里面,每個class文件都有一個2、運行時常量池、存放在方法區里面,所有class共用3、字符串常量池:存放在堆區里面而且字符串常量池有一個特點:存放的常量唯一:三、 開始

3.1,情況一

public class Test2 {public static void main(String[] args) {String a ='張敬軒';String b ='張敬軒';System.out.println(a == b);System.out.println(a.equals(b));}}

運行結果:

淺析java中String類型中“==”與“equal”的區別

true true

解釋:因為當我們String a = “張敬軒”;的時候,會在堆里面的字符串常量池里面“搜索”是否有“張敬軒”這個對象,

有:就會將“張敬軒這個對象的地址指向a” 沒有:就會在字符串常量池里面新建立一個“張敬軒”,然后就會把地址引用賦值給a

當再聲明String b = “張敬軒';和第一次聲明String = “張敬軒”;一樣,先”搜索“,然后因為已經存在了”張敬軒“這個對象,那么就不會再創建對象,而是將存在的”張敬軒“的地址引用賦值給b,所以a和b的地址一樣,內容自然也一樣,所以兩個結果為true,不懂各位朋友懂沒懂?

3.2,情況二;

public class Test2 {public static void main(String[] args) {String a ='張敬軒'; String b = new String('張敬軒');System.out.println(a == b);System.out.println(a.equals(b));}}

結果是

淺析java中String類型中“==”與“equal”的區別

false,true解釋String a = “張敬軒”;已經解釋過了,是在堆里面的字符串常量池創建對象String b = new String(“張敬軒”);這個也是在堆區里面創建對象,但是不是在字符串常量池里面創建對象兩個不同的對象,地址自然不同,類容都是張敬軒,所以結果是false,true

3.3、情況三

public class Test2 {public static void main(String[] args) {String a = new String('張敬軒'); String b = new String('張敬軒');System.out.println(a == b);System.out.println(a.equals(b));}}

結果:false,true

淺析java中String類型中“==”與“equal”的區別

解釋,因為new (“張敬軒”);表示在堆區的非字符串常量池里面創建了兩個不同的對象,兩次new就創建了兩個,所以地址是不同的,因此結果是false,true

3.4、情況四

public class Test2 {public static void main(String[] args) {String a = '張'+'敬軒';String b = '張敬軒';System.out.println(a == b);System.out.println(a.equals(b));}}

結果是:true,true

淺析java中String類型中“==”與“equal”的區別

解釋:String = “張敬” + ”軒“;在編譯的時候就已經開始進行計算:這是Java編譯的優化機制,所以a指向的地址依舊是”張敬軒“;所以情況和前面的情況一一致,所以是true,true(注意Java編譯優化機制只針對常量不針對變量 a = a+ b(這個是沒有優化機制的,關于Java編譯機制,各位小伙伴可以去百度了解一下))

3.5、情況五

public class Test2 {public static void main(String[] args) {String a = '張';String b = '敬軒';String c =a+b;String d = '張敬軒';System.out.println(d == c);System.out.println(d.equals(c));}}

結果:

淺析java中String類型中“==”與“equal”的區別

解釋:因為a 和 b是變量,不存在什么Java優化機制,而是將兩個c = a + b存放在的是堆區的非字符常量池里面,所以是兩個不同的對象,自然為false,true3.6、最后一種情況

public class Test2 {public static void main(String[] args) {String a = '張';String b = '敬軒';String c =(a+b).intern();String d = '張敬軒';System.out.println(d == c);System.out.println(d.equals(c));}}

結果:

淺析java中String類型中“==”與“equal”的區別

解釋:intern();方法是將堆區里面的非字符常量池里面的對象強行放到字符常量池里面,因為字符常量池里面對象的唯一性,如果字符串常量池里面已經有了和”張敬軒“一樣的對象,就會將其地址引用賦值給c,沒有就相當于創建一個(也就是和之前堆區里面那個對象一樣的對象),有了的話,就會將原來有的那個“張敬軒”對象賦值給c,因為地址一樣,所以為true

總結:

== 比較的地址 (如果對象存在字符串常量池,而且類容相同,那么 == 返回的是true )equal 比較的是內容 (內容相同返回便是true)(所以在以后的開發中一般是用equal比較字符串的

各位朋友如果有錯的及時評論區指出,謝謝大家的支持

到此這篇關于淺析java中String類型中“==”與“equal”的區別的文章就介紹到這了,更多相關java String類型 ==與equal內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 南京交通事故律师-专打交通事故的南京律师 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 路斯特伺服驱动器维修,伦茨伺服驱动器维修|万骏自动化百科 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 金联宇电缆总代理-金联宇集团-广东金联宇电缆实业有限公司 | 商秀—企业短视频代运营_抖音企业号托管 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 方源木业官网-四川木门-全国木门专业品牌 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | DNA亲子鉴定_DNA基因检测中心官方预约平台-严选好基因网 | 钣金加工厂家-钣金加工-佛山钣金厂-月汇好 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 喷砂机厂家_自动除锈抛丸机价格-成都泰盛吉自动化喷砂设备 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 外观设计_设备外观设计_外观设计公司_产品外观设计_机械设备外观设计_东莞工业设计公司-意品深蓝 | 非标压力容器_碳钢储罐_不锈钢_搪玻璃反应釜厂家-山东首丰智能环保装备有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 包头市鑫枫装饰有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 硅PU球场、篮球场地面施工「水性、环保、弹性」硅PU材料生产厂家-广东中星体育公司 |