導航:首頁 > 源碼編譯 > 編譯看左邊運行看右邊原理

編譯看左邊運行看右邊原理

發布時間:2023-02-03 16:48:27

java中,什麼時候需要new來實例化

(1)同一個對象在不同時刻體現出來的不同狀態。
(2)多態的前提:
A:有繼承或者實現關系。
B:有方法重寫。
C:有父類或者父介面引用指向子類對象。

多態的分類:
a:具體類多態
class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
b:抽象類多態
abstract class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
c:介面多態
interface Fu {}
class Zi implements Fu {}

Fu f = new Zi();
(3)多態中的成員訪問特點
A:成員變數
編譯看左邊,運行看左邊
B:構造方法
子類的構造都會默認訪問父類構造
C:成員方法
編譯看左邊,運行看右邊
D:靜態方法
編譯看左邊,運行看左邊

為什麼?
因為成員方法有重寫。
(4)多態的好處:
A:提高代碼的維護性(繼承體現)
B:提高代碼的擴展性(多態體現)
(5)多態的弊端:
父不能使用子的特有功能。

現象:
子可以當作父使用,父不能當作子使用。
(6)多態中的轉型
A:向上轉型
從子到父
B:向下轉型
從父到子

② 請c的指針牛人解答一下!

printf最終列印4 16 4 2
首先說明下:p是一個指針,它指向了一個數組,這個數組每個單元(元素)也是指針,它可以用來指向short類型的變數。
再給你定義個類型:short **p[4];
short **p[4]和short *(*p)[4]怎麼來理解呢?
你要做到向右看一位,再向左看一位,再向右看...
具體分析*(*p)[4],p是個變數,往右看,因為被括弧給圍住了,所以右邊沒東西,往左看,看到了*,所以p是個指針變數,接下去看完了左邊,再看(*p)的右邊,它是[4],就知道了p這個指針指向了有4個元素的數組,看完了右邊再看左邊,左邊還是個*,知道了這個數組是個指針數組。然後還是看右邊,由於右邊沒東西了,所以依舊再看左邊,看到了short,於是知道了這個指針數組是指向short類型的。據此,編譯器完成了對p的整個解釋過程。至於short **p[4]我想請你回答一點:p是什麼?是指針還是數組名?用我剛才介紹的方法自己分析下,看掌握了沒?告訴你下這里的sizeof(p)等於16;
1)sizeof(p):由於p是個指針,所以計算了指針的長度得到4個位元組。(現在的硬體條件下,指針一般都是4個位元組的,因為要存放地址嘛,地址是固定的,除非以後操作系統和硬體發生變化,用8個位元組表示內存唯一地址,否則地址就會一直是4個位元組的)
2)sizeof(*p):由於開始介紹過了,p是指向一個數組的,所以*p就定位到了這個數組,譬如我們可以這樣指定:short *pArray[4],這里的pArray是個有4個元素的數組,每個元素可以存放一個可以用來指向short型變數的指針。這時我們可以讓p來指向這個數組,代碼為*p=pArray。這個時候*p里存放的是pArray數組的地址。因此由於數組里全是指針,共4個。通過計算4*4=16,所以會列印出16來。
3)sizeof(**p):由於*p表示了數組,那麼**P就是指的第一個元素,用上面的例子就是pArray[0],因為pArray[0]是個指針,因此列印出4.(**p與pArray[0]是等價的)
4)sizeof(***p):因為通過前面分析知道**p是個指向short類型變數的指針,因此***p就是最終的那個short類型的變數了。由於short是2個位元組的數據,因此sizeof(***p)列印出2

其實這道題還是比較簡單的,不算難的。你唯一需要一定吃透的知識點是:指針和數組的關系,數組首地址的關系,以及數組和指針的區別(譬如p可以p++做自增運算,pArray就不可以)。說說簡單,要完全吃透還是要靠自己多花點時間體會的,吃透了指針和數組的關系,這道題就迎刃而解了。但你沒完全領會它們的關系,哪怕有一點沒理解,我覺得這道題要答對,非常難!!
補充一點,樓上的兄弟有回答是2 8 2 2也是正確的。由於在不同的環境下,用的地址編碼格式不同,所以有的會用4個位元組來唯一表示一個內存地址,而有的會用2個位元組來表示唯一地址,TC是這樣的,16位編譯器顧名思意就是2位元組定址法,肯定是2個位元組嘍。但最多的還是4位元組定址!要想看2位元組的,你到DOS的環境下用純TC試下,很有趣的!

③ C語言考試編譯、連接、運行是哪幾個圖標

在vs2010中,編譯 是在 生成菜單 下的最後一個
鏈接 是 在 生成菜單 下的生成 或者生成解決方案
運行 是 在 調試菜單 下的開始執行(不調試)
圖標就可以參照這些對應的看了

或者在工具欄上右擊選擇 生成工具欄就可以把這些按鈕弄出來了

編譯需要這么弄:工具->自定義->命令頁面下類別選擇生成,然後在命令欄里把編譯按鈕拖到想放的工具欄上就可以了

④ 誰告訴我java多態里類變數是怎麼賦值的

我的理解是看對象前面的類型。
第一個的類型是A,所以輸出的屬性就是A裡面的屬性,然後方法的話,應為子類重寫了父類的方法,所以使用子類的。
第二個。對象的類型是B,是由a強制轉換來的,還是針對屬性看a的,方法是看b的
最終的總結是:
成員變數:編譯看左邊,運行看左邊;
成員方法:編譯看左邊,運行看右邊:
靜態方法: 編譯看左邊,運行看左邊

⑤ 在java多態中,編譯看左邊,運行看右邊是什麼意思,哪位大俠能幫忙詳細解釋一下 謝謝了.

Animal c = new Cat(); 左邊是 Animal 類(或介面) 右邊是 Cat()類; 在編譯的時候編譯器不管你右邊是什麼類,只要左邊的Animal類(或介面)能編譯通過就不會報錯。但是運行的時候就要按照右邊的Cat()類實際情況來運行。

⑥ 左結合問題~和編譯原理有關

暈死,LETER(LETER|DIGITIL)* 的這個*不是乘法運算符,是編譯原理中的一個表述符,是放在標識符右上角的,比如a*就表示取0個或任意個a

⑦ ++a || ++b && ++c在C語言中怎麼計算

int a=0,b=0,c=0,k=0;//以下用到的所有變數都賦初值0

k=++a || ++b &&++c;

printf("a=%d b=%d c=%d ",a,b,c);

printf("k=%d ",k);


分析

很多地方說此處計算要用到優先順序,其實不然

1、如果按照優先順序相等來運算: ++a後a==1,++b被短路b==0,c==1

則應輸出 a=1 b=0 c=1 k=1

編譯運行:


分析正確

⑧ 左結合和右結合的問題~和編譯原理有關

B與第一個*結合:用編譯原理的運算符的結合性來解釋的話,就是假設*是左結合的。當運算分量(本例中是B)兩側都有運算符(本例中是*)的時候,採用左結合。即B與B左邊的*結合。
eg: L —>A*B*C 先計算 A*B 然後計算(A*B)*C。
不知道你懂么??

⑨ 編譯原理中的右線性和左線性怎麼看

如S-->Sa 就是左線性,S-->aS就是右線性。看非終結符在最走還是最右

⑩ C++代碼怎樣看運行順序,代碼看一段不知道下面從什麼地方開始看啦。

按F9 在當前滑鼠出下斷點,斷點必須在程序可以運行到的語句處
菜單 工具-->開始調試,就會停在斷點處

F10 單步執行語句,遇到函數調用會越過
類似於匯編下debug的 p命令
F11 單步執行語句,遇到函數調用會跟進
類似於匯編下debug的 t 命令

滑鼠在某處右擊,選run to cursor,代碼就會執行到當前滑鼠位置的語句,
類似於匯編下debug的 G 命令

閱讀全文

與編譯看左邊運行看右邊原理相關的資料

熱點內容
尼故福利院 瀏覽:601
哪有好看的電影網站 瀏覽:772
紅顏薄命女斗小說 瀏覽:940
法國電影戀愛love2012電影完整版 瀏覽:459
在線影視 不卡 瀏覽:168
老男孩韓國完整版百度網盤 瀏覽:485
用箱子運水怪結果被放出來了電影 瀏覽:519
徐錦江空中飛人片名 瀏覽:164
手機免費在線看福利電影 瀏覽:457
羅麗星克萊爾經典 瀏覽:342
台灣紅羊有哪些經典電影 瀏覽:568
免下載你懂的 瀏覽:975
新建文件夾1女演員三位 瀏覽:740
不用下載就能看的視頻網站 瀏覽:330
我一個神偷硬生生把國家偷成強國 瀏覽:600
樣子是五歲小男孩和郭富城演的 瀏覽:460
韓國演員也美娜 瀏覽:898
陸離是哪部小說的主角 瀏覽:49
華娛開局佟麗婭 瀏覽:17
男男生子小說現代攻姓章 瀏覽:541