Java是編譯的,因為他把源代碼變成了位元組碼,而不是每次都解釋源代碼。
Java是解釋的。因為位元組碼是被JVM負責執行,而不是真正的二進制碼!
⑵ java代碼看不懂怎麼辦
看代碼前需要先了解那塊代碼是做什麼的,這樣才能跟得上代碼邏輯。如果知道代碼功能,還是不懂的話,那麼看代碼行數。
1、低於20行的代碼看不懂,你需要鞏固java基礎
2、超過20行的話,需要仔細理解代碼意圖,另外需要了解更多的java API以及開源代碼
一般看別人的代碼是很痛苦的,java高手也有看不懂的時候,譬如代碼本身就寫的爛,邏輯不明確。
⑶ 一個java程序編譯錯誤提示,看不太懂,求解!
StaticA的對象A創建在內存中,而A僅是一個字元A而已,它指向內存中真正創建的對象。比方說:一個卡片上寫著「JAVA編程思想」,這個卡片上慎唯有根線,連在一本名字叫做《JAVA編程思想》的書上。那麼卡片上寫的僅僅是個字元而已,不是真正的書。但是可以通過卡片找到書。這里卡片就像你代碼里的A,但是A並不是真正的對象,它是一個符號,指向內存中真正的對象。你代碼里的符號A和B,沒定義就用,編譯器不知道這兩個符號從哪裡來的,表示什麼。
那麼現在如果說,讓你將class StaticDemo類中的StaticA A=new StaticA();該為StaticA a=new StaticA();而class StaticA類不去改動,你想想class StaticA中的列印語句中,A表示什麼呢?B又表示什麼呢?
對於System.out.println("a="+A.a+",b="+B.b);編譯器解釋到A.a和廳或B.b的時候,它就要先找到A,確定了A以後,再解釋出A.a,可是在class StaticA中他都不知道A是個什麼東西,在class StaticA中A沒有定義,內存中也就沒有對象。所以編譯器說找不到符號扮孝伍。
⑷ java語言編譯和解釋執行的具體過程是怎樣的
Java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬的機器。這台虛擬的機器在任何平台上都提供給編譯程序一個的共同的介面。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做位元組碼(ByteCode),它不面向任何特定的處理器,只面向虛擬機。每一種平台的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯後變成位元組碼,位元組碼由虛擬機解釋執行,虛擬機將每一條要執行的位元組碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行。
⑸ java編譯時候通過,運行時候出現一些我看不懂的異常
java.util.NoSuchElementException(元素不存在異常)
估計是你的SearchBus.java文虧告坦件中初始化列表時候,元素銷桐可能不存在。看看你初始化的數據是友沒否成功。
⑹ JAVA編譯不出來 大神來幫我看看什麼情況
提示很明確了,找不到文件,你再確認一下文件的路徑。脊凳
有一個快捷方式,在你的java文件的目錄下,按著shift然後滑鼠右鍵有一個在此處打開命令窗口,你試一下。
然後你的代碼有枯吵一個櫻敗旅問題,
System.out.println(a);
out 和 print之間少了一個點
⑺ 自己用java寫了個楊輝三角 編譯後的確是楊輝三角 但自己卻又看不懂了 大神分析下
public class IrregularArray {
public static void main(String[] args)
{
//新建數組,表示行和列源耐
int a[][]=new int[8][8];
//遍歷行
for(int i=0;i<a.length;i++){
//初始為1
a[0][0]=1;
//遍歷列
for(int j=1;j<=i;j++){
//凳睜第i行j列的值等於i-1行的j-1和i-1行和j列的值得和
a[i][j]=a[i-1][j-1]+a[i-1][j];
//打棗裂歲印出來
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
}
⑻ 我剛學Java 這個&&編譯的時候為什麼顯示不是語句 懵逼 搞不懂 求解答 QWQ
根據你的圖片,上面寫著 a>3 && a<6;
看來,你是把這句話單獨放在一行使用了,因為後面緊跟著分號。
這種算數表達式或者布爾表達式只有在C和C++里可以單獨成行,早友頌java中必須配合if, while, assert 等使用。如:
if(a>3&&a<6)
System.out.println(a+":BETWEEN3AND6WITHOPENINTERVAL"陸鄭告殲);
⑼ java中的編譯與反編譯
一、什麼是編譯
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
二、什麼是反編譯
計算機軟體反向工程(Reverseengineering)也稱為計算機軟體還原工亂陸程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,某些特定情況下可能推導出源代碼。反編譯作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
三、Java類的編譯與反編譯
我們在最宴陪岩初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
class文件打破了C或者C++等語言所遵循的傳統,使用這些傳統語言寫的程序通常首先被編譯,然後晌御被連接成單獨的、專門支持特定硬體平台和操作系統的二進制文件。通常情況下,一個平台上的二進制可執行文件不能在其他平台上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬體平台和操作系統上的二進制文件。
那麼反編譯呢,就是通過helloworld.class文件得到java文件(或者說是程序員能看懂的Java文件)
四、什麼時候會用到反編譯
1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那麼霍營java培訓認為可以把它反編譯成我們可以看得懂的文件。
2、學習Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現細節,我們可以藉助反編譯。
⑽ 在java中,程序編譯通過,卻輸出看不懂的亂七八雜玩意
java -version和javac - version一下,
看下兩個版本是否不一致