標籤:運算 元素 c語言 錯誤 就會 有一個 大小 因此 als
● Java入門
①.位元組碼由Java虛擬機器負責解釋運行,即Java虛擬機器負責將位元組碼翻譯成本機電腦的機器碼,並將將機器碼交給本地的作業系統運行。
②.如果源檔案中有多個類,那麼只能有一個類是public類;如果有一個類是public類,那麼源檔案的名字必須與這個類的名字完全相同,副檔名是.java;
③.如果源檔案中沒有public類,那麼源檔案的名字只要和某個類的名字相同,並且副檔名是.java。
④.如果源檔案中包含多個類,編譯源檔案將產生多個副檔名為.clalss的檔案,每個副檔名是.class的檔案中只存放一個類的位元組碼,其檔案名稱和該類的名字相同。
⑤.這些位元組碼檔案被存放在與源檔案相同的目錄中。Java解譯器執行的類名必須是主類的名字(沒有副檔名)。當使用Java解譯器運行應用程式是,Java虛擬機器首先將程式需要的位元組碼檔案載入到記憶體,然後解釋執行自己碼檔案。
● 基礎資料型別 (Elementary Data Type)和數組
Java中沒有無符號的byte,short,int和long,這一點和C語言有很大的不同,因此,unsigned int m;是錯誤的變數聲明。
基本類型層級由高到低
double float long int char short byte
當把層級低的變數的值賦給層級高的變數是,系統自動完成資料類型的轉化。當把層級高的變數的值賦給層級低的變數是必須使用類型轉換運算。一個常見的錯誤是把一個double型常量賦值給float型變數時沒有進行類型的轉換運算:float x = 12.4;
正確的做法:
float x = 12.4F;或者float x = (float)12.4;
註:與C/C++不同,Java不允許在聲明數組中的方括弧內指定數組元素的個數。一次性聲明多個數組:int [] a,b;
註:和C語言不同的是,Java允許使用int變數的值指定數組的元素的個數,例如:int size = 30;double number[] = new double[size];
● 類與對象
成員變數有預設值,但局部變數沒有預設值,因此在使用局部變數之前,必須保證局部變數有具體的值。
註:變數的賦值
聲明變數時可賦予初值class A{int a;float b= 12.56f;}非法的指派陳述式:編譯出錯class A{int a;float b;a=12;b=12.56f;}
所謂建立對象,就是指為對象分配變數,並獲得一個引用,以確保這些變數由該對象來操作管理,new運算子只能和類的構造方法進行運算,運算的最後結果是一個十六進位的數,這個數稱作為對象的引用,即運算式new XXX()的值是一個引用。new運算子在計算出這個引用之前,首先給類中的成員變數分配記憶體空間,然後執行構造方法中的語句,這個時候不能稱對象已經誕生,因為還沒有計算出引用,即還沒有確定被分配了記憶體空間的成員變數是“誰”的成員。當計算出引用之後,即new XXX()運算式已經有值後,對象才誕生。如果把new XXX()運算式的值賦給一個對象,這個對象就擁有了被new 運算子分配了記憶體的成員變數,即new運算子為該對象分配了變數。
註:對象的引用存在棧中,對象的實體(分配個對象的變數)存在堆中。
棧(stack)與堆(heap)都是Java用來在RAM中存放資料的地方。Java自動管理棧和堆,程式員不能直接的設定棧和堆。棧的優勢是,存取速度比堆快。缺點是,存在棧中的資料大小與生存期必須是確定的,缺乏靈活性。堆的優勢是,可以動態地分配記憶體大小,生存期也不必事先告訴編譯器,Java的垃圾收集齊會自動的收走這些不再使用的資料。但缺點是,由於要在運行時動態分配記憶體,存取速度較慢。
● 記憶體回收
Java運行環境的“垃圾收集”發現堆中分配的實體不再被棧中任何對象所引用時就會釋放該實體在堆中在堆中佔用的記憶體。因此Java中很少出現“記憶體流失”,即由於程式忘記釋放記憶體所導致的記憶體溢出。
註:如果希望Java虛擬機器立刻進行“垃圾收集”操作,可以讓System類調用gc()方法。
Java入門