java指令,java指令重排序舉例

本文目錄一覽:

java新手必記得一些指令

java哪有什麼指令,你指的應該是寫eclipse開發時的java代碼快捷鍵命令吧:

Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了)

Ctrl+D: 刪除當前行

Ctrl+Alt+↓ 複製當前行到下一行(複製增加)

Ctrl+Alt+↑ 複製當前行到上一行(複製增加)

Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)

Alt+↑ 當前行和上面一行交互位置(同上)

Alt+← 前一個編輯的頁面

Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)

Alt+Enter 顯示當前選擇資源(工程,or 文件 or文件)的屬性

Shift+Enter 在當前行的下一行插入空行(這時滑鼠可以在當前行的任一位置,不一定是最後)

Shift+Ctrl+Enter 在當前行插入空行(原理同上條)

Ctrl+Q 定位到最後編輯的地方

Ctrl+L 定位在某行 (對於程序超過100的人就有福音了)

Ctrl+M 最大化當前的Edit或View (再按則反之)

Ctrl+/ 注釋當前行,再按則取消注釋

Ctrl+O 快速顯示 OutLine

Ctrl+T 快速顯示當前類的繼承結構

Ctrl+W 關閉當前Editer

Ctrl+K 參照選中的Word快速定位到下一個

Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)

Ctrl+/(小鍵盤) 摺疊當前類中的所有代碼

Ctrl+×(小鍵盤) 展開當前類中的所有代碼

Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有衝突,可以修改輸入法的熱鍵,也可以暫用

Alt+/來代替)

Ctrl+Shift+E 顯示管理當前打開的所有的View的管理器(可以選擇關閉,激活等操作)

Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒

有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)

Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)

Ctrl+Shift+F4 關閉所有打開的Editer

Ctrl+Shift+X 把當前選中的文本全部變味小寫

Ctrl+Shift+Y 把當前選中的文本全部變為小寫

Ctrl+Shift+F 格式化當前代碼

Ctrl+Shift+P 定位到對於的匹配符(譬如{}) (從前面定位後面時,游標要在匹配符裡面,後面到前面,則反

之)

下面的快捷鍵是重構裡面常用的,本人就自己喜歡且常用的整理一下(注:一般重構的快捷鍵都是Alt+Shift

開頭的了)

Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變數和類的Rename,比手工方法能節省很多勞動力

)

Alt+Shift+M 抽取方法 (這是重構裡面最常用的方法之一了,尤其是對一大堆泥團代碼有用)

Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)

Alt+Shift+L 抽取本地變數( 可以直接把一些魔法數字和字元串抽取成一個變數,尤其是多處調用的時候)

Alt+Shift+F 把Class中的local變數變為field變數 (比較實用的功能)

Alt+Shift+I 合併變數(可能這樣說有點不妥Inline)

Alt+Shift+V 移動函數和變數(不怎麼常用)

Alt+Shift+Z 重構的後悔葯(Undo)

編輯

作用域 功能 快捷鍵

全局 查找並替換 Ctrl+F

文本編輯器 查找上一個 Ctrl+Shift+K

文本編輯器 查找下一個 Ctrl+K

全局 撤銷 Ctrl+Z

全局 複製 Ctrl+C

全局 恢復上一個選擇 Alt+Shift+↓

全局 剪切 Ctrl+X

全局 快速修正 Ctrl1+1

全局 內容輔助 Alt+/

全局 全部選中 Ctrl+A

全局 刪除 Delete

全局 上下文信息 Alt+?

Alt+Shift+?

Ctrl+Shift+Space

java編輯器 顯示工具提示描述 F2

java編輯器 選擇封裝元素 Alt+Shift+↑

java編輯器 選擇上一個元素 Alt+Shift+←

java編輯器 選擇下一個元素 Alt+Shift+→

文本編輯器 增量查找 Ctrl+J

文本編輯器 增量逆向查找 Ctrl+Shift+J

全局 粘貼 Ctrl+V

全局 重做 Ctrl+Y

還有好多,但用到的不多,自己百度

java, cmd的使用?

一、簡述:

cmd中,執行java命令與javac命令的區別:

javac:是編譯命令,將java源文件編譯成.class位元組碼文件。

例如:javac hello.java

將生成hello.class文件。

java:是運行位元組碼文件;由java虛擬機對位元組碼進行解釋和運行。

例如:java hello

二、詳述:

下面我們來寫個java文件試試。

1、打開記事本,輸入一個類+主函數

public class Hello{

public static void main(String[] args) {

System.out.println(“Hello World”);

}

}

2、點擊 文件-保存,保存到相應文件夾下,文件名修改了xxx.java

3、在Hello.java文件夾內,空白位置,按住鍵盤Shift,右擊滑鼠,選擇「在此處打開命令窗口」

4、輸入 javac Hello.java 回車

如果java類書寫格式沒有錯誤,cmd不會報錯,而且在java文件同目錄內生成一個class文件。

5、輸入 java Hello 回車

若輸出下圖,恭喜你,成功了!你已經把java類中,輸出列印「Hello World」顯示在cmd命令行中。

三、總結:

首先我們使用記事本編寫java源代碼,擴展名.java;

在命令行模式中,輸入命令:javac 源文件名.java,對源代碼進行編譯,生成class位元組碼文件;

編譯完成後,如果沒有報錯信息,輸入命令:java Hello,對class位元組碼文件進行解釋運行,列印「Hello World」。

為了方便大家理解javac和java編譯運行過程,可以看下圖:

至此,我相信大家應該對javac和java使用有了比較客觀的了解。

四、答疑:

接下來,我們來看一下大家在實踐中容易遇到的問題。

問題一:cmd命令一定要準確,區分大小寫,注意是否要加擴展名。

javac Hello.java

java Hello

問題二:javac命令報錯,如下圖

javac命令報錯,一般都是java代碼有誤,需要檢查修改。

下圖中,java代碼很明顯的錯誤,輸出列印語句寫在了main函數的外面,修改正確就不會報錯了。

javac命令報錯,去看java代碼,肯定有錯誤。

問題三:javac命令執行完成,生成class文件,但是java命令報錯,如下圖

我查閱資料,找到報錯的原因,首先檢查java源代碼,記住,java類不要加package路徑!再就是java環境變數有問題,咱們一起來檢查一下。

右擊「計算機-屬性-高級系統設置」,單擊「環境變數」。我相信大家都已經配置java環境變數,咱們來檢查一下。

逐一核對 」JAVA_HOME」 「Path」 「CLASSPATH」

(1)”JAVA_HOME”,變數值是你的電腦JDK的安裝路徑,我的是”D:\java\tool\java1.8\JDK”

(2)”Path”,在原變數值的最後面加上」;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin」

(3)」CLASSPATH」,變數值」.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar」

特別注意變數值開頭是」.;」(點分號),這個地方需要特別注意,我就是因為這個點和分號不對報錯的。

java源碼修改後,需要把之前生成的class文件刪除,從新運行javac和java命令。

環境變數修改後,一定要重啟cmd命令行窗口,再把把之前生成的class文件刪掉,重新運行javac和java命令。

註:若在輸入javac命令時,顯示’javac’不是內部或外部命令,原因也是因為沒有提前安裝好JDK開發環境或環境變數配置有誤。

JAVA指令大全

指令碼

助記符

說明

0x00

nop

什麼都不做

0x01

aconst_null

將null推送至棧頂

0x02

iconst_m1

將int型-1推送至棧頂

0x03

iconst_0

將int型0推送至棧頂

0x04

iconst_1

將int型1推送至棧頂

0x05

iconst_2

將int型2推送至棧頂

0x06

iconst_3

將int型3推送至棧頂

0x07

iconst_4

將int型4推送至棧頂

0x08

iconst_5

將int型5推送至棧頂

0x09

lconst_0

將long型0推送至棧頂

0x0a

lconst_1

將long型1推送至棧頂

0x0b

fconst_0

將float型0推送至棧頂

0x0c

fconst_1

將float型1推送至棧頂

0x0d

fconst_2

將float型2推送至棧頂

0x0e

dconst_0

將double型0推送至棧頂

0x0f

dconst_1

將double型1推送至棧頂

0x10

bipush

將單位元組的常量值(-128~127)推送至棧頂

0x11

sipush

將一個短整型常量值(-32768~32767)推送至棧頂

0x12

ldc

將int, float或String型常量值從常量池中推送至棧頂

0x13

ldc_w

將int, float或String型常量值從常量池中推送至棧頂(寬索引)

0x14

ldc2_w

將long或double型常量值從常量池中推送至棧頂(寬索引)

0x15

iload

將指定的int型本地變數推送至棧頂

0x16

lload

將指定的long型本地變數推送至棧頂

0x17

fload

將指定的float型本地變數推送至棧頂

0x18

dload

將指定的double型本地變數推送至棧頂

0x19

aload

將指定的引用類型本地變數推送至棧頂

0x1a

iload_0

將第一個int型本地變數推送至棧頂

0x1b

iload_1

將第二個int型本地變數推送至棧頂

0x1c

iload_2

將第三個int型本地變數推送至棧頂

0x1d

iload_3

將第四個int型本地變數推送至棧頂

0x1e

lload_0

將第一個long型本地變數推送至棧頂

0x1f

lload_1

將第二個long型本地變數推送至棧頂

0x20

lload_2

將第三個long型本地變數推送至棧頂

0x21

lload_3

將第四個long型本地變數推送至棧頂

0x22

fload_0

將第一個float型本地變數推送至棧頂

0x23

fload_1

將第二個float型本地變數推送至棧頂

0x24

fload_2

將第三個float型本地變數推送至棧頂

0x25

fload_3

將第四個float型本地變數推送至棧頂

0x26

dload_0

將第一個double型本地變數推送至棧頂

0x27

dload_1

將第二個double型本地變數推送至棧頂

0x28

dload_2

將第三個double型本地變數推送至棧頂

0x29

dload_3

將第四個double型本地變數推送至棧頂

0x2a

aload_0

將第一個引用類型本地變數推送至棧頂

0x2b

aload_1

將第二個引用類型本地變數推送至棧頂

0x2c

aload_2

將第三個引用類型本地變數推送至棧頂

0x2d

aload_3

將第四個引用類型本地變數推送至棧頂

0x2e

iaload

將int型數組指定索引的值推送至棧頂

0x2f

laload

將long型數組指定索引的值推送至棧頂

0x30

faload

將float型數組指定索引的值推送至棧頂

0x31

daload

將double型數組指定索引的值推送至棧頂

0x32

aaload

將引用型數組指定索引的值推送至棧頂

0x33

baload

將boolean或byte型數組指定索引的值推送至棧頂

0x34

caload

將char型數組指定索引的值推送至棧頂

0x35

saload

將short型數組指定索引的值推送至棧頂

0x36

istore

將棧頂int型數值存入指定本地變數

0x37

lstore

將棧頂long型數值存入指定本地變數

0x38

fstore

將棧頂float型數值存入指定本地變數

0x39

dstore

將棧頂double型數值存入指定本地變數

0x3a

astore

將棧頂引用型數值存入指定本地變數

0x3b

istore_0

將棧頂int型數值存入第一個本地變數

0x3c

istore_1

將棧頂int型數值存入第二個本地變數

0x3d

istore_2

將棧頂int型數值存入第三個本地變數

0x3e

istore_3

將棧頂int型數值存入第四個本地變數

0x3f

lstore_0

將棧頂long型數值存入第一個本地變數

0x40

lstore_1

將棧頂long型數值存入第二個本地變數

0x41

lstore_2

將棧頂long型數值存入第三個本地變數

0x42

lstore_3

將棧頂long型數值存入第四個本地變數

0x43

fstore_0

將棧頂float型數值存入第一個本地變數

0x44

fstore_1

將棧頂float型數值存入第二個本地變數

0x45

fstore_2

將棧頂float型數值存入第三個本地變數

0x46

fstore_3

將棧頂float型數值存入第四個本地變數

0x47

dstore_0

將棧頂double型數值存入第一個本地變數

0x48

dstore_1

將棧頂double型數值存入第二個本地變數

0x49

dstore_2

將棧頂double型數值存入第三個本地變數

0x4a

dstore_3

將棧頂double型數值存入第四個本地變數

0x4b

astore_0

將棧頂引用型數值存入第一個本地變數

0x4c

astore_1

將棧頂引用型數值存入第二個本地變數

0x4d

astore_2

將棧頂引用型數值存入第三個本地變數

0x4e

astore_3

將棧頂引用型數值存入第四個本地變數

0x4f

iastore

將棧頂int型數值存入指定數組的指定索引位置

0x50

lastore

將棧頂long型數值存入指定數組的指定索引位置

0x51

fastore

將棧頂float型數值存入指定數組的指定索引位置

0x52

dastore

將棧頂double型數值存入指定數組的指定索引位置

0x53

aastore

將棧頂引用型數值存入指定數組的指定索引位置

0x54

bastore

將棧頂boolean或byte型數值存入指定數組的指定索引位置

0x55

castore

將棧頂char型數值存入指定數組的指定索引位置

0x56

sastore

將棧頂short型數值存入指定數組的指定索引位置

0x57

pop

將棧頂數值彈出 (數值不能是long或double類型的)

0x58

pop2

將棧頂的一個(long或double類型的)或兩個數值彈出(其它)

0x59

dup

複製棧頂數值並將複製值壓入棧頂

0x5a

dup_x1

複製棧頂數值並將兩個複製值壓入棧頂

0x5b

dup_x2

複製棧頂數值並將三個(或兩個)複製值壓入棧頂

0x5c

dup2

複製棧頂一個(long或double類型的)或兩個(其它)數值並將複製值壓入棧頂

0x5d

dup2_x1

待補充

0x5e

dup2_x2

待補充

0x5f

swap

將棧最頂端的兩個數值互換(數值不能是long或double類型的)

0x60

iadd

將棧頂兩int型數值相加並將結果壓入棧頂

0x61

ladd

將棧頂兩long型數值相加並將結果壓入棧頂

0x62

fadd

將棧頂兩float型數值相加並將結果壓入棧頂

0x63

dadd

將棧頂兩double型數值相加並將結果壓入棧頂

0x64

isub

將棧頂兩int型數值相減並將結果壓入棧頂

0x65

lsub

將棧頂兩long型數值相減並將結果壓入棧頂

0x66

fsub

將棧頂兩float型數值相減並將結果壓入棧頂

0x67

dsub

將棧頂兩double型數值相減並將結果壓入棧頂

0x68

imul

將棧頂兩int型數值相乘並將結果壓入棧頂

0x69

lmul

將棧頂兩long型數值相乘並將結果壓入棧頂

0x6a

fmul

將棧頂兩float型數值相乘並將結果壓入棧頂

0x6b

dmul

將棧頂兩double型數值相乘並將結果壓入棧頂

0x6c

idiv

將棧頂兩int型數值相除並將結果壓入棧頂

0x6d

ldiv

將棧頂兩long型數值相除並將結果壓入棧頂

0x6e

fdiv

將棧頂兩float型數值相除並將結果壓入棧頂

0x6f

ddiv

將棧頂兩double型數值相除並將結果壓入棧頂

0x70

irem

將棧頂兩int型數值作取模運算並將結果壓入棧頂

0x71

lrem

將棧頂兩long型數值作取模運算並將結果壓入棧頂

0x72

frem

將棧頂兩float型數值作取模運算並將結果壓入棧頂

0x73

drem

將棧頂兩double型數值作取模運算並將結果壓入棧頂

0x74

ineg

將棧頂int型數值取負並將結果壓入棧頂

0x75

lneg

將棧頂long型數值取負並將結果壓入棧頂

0x76

fneg

將棧頂float型數值取負並將結果壓入棧頂

0x77

dneg

將棧頂double型數值取負並將結果壓入棧頂

0x78

ishl

將int型數值左移位指定位數並將結果壓入棧頂

0x79

lshl

將long型數值左移位指定位數並將結果壓入棧頂

0x7a

ishr

將int型數值右(符號)移位指定位數並將結果壓入棧頂

0x7b

lshr

將long型數值右(符號)移位指定位數並將結果壓入棧頂

0x7c

iushr

將int型數值右(無符號)移位指定位數並將結果壓入棧頂

0x7d

lushr

將long型數值右(無符號)移位指定位數並將結果壓入棧頂

0x7e

iand

將棧頂兩int型數值作「按位與」並將結果壓入棧頂

0x7f

land

將棧頂兩long型數值作「按位與」並將結果壓入棧頂

0x80

ior

將棧頂兩int型數值作「按位或」並將結果壓入棧頂

0x81

lor

將棧頂兩long型數值作「按位或」並將結果壓入棧頂

0x82

ixor

將棧頂兩int型數值作「按位異或」並將結果壓入棧頂

0x83

lxor

將棧頂兩long型數值作「按位異或」並將結果壓入棧頂

0x84

iinc

將指定int型變數增加指定值(i++, i–, i+=2)

0x85

i2l

將棧頂int型數值強制轉換成long型數值並將結果壓入棧頂

0x86

i2f

將棧頂int型數值強制轉換成float型數值並將結果壓入棧頂

0x87

i2d

將棧頂int型數值強制轉換成double型數值並將結果壓入棧頂

0x88

l2i

將棧頂long型數值強制轉換成int型數值並將結果壓入棧頂

0x89

l2f

將棧頂long型數值強制轉換成float型數值並將結果壓入棧頂

0x8a

l2d

將棧頂long型數值強制轉換成double型數值並將結果壓入棧頂

0x8b

f2i

將棧頂float型數值強制轉換成int型數值並將結果壓入棧頂

0x8c

f2l

將棧頂float型數值強制轉換成long型數值並將結果壓入棧頂

0x8d

f2d

將棧頂float型數值強制轉換成double型數值並將結果壓入棧頂

0x8e

d2i

將棧頂double型數值強制轉換成int型數值並將結果壓入棧頂

0x8f

d2l

將棧頂double型數值強制轉換成long型數值並將結果壓入棧頂

0x90

d2f

將棧頂double型數值強制轉換成float型數值並將結果壓入棧頂

0x91

i2b

將棧頂int型數值強制轉換成byte型數值並將結果壓入棧頂

0x92

i2c

將棧頂int型數值強制轉換成char型數值並將結果壓入棧頂

0x93

i2s

將棧頂int型數值強制轉換成short型數值並將結果壓入棧頂

0x94

lcmp

比較棧頂兩long型數值大小,並將結果(1,0,-1)壓入棧頂

0x95

fcmpl

比較棧頂兩float型數值大小,並將結果(1,0,-1)壓入棧頂;當其中一個數值為NaN時,將-1壓入棧頂

0x96

fcmpg

比較棧頂兩float型數值大小,並將結果(1,0,-1)壓入棧頂;當其中一個數值為NaN時,將1壓入棧頂

0x97

dcmpl

比較棧頂兩double型數值大小,並將結果(1,0,-1)壓入棧頂;當其中一個數值為NaN時,將-1壓入棧頂

0x98

dcmpg

比較棧頂兩double型數值大小,並將結果(1,0,-1)壓入棧頂;當其中一個數值為NaN時,將1壓入棧頂

0x99

ifeq

當棧頂int型數值等於0時跳轉

0x9a

ifne

當棧頂int型數值不等於0時跳轉

0x9b

iflt

當棧頂int型數值小於0時跳轉

0x9c

ifge

當棧頂int型數值大於等於0時跳轉

0x9d

ifgt

當棧頂int型數值大於0時跳轉

0x9e

ifle

當棧頂int型數值小於等於0時跳轉

0x9f

if_icmpeq

比較棧頂兩int型數值大小,當結果等於0時跳轉

0xa0

if_icmpne

比較棧頂兩int型數值大小,當結果不等於0時跳轉

0xa1

if_icmplt

比較棧頂兩int型數值大小,當結果小於0時跳轉

0xa2

if_icmpge

比較棧頂兩int型數值大小,當結果大於等於0時跳轉

0xa3

if_icmpgt

比較棧頂兩int型數值大小,當結果大於0時跳轉

0xa4

if_icmple

比較棧頂兩int型數值大小,當結果小於等於0時跳轉

0xa5

if_acmpeq

比較棧頂兩引用型數值,當結果相等時跳轉

0xa6

if_acmpne

比較棧頂兩引用型數值,當結果不相等時跳轉

0xa7

goto

無條件跳轉

0xa8

jsr

跳轉至指定16位offset位置,並將jsr下一條指令地址壓入棧頂

0xa9

ret

返回至本地變數指定的index的指令位置(一般與jsr, jsr_w聯合使用)

0xaa

tableswitch

用於switch條件跳轉,case值連續(可變長度指令)

0xab

lookupswitch

用於switch條件跳轉,case值不連續(可變長度指令)

0xac

ireturn

從當前方法返回int

0xad

lreturn

從當前方法返回long

0xae

freturn

從當前方法返回float

0xaf

dreturn

從當前方法返回double

0xb0

areturn

從當前方法返回對象引用

0xb1

return

從當前方法返回void

0xb2

getstatic

獲取指定類的靜態域,並將其值壓入棧頂

0xb3

putstatic

為指定的類的靜態域賦值

0xb4

getfield

獲取指定類的實例域,並將其值壓入棧頂

0xb5

putfield

為指定的類的實例域賦值

0xb6

invokevirtual

調用實例方法

0xb7

invokespecial

調用超類構造方法,實例初始化方法,私有方法

0xb8

invokestatic

調用靜態方法

0xb9

invokeinterface

調用介面方法

0xba

0xbb

new

創建一個對象,並將其引用值壓入棧頂

0xbc

newarray

創建一個指定原始類型(如int, float, char…)的數組,並將其引用值壓入棧頂

0xbd

anewarray

創建一個引用型(如類,介面,數組)的數組,並將其引用值壓入棧頂

0xbe

arraylength

獲得數組的長度值並壓入棧頂

0xbf

athrow

將棧頂的異常拋出

0xc0

checkcast

檢驗類型轉換,檢驗未通過將拋出ClassCastException

0xc1

instanceof

檢驗對象是否是指定的類的實例,如果是將1壓入棧頂,否則將0壓入棧頂

0xc2

monitorenter

獲得對象的鎖,用於同步方法或同步塊

0xc3

monitorexit

釋放對象的鎖,用於同步方法或同步塊

0xc4

wide

待補充

0xc5

multianewarray

創建指定類型和指定維度的多維數組(執行該指令時,操作棧中必須包含各維度的長度值),並將其引用值壓入棧頂

0xc6

ifnull

為null時跳轉

0xc7

ifnonnull

不為null時跳轉

0xc8

goto_w

無條件跳轉(寬索引)

0xc9

jsr_w

跳轉至指定32位offset位置,並將jsr_w下一條指令地址壓入棧頂

編譯java程序需要使用什麼命令

編譯命令是  javac

首先使用記事本編輯一段簡單的Java代碼

然後保存為HelloWorld.java文件(注意類名需要和文件名保持一致)

3.打開cmd命令行

4.進入HelloWorld.java所在的目錄

5.輸入javac HelloWorld.java命令,輸入完成後按下回車鍵

6.執行完javac命令後會看到文件夾下多出了一個HelloWorld.class文件

7.進入HelloWorld.class的目錄下,執行java HelloWorld命令,執行完成後會看到執行結果

北大青鳥java培訓:位元組碼指令的編譯與執行?

java編程開發是目前市場上使用範圍非常廣泛的一種編程開發語言。

今天我們就一起來了解一下,在java編程中關於位元組碼的一些指令的編譯與執行方法。

java文件編譯後的class文件,java跨平台的中間層,JVM通過對位元組碼的解釋執行(執行模式,還有JIT編譯執行,下面講解),屏蔽對操作系統的依賴。

一個位元組(8位)可以儲存256中不同的指令,這樣的指令就是位元組碼,java所有指令有200個左右,這些指令組成了位元組碼文件(.class)。

一、位元組碼的主要指令:.class文件裡面的十六進位文件,其中CAFEBABE是標誌這個文件為java的編譯後的文件,00000034代表版本號,01670700一個位元組(8位)就是一個位元組指令,由於數值指令太難看懂,我們可以用javap將指令翻譯為助記指令。

1、載入或儲存指令在棧幀中,通過指令操作數據在局部變數表與操作棧間傳遞。

ILOAD、ALOAD:將int、對象引用類型從局部變數表壓入操作棧頂;ISTORE、ASTORE:將int、對象引用類型從操作棧頂儲存到局部變數表裡;ICONST、BIPUSH、SIPUSH、LDC:將常亮載入到操作棧頂。

2、運算指令對操作棧上的值進行運算,並把結果寫入操作棧頂,如IADD、IMUL。

3、類型轉換指令I2L、D2F4、對象創建與訪問指令NEW除了位元組碼指令外,海南電腦培訓認為還包括像LINENUMBER儲存位元組碼與源碼對應,方便調試定位;LOCALVARIABLE儲存當前方法使用到的局部表量表。

二、java源碼文件轉化為位元組碼(.class)文件的過程JAVA源文件———-詞法解析———-語法解析———-語義分析———生成位元組碼———位元組碼文件詞法分析:根據空格分割出單詞、操作符等,形成token信息流;語法分析:根據token流和java語法規範生成語法樹;語義分析:檢查關鍵字、類型匹配是否正確;

javac命令和java命令做什麼事情呢?

javac用來編譯java文件,java用來執行。

1,javac命令用來編譯java文件,例如編寫一個Test.java文件,使用javac Test.java可以執行編譯操作,將生成一個Test.class文件。

2,java命令可以執行生成的class文件,使用java Test可以執行編寫的代碼。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/232578.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 12:52
下一篇 2024-12-11 12:52

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論