日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

JavaSE面试题01:自增变量

發(fā)布時(shí)間:2023/11/20 java 58 coder
生活随笔 收集整理的這篇文章主要介紹了 JavaSE面试题01:自增变量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JavaSE面試題:自增變量
來源:https://runwsh.com/

  • 代碼
    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);
    }
  • 現(xiàn)在,讓我們逐行解釋這段代碼的執(zhí)行

1. int i = 1;:創(chuàng)建整數(shù)變量 i 并將其初始化為1。(i=1;)

2. i = i++;:這是一個(gè)有爭議的表達(dá)式。首先,它將 i 的當(dāng)前值1壓棧到一個(gè)操作數(shù)棧中。然后,它將 i 自增1,這就使得變量i=2了,但右邊的操作數(shù)棧不是沒有后續(xù)的邏輯運(yùn)算了,就會將之前壓到操作數(shù)棧的1賦值給i。所以,i 的值又變?yōu)榱?。(i=1;)

  • 如果是`i=++i`呢,就是入棧的時(shí)候就會將自增后的變量i壓入棧中,變量i2,使得出棧的時(shí)候也是為2了。
    

3. int j = i++;:將 i 的當(dāng)前值1賦給 j,然后將 i 自增1。所以,j 的值是1,而 i 的值變?yōu)?。(i=2;j=1)

4. int k = i + ++i * i++;:這是一個(gè)復(fù)雜的表達(dá)式。首先看右邊的表達(dá)式,操作數(shù)棧會先將i變量入棧;也就是2先入棧,這個(gè)時(shí)候往右走++i,是將i自增后的數(shù)壓入棧中,也就是3,然后再看下一個(gè)操作數(shù)是i++;記住一點(diǎn)的就是,++i壓入棧中是將i自增后壓入棧中;i++是將i變量壓入棧中; ,記住這個(gè)規(guī)則就是,繼續(xù)壓入棧中的數(shù)字是3 。所以現(xiàn)在的操作數(shù)棧中的數(shù)據(jù)從棧低到棧頂依次為:2->3->3;按照運(yùn)算符操作順序先乘后加,2+3*3=11。

打印結(jié)果:

i=4
j=1
k=11

小結(jié)

    1. 賦值=,最后計(jì)算
    1. =右邊的從左到右加載值依次壓入操作數(shù)棧
    1. 實(shí)際先算哪個(gè),看運(yùn)算符優(yōu)先級
    1. 自增、自減操作都是直接修改變量的值,不經(jīng)過操作數(shù)棧
    1. 最后的賦值之前,臨時(shí)結(jié)果也是存儲在操作數(shù)棧中

建議:《JVM虛擬機(jī)規(guī)范》關(guān)于指令的部分

總結(jié)

以上是生活随笔為你收集整理的JavaSE面试题01:自增变量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。