MyEclipse 是 Eclipse 的商業增強插件。安裝路徑與工作空間均不可包含中文或空格。破解通常需先配置 JDK 環境變數,再執行 run.bat。建立專案時可選 Java Project 或 Web Project,並指定 JDK 版本(可用內建或外部安裝)。
UserManager)addNum()、userName)userMing),核心原則:見名知意。Run As > Java Application 執行。Debug As > Java Application,切換至 Debug 視圖。| 功能 | 快捷鍵 |
|---|---|
| 代碼提示 | Alt + / |
| 快速導入包 | Ctrl + Shift + O |
| 單行註釋/取消 | Ctrl + / |
| 多行註釋 | Ctrl + Shift + / |
| 刪除當前行 | Ctrl + D |
MyEclipse 內建 JUnit Jar。核心註解:
@Test:標記測試方法(public void 無參)。@Before / @After:每個測試方法前/後執行。@Ignore:跳過該測試。Assert.assertEquals(expected, actual)。執行:方法/類右鍵 Run As > JUnit Test。綠條代表通過,紅條失敗。
解決集合元素「擦除」為 Object 導致的類型轉換風險。語法:List<String>。泛型參數只能是引用類型(基本類型用包裝類)。支援在類、介面、方法上定義。
// 泛型方法
public static <T> void swap(T[] arr, int i, int j) {
T tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp;
}
泛型擦除:僅存在於源碼階段,編譯後移除。
enum Color { RED, GREEN, YELLOW; }
本質是 Enum 子類,構造器私有。支援帶參數構造器、抽象方法與實例級實現。常用 API:name()、ordinal()、values()、valueOf()。
import static java.lang.System.out;
import static java.util.Arrays.sort;
可直接使用靜態成員(如 out.println()),提升可讀性。
Integer i = 10;(編譯器轉為 Integer.valueOf(10))。int n = i;(轉為 i.intValue())。new Integer(10) / .intValue() 的代碼在 5.0 仍可運行,重載解析遵循向下兼容原則。for (String s : list) { ... } // 適用於陣列及實現 Iterable 的集合
底層仍是迭代器,Map 需轉 entrySet() 或 keySet() 才能使用。
public static void add(int... nums) { // 視為 int[] 處理
for (int n : nums) sum += n;
}
限制:只能有一個,必須位於參數列表最後。
.java → 編譯 .class → 類加載器載入記憶體。java.lang.Class 物件表示(萬物皆物件)。Class 物件獲取結構:Field(屬性)、Constructor(構造器)、Method(方法)。框架開發核心:配置文件指定類名 → 反射載入 → 實例化/調用方法。
Class c1 = Person.class;
Class c2 = new Person().getClass();
Class c3 = Class.forName("cn.itcast.test09.Person"); // 最常用,支援動態配置
// 無參
Person p = (Person) c3.newInstance();
// 有參
Constructor cs = c1.getConstructor(String.class, String.class);
Person p1 = (Person) cs.newInstance("lisi", "100");
Field f = c2.getDeclaredField("name");
f.setAccessible(true); // 破解私有封裝
f.set(p11, "wangwu"); // 相當於 p11.name = "wangwu"
System.out.println(f.get(p11));
Method m = c4.getDeclaredMethod("setName", String.class);
m.invoke(p4, "niuqi"); // 實例方法傳實例
// 靜態方法第一個參數傳 null
m.invoke(null, "arg");