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