欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java字節(jié)代碼操作,深入理解java字節(jié)碼

java中,負(fù)責(zé)對字節(jié)代碼解釋執(zhí)行的是?

java中負(fù)責(zé)對字節(jié)代碼解釋執(zhí)行的是虛擬機,虛擬機將得到的字節(jié)代碼進(jìn)行編碼運行。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了白山免費建站歡迎大家使用!

java程序,是先把java源程序通過javac命令編譯成字節(jié)碼文件,然后再用java命令解釋執(zhí)行。把字節(jié)碼文件復(fù)制到其它計算機上,只要有java虛擬機就可以用java命令來執(zhí)行。

簡述JAVA程序的編輯編譯和運行過程

第一步(編譯): 創(chuàng)建完源文件之后,程序會先被編譯為.class文件。Java編譯一個類時,如果這個類所依賴的類還沒有被編譯,編譯器就會先編譯這個被依賴的類,然后引用,否則直接引用,這個有點象make。

如果java編譯器在指定目錄下找不到該類所其依賴的類的.class文件或者.java源文件的話,編譯器話報“cant find symbol”的錯誤。

第二步(運行):java類運行的過程大概可分為兩個過程:1、類的加載 2、類的執(zhí)行。需要說明的是:JVM主要在程序第一次主動使用類的時候,才會去加載該類。也就是說,JVM并不是在一開始就把一個程序就所有的類都加載到內(nèi)存中,而是到不得不用的時候才把它加載進(jìn)來,而且只加載一次。

特別說明:java類中所有public和protected的實例方法都采用動態(tài)綁定機制,所有私有方法、靜態(tài)方法、構(gòu)造器及初始化方法clinit都是采用靜態(tài)綁定機制。而使用動態(tài)綁定機制的時候會用到方法表,靜態(tài)綁定時并不會用到。

擴展資料:

Java整個編譯以及運行的過程相當(dāng)繁瑣,本文通過一個簡單的程序來簡單的說明整個流程。

Java代碼編譯:是由Java源碼編譯器來完成;

Java字節(jié)碼的執(zhí)行:是由JVM執(zhí)行引擎來完成

Java程序從源文件創(chuàng)建到程序運行要經(jīng)過兩大步驟:

1、源文件由編譯器編譯成字節(jié)碼(ByteCode)

2、字節(jié)碼由java虛擬機解釋運行。因為java程序既要編譯同時也要經(jīng)過JVM的解釋運行,所以說Java被稱為半解釋語言( "semi-interpreted" language)。

java程序設(shè)計——字節(jié)流操作

代碼如下,運行下,是否符合你的要求:

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.Scanner;

public class Test

{

public static void main(String[] args) throws Exception

{

Scanner scan = new Scanner(System.in);

DataOutputStream dos = new DataOutputStream(new FileOutputStream("1.txt"));

//從鍵盤上輸入10個整數(shù),判斷哪些是偶數(shù),把所有偶數(shù)寫到一個文件中去

String content = "";

for(int i=0;i10;i++)

{

System.out.println("請輸入第" + (i+1) + "個數(shù)");

int num = scan.nextInt();

if(num %2 == 0) content += num + ",";

}

dos.writeUTF(content);

scan.close();

//從文件中讀出這些偶數(shù),顯示在屏幕上

DataInputStream dis = new DataInputStream(new FileInputStream("1.txt"));

try

{

content = dis.readUTF();

System.out.println(content);

} catch (Exception e)

{

e.printStackTrace();

}

dis.close();

}

}

Java字節(jié)碼的執(zhí)行是由什么完成的?

Java字節(jié)碼的執(zhí)行需要經(jīng)過以下3個步驟:

(1)由類裝載器(class loader)負(fù)責(zé)把類文件(.class文件)加載到Java虛擬機中。在此過程需要檢驗該類文件是否符合類文件規(guī)范。

(2)字節(jié)碼校驗器(bytecode verifier)檢查該類文件的代碼中是否存在著某些非法操作,例如Applet程序中寫本地計算機文件系統(tǒng)的操作。

(3)如果字節(jié)碼校驗器檢驗通過,由Java解釋器負(fù)責(zé)把該類文件解釋成為機器碼進(jìn)行執(zhí)行。

北大青鳥java培訓(xùn):字節(jié)碼指令的編譯與執(zhí)行?

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

今天我們就一起來了解一下,在java編程中關(guān)于字節(jié)碼的一些指令的編譯與執(zhí)行方法。

java文件編譯后的class文件,java跨平臺的中間層,JVM通過對字節(jié)碼的解釋執(zhí)行(執(zhí)行模式,還有JIT編譯執(zhí)行,下面講解),屏蔽對操作系統(tǒng)的依賴。

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

一、字節(jié)碼的主要指令:.class文件里面的十六進(jìn)制文件,其中CAFEBABE是標(biāo)志這個文件為java的編譯后的文件,00000034代表版本號,01670700一個字節(jié)(8位)就是一個字節(jié)指令,由于數(shù)值指令太難看懂,我們可以用javap將指令翻譯為助記指令。

1、加載或儲存指令在棧幀中,通過指令操作數(shù)據(jù)在局部變量表與操作棧間傳遞。

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

2、運算指令對操作棧上的值進(jìn)行運算,并把結(jié)果寫入操作棧頂,如IADD、IMUL。

3、類型轉(zhuǎn)換指令I(lǐng)2L、D2F4、對象創(chuàng)建與訪問指令NEW除了字節(jié)碼指令外,海南電腦培訓(xùn)認(rèn)為還包括像LINENUMBER儲存字節(jié)碼與源碼對應(yīng),方便調(diào)試定位;LOCALVARIABLE儲存當(dāng)前方法使用到的局部表量表。

二、java源碼文件轉(zhuǎn)化為字節(jié)碼(.class)文件的過程JAVA源文件----------詞法解析----------語法解析----------語義分析---------生成字節(jié)碼---------字節(jié)碼文件詞法分析:根據(jù)空格分割出單詞、操作符等,形成token信息流;語法分析:根據(jù)token流和java語法規(guī)范生成語法樹;語義分析:檢查關(guān)鍵字、類型匹配是否正確;

分享題目:java字節(jié)代碼操作,深入理解java字節(jié)碼
網(wǎng)頁網(wǎng)址:http://chinadenli.net/article12/dsgdhdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計網(wǎng)站制作網(wǎng)站內(nèi)鏈微信小程序建站公司云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)