摘要:開講前肯定得先來道題唄這邊先不講字節(jié)碼的事。一步一步來講解這中間都發(fā)生了啥這個(gè)我就不說了。。
開講前肯定得先來道題唄
public class Demo01 { public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i = " + i); System.out.println("j = " + j); System.out.println("k = " + k); } }
i = 4 j = 1 k = 11
這邊先不講字節(jié)碼的事。
一步一步來講解這中間都發(fā)生了啥?
int i = 1 ;
這個(gè)我就不說了。。
看我畫的圖之前,在這里先進(jìn)行一些總結(jié):
自增、自減操作都是直接修改變量的值,不經(jīng)過操作數(shù)棧
賦值之前,臨時(shí)結(jié)果也是存放在操作棧中的
=右邊的 從左到右加載值 依次壓入操作數(shù)棧
(下面的圖 “操作棧” 應(yīng)該為 “操作數(shù)棧” ,不影響理解)
上面得到 i = 1
這里, j = 1, i = 2
這張圖比較粗糙,仔細(xì)看應(yīng)該能看得懂。
如果還想深究的,可以來了解下字節(jié)碼
0: iconst_1 1: istore_1 2: iload_1 //將第二個(gè) int 型本地變量推送至棧頂 3: iinc 1, 1 //將指定 int 型變量增加指定值 (如 i++, i--, i+=2 等) 6: istore_1 //棧頂 int 型數(shù)值存入第二個(gè)本地變量 7: iload_1 //將第二個(gè) int 型本地變量推送至棧頂 8: iinc 1, 1 11: istore_2 12: iload_1 13: iinc 1, 1 16: iload_1 17: iload_1 //這里進(jìn)行++i 操作 分為3個(gè)步驟了 18: iinc 1, 1 21: imul 22: iadd 23: istore_3
如果覺得有啥不妥的,可以評論留言呀。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/75020.html
摘要:中的運(yùn)算符按功能劃分主要分類。算術(shù)運(yùn)算符的優(yōu)先級浮點(diǎn)數(shù)比較在中,一般不建議直接比較兩個(gè)浮點(diǎn)數(shù)是否相等。還有與二元運(yùn)算符相結(jié)合的賦值運(yùn)算符。與二元運(yùn)算符相結(jié)合的賦值運(yùn)算符有其運(yùn)算即為先兩者進(jìn)行二元操作再賦值給前者。 java中的運(yùn)算符按功能劃分主要分7類。 算術(shù)運(yùn)算符 +, -, *, /, ++, --, % 關(guān)系運(yùn)算符 =, ==, != 布爾邏輯運(yùn)算符 &&, &, |...
摘要:運(yùn)算符概述表達(dá)式由運(yùn)算符和操作數(shù)組成運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符位運(yùn)算符目運(yùn)算符對幾個(gè)操作數(shù)進(jìn)行操作就是幾目運(yùn)算符算術(shù)運(yùn)算符與賦值運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符是從右往左運(yùn)算,是單目運(yùn)算符格式變量表達(dá)式復(fù)合賦值運(yùn)算符 Lecture1 運(yùn)算符概述 表達(dá)式:由運(yùn)算符和操作數(shù)組成 運(yùn)算符: 算術(shù)運(yùn)算符 賦值運(yùn)算符 關(guān)系運(yùn)算符 邏輯運(yùn)算符 條件運(yùn)算符 位運(yùn)算符 ...
摘要:作為技術(shù)書籍或者視頻,講解一門語言的時(shí)候都是從最底層開始講解,底層的基礎(chǔ)有哪些呢首先是整個(gè),讓我們對這門語言先混個(gè)臉熟,知道程序的基本結(jié)構(gòu),順帶著還會(huì)說一下注釋是什么樣子。 2018年新年剛過,就迷茫了,Java學(xué)不下去了,不知道從哪里學(xué)了。 那么多細(xì)節(jié)的東西,我根本記不住,看完就忘。 剛開始學(xué)習(xí)的時(shí)候熱情萬丈,持續(xù)不了幾天就慢慢退去。 作為技術(shù)書籍或者視頻,講解一門語言的時(shí)候都是...
摘要:如果條件為,則邏輯非運(yùn)算符將得到進(jìn)行邏輯判斷的順序?yàn)閺淖蟮接摇T俅螜z測布爾表達(dá)式。其作用域限定在循環(huán)語句塊,其值與此時(shí)數(shù)組元素的值相等。 運(yùn)算符和邏輯控制 運(yùn)算符 java中的運(yùn)算符可以分為以下幾種: 算符運(yùn)算符 關(guān)系運(yùn)算符 位運(yùn)算符 邏輯運(yùn)算符 賦值運(yùn)算符 三目運(yùn)算符 算符運(yùn)算符 操作符 描述 + 加法 - 減法 * 乘法 / 除法 % 取余(模) ...
摘要:在中存在兩種類型基本類型和引用類型。值得注意的是,基本類型的值的狀態(tài)不會(huì)被共享。浮點(diǎn)類型和它們的值中的浮點(diǎn)類型遵循標(biāo)準(zhǔn)的定義。布爾類型和它們的值類型表示兩個(gè)邏輯量,和。 眾所周知,Java是一門靜態(tài)類型的語言,這意味著所有的變量和表達(dá)式的類型會(huì)在編譯時(shí)確定。同時(shí),Java 還是一門強(qiáng)類型的語言,因此變量的值或表達(dá)式的結(jié)果的類型都會(huì)受到限制(比如一個(gè)聲明為 String 的變量不的值不可...
閱讀 1980·2021-09-26 10:19
閱讀 3249·2021-09-24 10:25
閱讀 1623·2019-12-27 11:39
閱讀 1919·2019-08-30 15:43
閱讀 663·2019-08-29 16:08
閱讀 3504·2019-08-29 16:07
閱讀 902·2019-08-26 11:30
閱讀 1270·2019-08-26 10:41