Java 速成
關於 Java
Java 是一種廣泛使用的計算機編程語言,擁有 跨平台、面向對象、泛型編程 的特性,廣泛應用於企業級 Web 應用開發和移動應用開發。
環境安裝
參見 JDK。
基本語法
主函數
Java 類似 C/C++ 語言,需要一個函數(在面向對象中,這被稱為方法)作為程序執行的入口點。
Java 的主函數的格式是固定的,形如:
| class Test {
public static void main(String[] args) {
// 程序的代碼
}
}
|
一個打包的 Java 程序(名稱一般是 *.jar)中可以有很多個類似的函數,但是當運行這個程序的時候,只有其中一個函數會被運行,這是定義在 Jar 的 Manifest 文件中的,在 OI 比賽中一般用不到關於它的知識。
註釋
和 C/C++ 一樣,Java 使用 // 和 /* */ 分別註釋單行和多行。
基本數據類型
| 類型名 |
意義 |
| boolean |
布爾類型 |
| byte |
字節類型 |
| char |
字符型 |
| double |
雙精度浮點 |
| float |
單精度浮點 |
| int |
整型 |
| long |
長整型 |
| short |
短整型 |
| null |
空 |
聲明變量
| int a = 12; // 設置 a 為整數類型,並給 a 賦值為 12
String str = "Hello, OI-wiki"; // 聲明字符串變量 str
char ch = 'W';
double PI = 3.1415926;
|
final 關鍵字
final 含義是這是最終的、不可更改的結果,被 final 修飾的變量只能被賦值一次,賦值後不再改變。
| final double PI = 3.1415926;
|
數組
| // 有十個元素的整數類型數組
// 其語法格式為 數據類型[] 變量名 = new 數據類型[數組大小]
int[] ary = new int[10];
|
字符串
| // 最為簡單的構造一個字符串變量的方法如下
String a = "Hello";
// 還可以使用字符數組構造一個字符串變量
char[] stringArray = { 'H', 'e', 'l', 'l', 'o' };
String s = new String(stringArray);
|
包和導入包
Java 中的類(Class)都被放在一個個包(package)裏面。在一個包裏面不允許有同名的類。在類的第一行通常要説明這個類是屬於哪個包的。例如:
| package org.oi-wiki.tutorial;
|
包的命名規範一般是:項目所有者的頂級域.項目所有者的二級域.項目名稱。
通過 import 關鍵字來導入不在本類所屬的包下面的類。例如下面要用到的 Scanner:
| import java.util.Scanner;
|
如果想要導入某包下面所有的類,只需要把這個語句最後的分號前的類名換成 *。
輸入
可以通過 Scanner 類來處理命令行輸入。
1
2
3
4
5
6
7
8
9
10
11
12 | package org.oiwiki.tutorial;
import java.util.Scanner;
class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); // System.in 是輸入流
int a = scan.nextInt();
double b = scan.nextDouble();
String c = scan.nextLine();
}
}
|
輸出
可以對變量進行格式化輸出。
| 符號 |
意義 |
%f |
浮點類型 |
%s |
字符串類型 |
%d |
整數類型 |
%c |
字符類型 |
1
2
3
4
5
6
7
8
9
10
11
12 | class Test {
public static void main(String[] args) {
int a = 12;
char b = 'A';
double s = 3.14;
String str = "Hello world";
System.out.printf("%f\n", s);
System.out.printf("%d\n", a);
System.out.printf("%c\n", b);
System.out.printf("%s\n", str);
}
}
|
控制語句
Java 的流程控制語句與 C++ 是基本相同的。
選擇
| class Test {
public static void main(String[] args) {
if ( /* 判斷條件 */ ){
// 條件成立時執行這裏面的代碼
}
}
}
|
| class Test {
public static void main(String[] args) {
if ( /* 判斷條件 */ ) {
// 條件成立時執行這裏面的代碼
} else {
// 條件不成立時執行這裏面的代碼
}
}
}
|
| class Test {
public static void main(String[] args) {
if ( /* 判斷條件 */ ) {
//判斷條件成立執行這裏面的代碼
} else if ( /* 判斷條件2 */ ) {
// 判斷條件2成立執行這裏面的代碼
} else {
// 上述條件都不成立執行這裏面的代碼
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14 | class Test {
public static void main(String[] args) {
switch ( /* 表達式 */ ){
case /* 值 1 */:
// 當表達式取得的值符合值 1 執行此段代碼
break; // 如果不加上 break 語句,會讓程序按順序往下執行直到 break
case /* 值 2 */:
// 當表達式取得的值符合值 2 執行此段代碼
break;
default:
// 當表達式不符合上面列舉的值的時候執行這裏面的代碼
}
}
}
|
循環
for 關鍵字有兩種使用方法,其中第一種是普通的 for 循環,形式如下:
| class Test {
public static void main(String[] args) {
for ( /* 初始化 */; /* 循環的判斷條件 */; /* 每次循環後執行的步驟 */ ) {
// 當循環的條件成立執行循環體內代碼
}
}
}
|
第二種是類似 C++ 的 foreach 使用方法,用於循環數組或者集合中的數據,相當於把上一種方式中的循環變量隱藏起來了,形式如下:
| class Test {
public static void main(String[] args) {
for ( /* 元素類型X */ /* 元素名Y */ : /* 集合Z */ ) {
// 這個語句塊的每一次循環時,元素Y分別是集合Z中的一個元素。
}
}
}
|
| class Test {
public static void main(String[] args) {
while ( /* 判定條件 */ ) {
// 條件成立時執行循環體內代碼
}
}
}
|
| class Test {
public static void main(String[] args) {
do {
// 需要執行的代碼
} while ( /* 循環判斷條件 */ );
}
}
|
注意事項
類名與文件名一致
創建 Java 源程序需要類名和文件名一致才能編譯通過,否則編譯器會提示找不到類。通常該文件名會在具體 OJ 中指定。
例:
Add.java
| class Add {
public static void main(String[] args) {
// ...
}
}
|
在該文件中需使用 Add 為類名方可編譯通過。
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用