一個簡單的Java程序
args){ System.out.println("Hello,world"); } }
通過上述代碼,我們可以看到一個完整的Java程序的結構,Java程序的結構由如下三個部分組成:
1.源文件(擴展名為*.java):源文件帶有類的定義。類用來表示程序的一個組件,小程序或許只會有一個類。類的內容必須包含在花括號里面。
2.類:類中帶有一個或多個方法。方法必須在類的內部聲明。
3.方法:在方法的花括號中編寫方法應該執行的語句。 總結一下:類存在于源文件里面;方法存在于類中;語句存在于方法中。
注意:在一個源文件中只能有一個public修飾的類,而且源文件名字必須與public修飾的類名字相同。否則會報如下的錯誤
如何運行Java程序
一個面試題 JDK、JRE、JVM之間的關系?
JDK(Java Development Kit):Java開發工具包,提供給Java程序員使用,包含了JRE,同時還包含了編譯器javac與自帶的調試工具Jconsole、jstack等。
JRE(Java Runtime Environment):Java運行時環境,包含了JVM,Java基礎類庫。是使用Java語言編寫程序運行的所需環境。
JVM:Java虛擬機,運行Java代碼
可以使用javadoc工具從Java源碼中抽離出注釋
/*** 文檔注釋,一般放在類的開始或者方法的開始* @version v1.0.0* @author abc* */
public class HelloWorld{/*** [這是第一個java的程序]* @param args [這個參數是運行是的參數]*/public static void main(String[] args){/*塊注釋for(int i = 0;i < args.length;i++) {System.out.println(args[i]);}*/// 單行注釋:System.out.println是Java中標準輸出,會將內容輸出到控制臺for(int i=0;i<args.length;i++){System.out.println(args[i]);}//System.out.println("hello world");System.out.println("你好");}
}
命令如下
javadoc -d myHello -author -version -encoding UTF-8 -charset UTF-8 HelloWorld.java
在生成的文件夾中打開,下圖所指文件
生成一個說明書,如下
標識符
在程序中,Test稱為類名,main稱為方法名,也可以將其稱為標識符,即:在程序中由用戶給類名、方法名或者變量所取的名字。
【硬性規則】 標識符中可以包含:字母、數字以及 下劃線和 $ 符號等等。 注意:標識符不能以數字開頭,也不能是關鍵字,且嚴格區分大小寫。
【軟性建議】 類名:每個單詞的首字母大寫(大駝峰),如HelloWorld
方法名:首字母小寫,后面每個單詞的首字母大寫(小駝峰),如myBall 變量名:與方法名規則相同
數據類型與變量
字面常量
常量即程序運行期間,固定不變的量稱為常量,比如:一個禮拜七天,一年12個月等 字面常量的分類:
- 字符串常量:由""括起來的,比如“12345”、“hello”、“你好”。
- 整形常量:程序中直接寫的數字(注意沒有小數點),比如:100、1000
- 浮點數常量:程序中直接寫的小數,比如:3.14、0.49
- 字符常量:由 單引號 括起來的當個字符,比如:‘A’、‘1’
- 布爾常量:只有兩種true和false
- 空常量:null(后面了講)
注意:字符串、整形、浮點型、字符型以及布爾型,在Java中都稱為數據類型。
數據類型
在Java中數據類型主要分為兩類:基本數據類型和引用數據類型。
基本數據類型有四類八種:
- 四類:整型、浮點型、字符型以及布爾型
- 八種:
正數處之所以減去1,是因為這里包含了0
不論是在16位系統還是32位系統,int都占用4個字節,long都占8個字節
變量
在一行可以定義多個相同類型的變量
整型變量 在給變量設置初始值時,值不能超過int的表示范圍,否則會導致溢出
局部變量在使用之前必須要賦初值,否則編譯報錯
int型變量所能表示的范圍
Integer為包裝類型
長整型變量
為了區分int和long類型,一般建議:long類型變量的初始值之后加L
long型變量所能表示的范圍
短整型變量
short在任何系統下都占2個字節
字節型變量byte
byte在任何系統下都占1個字節;
字節的包裝類型為Byte
浮點型變量
雙精度浮點型double
在 Java 中, int 除以 int 的值仍然是 int(會直接舍棄小數部分)。
如果想得到 0.5,需要使用 double 類型計算
double 類型的內存布局遵守 IEEE 754 標準(和C語言一樣), 嘗試使用有限的內存空間表示可能無限的小數,勢必會存在一定的精度誤差,因此浮點數是個近似值,并不是精確值。
單精度浮點型
字符型變量
Java 中使用 單引號 + 單個字母 的形式表示字符字面值,占用兩個字節
在 C 語言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一個字符占用兩個字節,表示的字符種類更多, 包括中文
布爾型變量
boolean 類型的變量只有兩種取值, true 表示真, false 表示假
Java 的 boolean 類型和 int 不能相互轉換, 不存在 1 表示 true, 0 表示 false 這樣的用法
Java虛擬機規范中,并沒有明確規定boolean占幾個字節
類型轉換 Java中類型轉換主要分為兩類:自動類型轉換(隱式) 和強制類型轉換(顯式)。 自動類型轉換(隱式)
特點:數據范圍小的轉為數據范圍大的時會自動進行。
a1和a2都是整形,a1的范圍小,a2的范圍大,當將a1賦值給a2時,編譯器會自動將a1提升為long類型,然后賦值
編譯報錯,long的范圍比int范圍大,會有數據丟失,不安全
強制類型轉換(顯式) 強制類型轉換:當進行操作時,代碼需要經過一定的格式處理,不能自動完成。特點:數據范圍大的到數據范圍小的。
將一個字面值常量進行賦值的時候, Java 會自動針對數字范圍進行檢查
100默認為int,沒有超過byte范圍,隱式轉換(對int類型特殊處理);257默認為int,超過byte范圍,需要顯示轉換,否則報錯
強制類型轉換不一定能成功,不相干的類型不能互相轉換,boolean和數值類型
類型提升 數據類型小的會被提升到數據類型大的
byte與byte的運算
原因是, 雖然 a 和 b 都是 byte, 但是計算 a + b 會先將 a和 b 都提升成 int, 再進行計算, 得到的結果也是 int, 這是賦給 c, 就會出現上述錯誤
由于計算機的 CPU 通常是按照 4 個字節為單位從內存中讀寫數據. 為了硬件上實現方便, 諸如 byte 和 short這種低于 4 個字節的類型, 會先提升成 int, 再參與計算 正確的寫法如下
字符串類型
在Java中使用String類定義字符串類型
s1+s2表示:將s1和s2進行拼接
在有些情況下,需要將字符串和整形數字之間進行轉換 int 轉成 String
第一種方法利用String類中的方法;
第二種方法,字符串和其它類型的相加,結果就是字符串
String 轉成 int