可以看到,兩種方法實(shí)際上最終都調(diào)用了parseInt(s, 10)這個(gè)static方法把字符串轉(zhuǎn)換成int數(shù)值,不同的是前者是在初始化Integer對(duì)象的過程中做了一個(gè)初始化賦值的操作(賦值給實(shí)例變量value),然后自動(dòng)把integer對(duì)象解包成int數(shù)值(完整的轉(zhuǎn)換過程是這樣:int a = new Integer(value).intValue(););而parseInt(s)是使用了Integer類的類方法,直接把得到的int數(shù)值賦值給b。
2017-04-07
問的問題已經(jīng)攪和在一起了,建議回看Java基礎(chǔ)的入門第二季。
intValue() 是一個(gè)實(shí)例方法,也就是說實(shí)例化之后的對(duì)象才能調(diào)用。此方法唯一的作用就是用來手動(dòng)解包??创朔椒ㄔ创a如下:
作用就是把Integer對(duì)象里面的成員變量value的值返回。而即使不用調(diào)用這個(gè)方法Integer的實(shí)例也一樣會(huì)把value返回。也就是說下面兩種寫法是完全等價(jià)的:
而跟parseInt()相對(duì)應(yīng)的其實(shí)是Integer的含String參數(shù)的構(gòu)造方法。兩者的功能都是把一個(gè)字符串轉(zhuǎn)換成一個(gè)int數(shù)值,結(jié)果是一樣的,然而實(shí)現(xiàn)方法略有不同??聪吕?/p>
Integer構(gòu)造方法實(shí)現(xiàn)如下:
parseInt(String)的實(shí)現(xiàn)如下:
可以看到,兩種方法實(shí)際上最終都調(diào)用了parseInt(s, 10)這個(gè)static方法把字符串轉(zhuǎn)換成int數(shù)值,不同的是前者是在初始化Integer對(duì)象的過程中做了一個(gè)初始化賦值的操作(賦值給實(shí)例變量value),然后自動(dòng)把integer對(duì)象解包成int數(shù)值(完整的轉(zhuǎn)換過程是這樣:int a = new Integer(value).intValue(););而parseInt(s)是使用了Integer類的類方法,直接把得到的int數(shù)值賦值給b。
而兩種方法都調(diào)用到的parseInt(s, 10);方法是什么?它也是Integer類的一個(gè)類方法,內(nèi)部一系列轉(zhuǎn)換動(dòng)作最終返回一個(gè)int數(shù)值:
這也就回到最后一個(gè)問題,static int返回值是什么,static int方法返回的就是一個(gè)int數(shù)值。 static限制的是標(biāo)記的方法或者變量的作用域。
比如一家人一起去超市買東西,每個(gè)成員買完東西最后要把所有的東西統(tǒng)一記賬一起結(jié)賬。設(shè)計(jì)這種場景時(shí)就可以把購物車設(shè)置為static,每個(gè)實(shí)例(人)都可以修改購物車的內(nèi)容。
2018-08-08
給樓上的樓上點(diǎn)贊
2017-04-07
樓上講的很詳細(xì)嘛