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

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

通過實例了解Java Integer類和int的區別

瀏覽:61日期:2022-09-04 08:36:38

代碼實例如下

public static void main(String[] args) { Integer i = 10; Integer j = 10; System.out.println(i == j); Integer a = 128; Integer b = 128; System.out.println(a == b); int k = 10; System.out.println(k == i); int kk = 128; System.out.println(kk == a); Integer m = new Integer(10); Integer n = new Integer(10); System.out.println(m == n);}

我們使用反編譯工具Jad,得到的代碼如下:

public static void main(String args[]){ Integer i = Integer.valueOf(10); Integer j = Integer.valueOf(10); System.out.println(i == j); Integer a = Integer.valueOf(128); Integer b = Integer.valueOf(128); System.out.println(a == b); int k = 10; System.out.println(k == i.intValue()); int kk = 128; System.out.println(kk == a.intValue()); Integer m = new Integer(10); Integer n = new Integer(10); System.out.println(m == n);}

打印結果為:

通過實例了解Java Integer類和int的區別

首先,直接聲明Integer i = 10,會自動裝箱變為Integer i = Integer.valueOf(10);Integer i 會自動拆箱為 i.intValue()。

①、第一個打印結果為 true

對于 i == j ,我們知道這是兩個Integer類,他們比較應該是用equals,這里用==比較的是地址,那么結果肯定為false,但是實際上結果為true,這是為什么?

我們進入到Integer 類的valueOf()方法:

通過實例了解Java Integer類和int的區別

分析源碼我們可以知道在 i >= -128 并且 i <= 127 的時候,第一次聲明會將 i 的值放入緩存中,第二次直接取緩存里面的數據,而不是重新創建一個Ingeter 對象。那么第一個打印結果因為 i = 10 在緩存表示范圍內,所以為 true。

②、第二個打印結果為 false

從上面的分析我們知道,128是不在-128到127之間的,所以第一次創建對象的時候沒有緩存,第二次創建了一個新的Integer對象。故打印結果為false

③、第三個打印結果為 true

Integer 的自動拆箱功能,也就是比較兩個基本數據類型,結果當然為true

④、第四個打印結果為 true

解釋和第三個一樣。int和integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去比較。

⑤、第五個打印結果為 false

因為這個雖然值為10,但是我們都是通過 new 關鍵字來創建的兩個對象,是不存在緩存的概念的。兩個用new關鍵字創建的對象用 == 進行比較,結果當然為 false。

5、測試

Integer a = 1;Integer b = 2;Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;Long g = 3L;Long h = 2L;System.out.println(c == d);System.out.println(e == f);System.out.println(c == (a + b));System.out.println(c.equals((a+b)));System.out.println(g == (a+b));System.out.println(g.equals(a+b));System.out.println(g.equals(a+h));

反編譯結果:

通過實例了解Java Integer類和int的區別

分析:第一個和第二個結果沒什么疑問,Integer類在-128到127的緩存問題;

第三個由于 a+b包含了算術運算,因此會觸發自動拆箱過程(會調用intValue方法),==比較符又將左邊的自動拆箱,因此它們比較的是數值是否相等。

第四個對于c.equals(a+b)會先觸發自動拆箱過程,再觸發自動裝箱過程,也就是說a+b,會先各自調用intValue方法,得到了加法運算后的數值之后,便調用Integer.valueOf方法,再進行equals比較。

第五個對于 g == (a+b),首先計算 a+b,也是先調用各自的intValue方法,得到數值之后,由于前面的g是Long類型的,也會自動拆箱為long,==運算符能將隱含的將小范圍的數據類型轉換為大范圍的數據類型,也就是int會被轉換成long類型,兩個long類型的數值進行比較。

第六個對于 g.equals(a+b),同理a+b會先自動拆箱,然后將結果自動裝箱,需要說明的是equals 運算符不會進行類型轉換。所以是Long.equals(Integer),結果當然是false

第七個對于g.equals(a+h),運算符+會進行類型轉換,a+h各自拆箱之后是int+long,結果是long,然后long進行自動裝箱為Long,兩個Long進行equals判斷。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器| 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | 中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折! | 至顶网 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 陕西自考报名_陕西自学考试网 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 地脚螺栓_材质_标准-永年县德联地脚螺栓厂家| 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | BAUER减速机|ROSSI-MERSEN熔断器-APTECH调压阀-上海爱泽工业设备有限公司 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 欧景装饰设计工程有限公司-无锡欧景装饰官网| 上海软件开发-上海软件公司-软件外包-企业软件定制开发公司-咏熠科技 | 集菌仪_智能集菌仪_全封闭集菌仪_无菌检查集菌仪厂家-那艾 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 顺辉瓷砖-大国品牌-中国顺辉| 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 「安徽双凯」自动售货机-无人售货机-成人用品-自动饮料食品零食售货机 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 |