亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java中int和Integer的理解

2019-11-06 06:34:34
字體:
來源:轉載
供稿:網友

前言

java中的數據類型分為基本數據類型和復雜數據類型.int是基本數據類型,Integer是復雜數據類型.所以int的默認值為0,而Integer的默認值為null,即Integer可以區分出未賦值和值為0的區別,int則無法表達出未賦值的情況。


java中為什么要引入Integer?

個人認為很多java api的調用包括方法的傳旨或者范型的使用都是基于Object的,所以引入了Integer,引入了自動裝箱與拆箱,這些方便api的調用.


java中的自動裝箱與拆箱

自動裝箱:

Integer i = 100;相當于編譯器自動為您作以下的語法編譯:Integer i = Integer.valueOf(100);換句話說,裝箱就是jdk自己幫你完成了調用Integer.valueOf(100)。

Integer類的valueOf(int i)方法實現

/** * Returns a <tt>Integer</tt> instance rePResenting the specified * <tt>int</tt> value. * If a new <tt>Integer</tt> instance is not required, this method * should generally be used in preference to the constructor * {@link #Integer(int)}, as this method is likely to yield * significantly better space and time performance by caching * frequently requested values. * * @param i an <code>int</code> value. * @return a <tt>Integer</tt> instance representing <tt>i</tt>. * @since 1.5 */ public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); }

自動拆箱: 自動拆箱(unboxing),也就是將對象中的基本數據從對象中自動取出:

Integer i = 10; //裝箱 int m = i; //拆箱,實際上執行了 int m = i.intValue();

下面的測試是針對int和Integer的區別分析

@Test public void testInteger(){ //會把Integer自動拆箱為 int再去比,等同于Integer in=10; Integer in=new Integer(10); int i=10; System.out.println(i==in);//true Integer i1=new Integer(20); Integer i2=20; System.out.println(i1==i2);//false Integer i3=new Integer(30); Integer i4=new Integer(30); System.out.println(i3==i4);//false Integer i5=40; Integer i6=40; System.out.println(i5==i6);//true System.out.println("================"); Integer i7=-127; Integer i8=-127; System.out.println(i7==i8);//true Integer i9=127; Integer i10=127; System.out.println(i9==i10);//true Integer i11=128; Integer i12=128; System.out.println(i11==i12);//false Integer i13=-128; Integer i14=-128; System.out.println(i13==i14);//true //Integer緩存區間[-128,127] 超出Integer的緩存范圍,不從私有靜態內部類IntegerCache的 數組cache中獲得,而是通過new返回新對象 Integer i131=-129; Integer i132=-129; System.out.println(i131==i132);//false Integer i15=250; Integer i16=250; System.out.println(i15==i16);//false }

Integer源碼片段:

/* @param i an <code>int</code> value. * @return a <tt>Integer</tt> instance representing <tt>i</tt>. * @since 1.5 */ public static Integer valueOf(int i) { //沒有設置的話,IngegerCache.high 默認是127 if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); }對于–128到127(默認是127)之間的值,Integer.valueOf(int i) 返回的是緩存的Integer對象(并不是新建對象)而其他值,執行Integer.valueOf(int i) 返回的是一個新建的 Integer對象private static class IntegerCache { static final int high; static final Integer cache[]; static { final int low = -128; // high value may be configured by property int h = 127; if (integerCacheHighPropValue != null) { // Use Long.decode here to avoid invoking methods that // require Integer's autoboxing cache to be initialized int i = Long.decode(integerCacheHighPropValue).intValue(); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - -low); } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); } private IntegerCache() {} }

看一下源碼大家都會明白,對于-128到127之間的數,會進行緩存. IntegerCache有靜態成員變量cache,為一個擁有256個元素的數組。在IntegerCache中也對cache進行了初始化,即第i個元素是值為i-128的Integer對象。而-128至127是最常用的Integer對象,這樣的做法也在很大程度上提高了性能.


結論

針對以上案例分析得出如下結論:

1)Integer與new Integer不會相等,他們的內存地址不一樣 2)兩個都是非new出來的Integer,如果數在-128到127之間,則是true,否則為false 3)兩個都是new出來的,都為false 4)int和integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去做對比.

簡單來說就是:當封裝類與基礎類型進行==運行時,封裝類會進行拆箱,拆箱結果與基礎類型對比值;而兩個封裝類進行==運行時,與其它的對象進行==運行一樣,對比兩個對象的地址,也即判斷是否兩個引用是否指向同一個對象。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区在线免费观看| 亚洲精品视频在线观看视频| 国产视频精品va久久久久久| 亚洲精品一区二区久| 国产在线视频不卡| 91免费的视频在线播放| 一本大道亚洲视频| 国产精品日韩久久久久| 亚洲激情在线观看视频免费| 欧美日韩国产中文精品字幕自在自线| 亚洲国产精彩中文乱码av在线播放| 亚洲a区在线视频| 亚洲电影免费观看高清完整版在线观看| 黑人巨大精品欧美一区免费视频| 91精品国产自产91精品| 色妞一区二区三区| 久久国产精品久久久久久久久久| 国产一区二区三区四区福利| 国产+成+人+亚洲欧洲| 亚洲一区二区免费在线| 亚洲国产女人aaa毛片在线| 日韩中文字在线| 性亚洲最疯狂xxxx高清| 91精品国产乱码久久久久久蜜臀| 欧美激情精品在线| 日韩在线中文字| 久久大大胆人体| 久久久久成人精品| 亚洲一二三在线| 欧美xxxx做受欧美| 国产精品久久久久久久久久新婚| 欧美日韩国产一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 欧美高清理论片| 这里精品视频免费| 欧美日韩国产91| 久久久久亚洲精品| 欧美国产亚洲精品久久久8v| 韩国国内大量揄拍精品视频| 国产精品视频在线播放| 国产成人亚洲精品| 国产成人精品久久二区二区91| 久久69精品久久久久久久电影好| 亚洲人成免费电影| 国产精品电影网| 欧美激情第99页| 激情久久av一区av二区av三区| 啊v视频在线一区二区三区| 久久久天堂国产精品女人| 欧美极品在线播放| 欧美性色视频在线| 国产精品女视频| 亚洲成年人在线播放| 美女精品久久久| 久久久久久中文字幕| 亚洲护士老师的毛茸茸最新章节| 成人av电影天堂| 久久精品免费播放| 狠狠久久五月精品中文字幕| 俺去亚洲欧洲欧美日韩| 欧美成人在线网站| 日本久久精品视频| 日韩电影免费在线观看| 日韩在线播放av| 日本中文字幕成人| 欧美日韩国产中字| 国外成人在线视频| 国产精品美女av| 精品国产乱码久久久久久婷婷| 一区二区三区四区视频| 青青久久av北条麻妃黑人| 精品国内自产拍在线观看| 亚洲精品电影久久久| 色狠狠av一区二区三区香蕉蜜桃| 亚洲视频视频在线| 色偷偷偷亚洲综合网另类| 国产欧美欧洲在线观看| 久久不射热爱视频精品| 91亚洲精品久久久久久久久久久久| 欧美激情按摩在线| 日韩有码视频在线| 久久综合88中文色鬼| 美女撒尿一区二区三区| 国模私拍一区二区三区| 亚洲成人av在线| 黑丝美女久久久| 韩国三级电影久久久久久| 成人久久久久爱| 日韩免费观看在线观看| 国产精品永久免费视频| 国内精品久久久久伊人av| 日产精品99久久久久久| 国产91网红主播在线观看| 久久久日本电影| 亚洲欧美色婷婷| 欧美另类高清videos| 国产一区二区三区在线看| 成人黄色av网站| 日韩av在线免费观看| 欧美亚洲视频在线看网址| 91精品久久久久久久久久久久久| 中文字幕自拍vr一区二区三区| 懂色aⅴ精品一区二区三区蜜月| 久久国产精品久久精品| 中国china体内裑精亚洲片| 91在线直播亚洲| 国产精品综合不卡av| 国产成人福利夜色影视| 日韩免费电影在线观看| 欧美性猛交xxxx乱大交极品| 性色av一区二区三区红粉影视| 夜夜嗨av色综合久久久综合网| 一区二区av在线| 久久久久久国产精品三级玉女聊斋| 亚洲大尺度美女在线| 中文日韩电影网站| 亚洲国产高潮在线观看| 欧美激情手机在线视频| 欧美激情精品久久久| 成人h片在线播放免费网站| 九九热最新视频//这里只有精品| 色与欲影视天天看综合网| 少妇av一区二区三区| 国产成人av在线| 亚洲第一精品电影| 国产精品日韩欧美| 川上优av一区二区线观看| 狠狠色狠色综合曰曰| 久久精品国产成人精品| 26uuu日韩精品一区二区| 欧美激情综合亚洲一二区| 91精品成人久久| 91精品国产亚洲| 亚洲黄色成人网| 中文字幕亚洲精品| 日韩影视在线观看| 欧美日韩在线另类| 欧美精品videosex极品1| 欧美丰满少妇xxxxx做受| 精品久久久久久中文字幕| 欧美性高潮床叫视频| 国产成人综合久久| 国产精品91久久| 亚洲www永久成人夜色| 久久久精品中文字幕| 亚洲黄色在线看| 中文在线资源观看视频网站免费不卡| 91亚洲精品久久久久久久久久久久| 国产亚洲视频在线| 久久久久久久久国产| 日韩欧美在线视频日韩欧美在线视频| xxxx性欧美| 精品欧美aⅴ在线网站| 黑人巨大精品欧美一区二区免费| xxx成人少妇69| 成人黄色片网站| 亚洲精品久久久久久久久久久久| 色噜噜狠狠狠综合曰曰曰| 亚洲色图13p| 日韩欧美在线免费| 国产精品久久网| 欧美性高跟鞋xxxxhd| 57pao成人国产永久免费| 久久久噜噜噜久久|