首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Applet 語法基礎速成 (二):變量、數據類型、運算符、陣列與流程控制

     編輯:Java 相關知識

前言:語法是溝通機器的橋樑

Applet 只是 Java 的一種部署形式,核心語法與 Java SE 完全一致。若有 C/C++ 基礎,Java 語法極其親切:去除了指針、多重繼承、運算符重載,加入垃圾回收、內建字符串、統一物件模型。本章以「最小必要知識集」快速建立語法直覺,配合代碼片段即學即用。

一、變量宣告與命名規範

// 語法:類型 變量名 [= 初始值];
int x = 10;
char grade = 'A';
float pi = 3.14f;
String name = "Applet";

// 合法標識符規則
// 1. 字母、數字、底線 _、美元符號 $ 組成
// 2. 首字符不能是數字
// 3. 區分大小寫 (name ≠ Name)
// 4. 不能是關鍵字 (class, int, for...)

// 推薦風格:駝峰命名
int maxCount;  // 變量/方法
final double PI = 3.14159;  // 常量全大寫+底線
class UserAccount {}  // 類 PascalCase

二、八大基本數據類型 (Primitive Types)

分類類型關鍵字位數範圍 / 說明預設值
布爾booleanboolean1 (實際佔 1 字節)true / falsefalse
字符字符char16 (Unicode)\u0000 ~ \uFFFF (0~65535)'\u0000'
整數 (有號)位元組byte8-128 ~ 1270
短整數short16-32,768 ~ 32,7670
整數int32-2.147B ~ 2.147B0
長整數long64-9.22E18 ~ 9.22E180L
浮點數 (IEEE 754)單精度float32±1.4E-45 ~ ±3.4E+38 (約 7 位有效數字)0.0f
雙精度double64±4.9E-324 ~ ±1.8E+308 (約 15 位有效數字)0.0d

關鍵細節

  • 字面值後綴:long l = 100L;、float f = 3.14f;、double d = 3.14; (無後綴默認 double)。
  • 科學計數法:3.14E3 = 3140、3.14E-2 = 0.0314。
  • char 與 int 互轉:char c = 'A'; // 65、char c = 65; // 'A' — 字符本質是無號 16 位整數。
  • boolean 無數值轉換:不能當 0/1 用,嚴格 true/false。

三、類型轉換

自動擴寬轉換 (Widening) — 無損精度/範圍

byte → short → int → long → float → double
char → int → long → float → double
// 編譯器自動完成
int i = 100;
long l = i;  // OK
double d = l; // OK

強制窄化轉換 (Narrowing) — 可能溢出/截斷

double → float → long → int → short → byte
// 必須顯式轉型
double d = 3.99;
int i = (int) d;  // i = 3 (截斷小數)
long L = 300;
byte b = (byte) L; // b = 44 (溢出截取低 8 位)

四、運算符完全圖譜

優先級 (高→低)分類運算符說明
1後綴expr++ expr--後增/減 (先用值再改變)
一元++expr --expr +expr -expr ~ !前增/減、正負號、位邏輯非、邏輯非
2乘除模* / %左結合
3加減+ -字串連接時 + 為重載
4位移<< >> >>>左移、帶號右移、無號右移
5關係< <= > >= instanceof回傳 boolean
6等值== !=基本類型比值、引用類型比地址
7位與&按位 AND
8位異或^按位 XOR
9位或|按位 OR
10邏輯與&&短路 (左假右不算)
11邏輯或||短路 (左真右不算)
12三元? :cond ? valTrue : valFalse
13賦值= += -= *= /= %= &= ^= |= <<= >>= >>>=右結合,a += b ≡ a = a + b

經典陷阱

int x = 2;
int y = (++x) * 3;  // x=3, y=9
int z = (x++) * 3;  // x=4, z=9 (用舊值 3 乘)

boolean flag = true;
int a = flag ? 10 : 20;  // a = 10

// 短路效應
if (obj != null && obj.method()) { ... }  // obj 為 null 時不調用 method(),避免 NPE

五、陣列

三步驟:宣告 → 配置空間 → 初始化

// 1. 宣告 (兩種寫法等價)
int[] scores;
int scores[];

// 2. 配置空間 (必須指定長度)
scores = new int[5];  // 索引 0~4,預設值 0

// 3. 初始化 (可合併 1+2+3)
int[] scores = {90, 85, 78, 92, 88};  // 長度自動為 5

// 多維陣列 (不規則陣列)
int[][] matrix = new int[3][];
matrix[0] = new int[2];
matrix[1] = new int[4];
matrix[2] = new int[3];

核心屬性

  • arr.length — 唯一屬性 (非方法),一維陣列長度;多維取各維 matrix[i].length。
  • 越界拋出 ArrayIndexOutOfBoundsException。
  • 陣列是物件,存儲在堆上,變量持有引用。

六、流程控制語句

1. 選擇結構

// if-else 鏈
if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else if (score >= 60) grade = 'D';
else grade = 'F';

// switch (支援 byte/short/char/int/String/enum)
switch (grade) {
    case 'A': desc = "優秀"; break;
    case 'B': desc = "良好"; break;
    case 'C': desc = "中等"; break;
    case 'D': desc = "及格"; break;
    default:  desc = "不及格";
}

2. 循環結構

// for (計數循環)
for (int i = 0; i < 10; i++) { ... }

// while (先判斷)
while (condition) { ... }

// do-while (至少執行一次)
do { ... } while (condition);

// 增強 for (Java 5+,遍歷陣列/Collection)
for (int score : scores) { System.out.println(score); }

3. 跳轉語句

  • break:跳出最近層 switch/for/while/do-while;帶標籤 break label; 跳出指定外層。
  • continue:結束本次循環迭代,進入下一次判斷;帶標籤同理。
  • return:結束方法,可選回傳值。
  • throw:拋出異常。
outer: for (int i=0; i<3; i++) {
    for (int j=0; j<3; j++) {
        if (i==1 && j==1) break outer;  // 直接跳出雙層
    }
}

4. 異常處理

try {
    // 可能拋出異常代碼
} catch (IOException e) {
    // 處理 IO 異常
} catch (Exception e) {
    // 捕獲其他異常 (父類在後)
} finally {
    // 無論如何執行 (關流、釋放鎖)
}

七、綜合範例:打印等腰三角形 (雙層循環)

public class Triangle extends Applet {
    public void paint(Graphics g) {
        int n = 5;  // 高度
        for (int i = 1; i <= n; i++) {       // 控制行
            for (int j = 1; j <= n - i; j++) // 前導空格
                g.drawString(" ", 100 + j*10, i*20);
            for (int k = 1; k <= 2*i - 1; k++) // 星號
                g.drawString("*", 100 + (n-i+k)*10, i*20);
        }
    }
}
// 輸出:
//     *
//    ***
//   *****
//  *******
// *********

八、現代補充:Java 5+ 語法糖 (Applet 時代後引入,但必須知道)

  • 泛型:List list = new ArrayList<>(); — 編譯期類型安全。
  • 增強 for:for (String s : list)。
  • 自動裝箱/拆箱:Integer i = 10; int n = i;。
  • 可變參數:void print(String... msgs)。
  • 枚舉:enum Color { RED, GREEN, BLUE }。
  • 靜態導入:import static java.lang.Math.*;。
  • 註解:@Override, @Deprecated, @SuppressWarnings。

九、避坑速查表

錯誤代碼正確寫法原因
if (a = 5)if (a == 5)單等號是賦值,回傳值為 5 (真)
float f = 3.14;float f = 3.14f;無後綴字面值默認 double
String s == "abc""abc".equals(s)== 比引用,equals 比內容
int[] a = new int[5]; a[5]=1;a[4]=1;索引 0~length-1
for (int i=0; i<=10; i++)i < 10長度 10 最大索引 9
switch (longVal)不可用 longswitch 僅支援 byte/short/char/int/String/enum
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved