| 9 | 1/1 | 返回列表 |
| 查看: 1393 | 回復(fù): 8 | |||
studyhae木蟲 (正式寫手)
|
[交流]
【求助】final 屬性 已有7人參與
|
|
定義類: class aClass{ public final double x; public final double y; public double getXY(){ return x*y; } } 由于屬性x,y為final,必須在new類的時(shí)候初始化x,y。我的問(wèn)題是,java編譯器在優(yōu)化的過(guò)程中,會(huì)將x*y先計(jì)算出來(lái)嗎?就是說(shuō)getXY()方法,是不是直接返回一個(gè)值,而沒有進(jìn)行乘法計(jì)算? |


銅蟲 (小有名氣)

木蟲 (著名寫手)
|
class aClass{ public final double x; public final double y; public double getXY(){ return x*y; } } 由于屬性x,y為final,必須在new類的時(shí)候初始化x,y。我的問(wèn)題是,java編譯器在優(yōu)化的過(guò)程中,會(huì)將x*y先計(jì)算出來(lái)嗎?就是說(shuō)getXY()方法,是不是直接返回一個(gè)值,而沒有進(jìn)行乘法計(jì)算? 一、類成員變量用final修飾需要在聲明的時(shí)候就賦值,否則將不能通過(guò)編譯直接報(bào)錯(cuò)?梢赃@樣理解,因?yàn)樵趧?chuàng)建對(duì)象的時(shí)候,如果沒有使用構(gòu)造方法或靜態(tài)初始化器為成員變量賦值,那么成員變量將被賦默認(rèn)值(對(duì)int類型來(lái)說(shuō)是0),而又由于有final修飾,所以一旦賦值后就不能修改,那這種成員變量將失去使用價(jià)值。 二、x*y不會(huì)先計(jì)算出來(lái),這個(gè)你可以在getXY()方法中嵌入一個(gè)變量調(diào)試一下就知道了! class aClass{ public final double x=10;//使用final修飾成員變量的時(shí)候必須賦值 public final double y=100; double test; public double getXY(){ test=x*y;//嵌入test return x*y; } public double getTest() { return test; } } public class Test1 { public static void main(String[] args) { aClass a=new aClass(); System.out.println("before getXY() run,test="+a.getTest()); a.getXY(); System.out.println("after getXY() run, test="+a.getTest()); } } |

金蟲 (著名寫手)
|
這個(gè)對(duì)于不同的編譯器可能效果不同,但可以肯定的是一定會(huì)被優(yōu)化掉 final表示最后一次賦值,在類型檢查的時(shí)候x*y就會(huì)被代換成指定的值,然后再編譯的時(shí)候發(fā)現(xiàn)常量相乘,肯定會(huì)被計(jì)算,樓上的解釋不能說(shuō)明問(wèn)題: text = 2*3與return 2*3明顯就是text = 6與return 6 |

鐵蟲 (初入文壇)
鐵蟲 (初入文壇)
鐵蟲 (初入文壇)
| 9 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 323求調(diào)劑 +5 | 洼小桶 2026-03-18 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 287求調(diào)劑 +8 | 晨昏線與星海 2026-03-19 | 9/450 |
|
|
[考研] 環(huán)境學(xué)碩288求調(diào)劑 +6 | 皮皮皮123456 2026-03-22 | 6/300 |
|
|
[考研] 293求調(diào)劑 +12 | zjl的號(hào) 2026-03-16 | 17/850 |
|
|
[考研] 280求調(diào)劑 +11 | 咕嚕曉曉 2026-03-18 | 12/600 |
|
|
[考研] 一志愿南大,0703化學(xué),分?jǐn)?shù)336,求調(diào)劑 +3 | 收到VS 2026-03-21 | 3/150 |
|
|
[考研] 一志愿深大,0703化學(xué),總分302,求調(diào)劑 +4 | 七月-七七 2026-03-21 | 4/200 |
|
|
[考研] 313求調(diào)劑 +4 | 肆叁貳壹22 2026-03-19 | 4/200 |
|
|
[考研] 302求調(diào)劑 +12 | 呼呼呼。。。。 2026-03-17 | 12/600 |
|
|
[考研] 336求調(diào)劑 +5 | rmc8866 2026-03-21 | 5/250 |
|
|
[考研] 一志愿天津大學(xué)化學(xué)工藝專業(yè)(081702)315分求調(diào)劑 +12 | yangfz 2026-03-17 | 12/600 |
|
|
[考研] 301求調(diào)劑 +10 | yy要上岸呀 2026-03-17 | 10/500 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +5 | 守候夕陽(yáng)CF 2026-03-18 | 5/250 |
|
|
[考研]
|
.6lL 2026-03-18 | 8/400 |
|
|
[考研] 一志愿西安交通大學(xué) 學(xué)碩 354求調(diào)劑211或者雙一流 +3 | 我想要讀研究生 2026-03-20 | 3/150 |
|
|
[考研] 086500 325 求調(diào)劑 +3 | 領(lǐng)帶小熊 2026-03-19 | 3/150 |
|
|
[考研] 085600材料與化工調(diào)劑 324分 +10 | llllkkkhh 2026-03-18 | 12/600 |
|
|
[考研] 材料工程專碩調(diào)劑 +5 | 204818@lcx 2026-03-17 | 6/300 |
|
|
[考研] 0854可跨調(diào)劑,一作一項(xiàng)核心論文五項(xiàng)專利,省、國(guó)級(jí)證書40+數(shù)一英一287 +8 | 小李0854 2026-03-16 | 8/400 |
|
|
[考研] 334求調(diào)劑 +3 | 志存高遠(yuǎn)意在機(jī)?/a> 2026-03-16 | 3/150 |
|