欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java中整型常量和整型變量的區(qū)別有哪些-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“java中整型常量和整型變量的區(qū)別有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java中整型常量和整型變量的區(qū)別有哪些”這篇文章吧。

成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供密山網(wǎng)站建設(shè)、密山做網(wǎng)站、密山網(wǎng)站設(shè)計(jì)、密山網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、密山企業(yè)網(wǎng)站模板建站服務(wù),十余年密山做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

我下圖代碼第五行和第九行分別定義了一個(gè)整型變量和一個(gè)整型常量:

static final int number1 = 512;

static int number3 = 545;

Java程序員都知道兩者的區(qū)別。

java中整型常量和整型變量的區(qū)別有哪些

下面我們就用javap將.class文件反編譯出來然后深入研究Java里整型變量和整型常量的區(qū)別。

使用命令行javap -c constant.ConstantFolding查看.class文件反編譯出來的字節(jié)碼:

java中整型常量和整型變量的區(qū)別有哪些

結(jié)果:

java中整型常量和整型變量的區(qū)別有哪些

這些字節(jié)碼指令的說明,在wikipedia里有說明:

wiki:  https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings

咱們Java程序員不需要把它們都背下來,只需要把這個(gè)網(wǎng)頁收藏起來,要用的時(shí)候當(dāng)成字典來用就行:

java中整型常量和整型變量的區(qū)別有哪些

sipush 545: 將整數(shù)545放置到棧上

putstatic #16:

將棧上的值545賦給當(dāng)前類的靜態(tài)字段里。

java中整型常量和整型變量的區(qū)別有哪些

那么putstatic #16里的#16代表什么含義?

我們?cè)儆胘avap -v 參數(shù)反編譯,就能看到這個(gè)類的常量池(Constant pool). 大家看下圖藍(lán)色高亮的一行:

constant/ConstantFolding.number3:I

說明#16代表類constant.ConstantFolding的成員number3,類型為I。

java中整型常量和整型變量的區(qū)別有哪些

至此,這兩行字節(jié)碼指令聯(lián)合起來,實(shí)際對(duì)應(yīng)了我們寫的Java代碼:

static int number3 = 545;

我們繼續(xù)分析javap反編譯出來的字節(jié)碼。

java中整型常量和整型變量的區(qū)別有哪些

aload_0: 將序號(hào)為0的本地變量的引入加載到棧上

invokespecial: 調(diào)用對(duì)象實(shí)例上的成員方法,如果有返回值,方法的返回值存儲(chǔ)到棧上。具體調(diào)用的方法由#標(biāo)識(shí),可在常量池中查詢到對(duì)應(yīng)的方法名。

ldc: 將常量池上代號(hào)為#<數(shù)字>的常量的值從常量池加載到棧上。

我們從下圖的常量池列表能發(fā)現(xiàn),序號(hào)為#29的常量318976正是整型常量number1(512)和整型常量(623)的積。由此可以看出, number1 * number2這個(gè)表達(dá)式,因?yàn)閰⑴c運(yùn)算的兩個(gè)操作數(shù)通過STATIC和FINAL修飾成為了整型常量,因此其積在編譯期就能得到,所以編譯器在編譯時(shí)就計(jì)算出來,存儲(chǔ)在變量池里,序號(hào)為#29。

java中整型常量和整型變量的區(qū)別有哪些

那么整型變量做乘法運(yùn)算,對(duì)應(yīng)的字節(jié)碼又是什么樣的呢?

從下圖序號(hào)為3的code開始:

getstatic #16: 將類的靜態(tài)成員#16加載到棧上。#16對(duì)應(yīng)的成員為number3,值為545。

getstatic #18: 將類的靜態(tài)成員#18加載到棧上。#18對(duì)應(yīng)的成員為number4,值為619。

imul: 執(zhí)行棧上兩個(gè)整數(shù)的乘法運(yùn)算。

istore_2: 將結(jié)果保存到局部變量2里。

此時(shí),我們Java代碼里的int product2 = number3 * number4就執(zhí)行完了。

大家看到的剩下的藍(lán)色字節(jié)碼,都對(duì)應(yīng)了下面這行打印語句。

System.out.println("Value: " + product1 + " , " + product2);

從這些字節(jié)碼也能看出,Java里我們直接用加號(hào)進(jìn)行字符串拼接操作,Java編譯器在編譯時(shí),自動(dòng)使用了StringBuilder進(jìn)行優(yōu)化。

既然整型變量的乘積需要打印出來,因此字節(jié)碼的iload_2將之前用istore_2保存在局部變量2中的計(jì)算結(jié)果又加載到棧上,這樣乘積結(jié)果最后就能輸出了。

java中整型常量和整型變量的區(qū)別有哪些

以上是“java中整型常量和整型變量的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

網(wǎng)頁標(biāo)題:java中整型常量和整型變量的區(qū)別有哪些-創(chuàng)新互聯(lián)
當(dāng)前URL:http://aaarwkj.com/article18/deojgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站改版虛擬主機(jī)、面包屑導(dǎo)航、微信公眾號(hào)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
果冻国产精品麻豆成人av| 久久99精品久久久子伦| 一级黄片视频免费下载| 国产老熟女高潮一区二区| 人妻中文字幕一区二区三| 一区中文字幕人妻少妇| 日韩精品一区高清视频| 久久国产精品一品二品| 日韩欧美黄片一区二区三区 | 国产国产成人精品久久蜜| 日韩乱码高清一本免费啪| 亚洲国产色一区二区三区 | 精品国产品国语在线不卡| 亚洲欧美日韩激情另类| 国产精品一区欧美精品| 国产成人av在线观看| 不卡在线视频中文字幕| 亚洲av成人在线观看| 日本区一区二区三视频| 综合久久精品亚洲天堂| 国产免费播放一区二区三区| 超碰av之男人的天堂| 伊人亚洲中文一区二区| 欧美另类亚洲综合久青草| 亚洲综合香蕉在线视频| 99亚洲综合一区二区三区| 免费看av网站一区二区| 中国人妻一区二区三区| 国产天堂亚洲国产碰碰| 亚洲一区二区三区有码| 亚洲高清中文字幕一区二三区| 久久日韩人妻中文字幕| 亚洲天堂成人av蜜臀| 国产精品久久一国产精品| 欧美三级伦理片免费观看| 欧美午夜福利在线电影| 久激情内射婷内射蜜桃| 男女在线视频网站免费| 亚洲一级香蕉视频东京热| 国产第一页国产第一页| 高潮内射主播自拍一区|