Java 作為企業級開發的主流語言,其核心機制與最佳實踐往往決定了代碼的質量與性能。本文整理了 13 條來自一線高手的實戰經驗,涵蓋位運算、類型轉換、字符串處理、I/O 操作、集合與數組、大數運算、命令行參數等核心知識點,助你夯實基本功,避開常見坑點。
>>>(無符號右移)會在最高位補 0,而 >>(有符號右移)則保留符號位。Java 沒有 <<< 運算符,因為左移不涉及符號位填充問題。
強制轉換直接截斷小數位,若需四捨五入請使用 Math.round()。例如:(int) 3.9 == 3,而 Math.round(3.9) == 4。
Java 中 boolean 不能與任何數值類型轉換,唯一變通方式是使用三元運算符:b ? 1 : 0。
Java 沒有內置原始字符串類型,String 是不可變的 final 類。正是因為不可變,String 才不提供修改內容的方法,這也使得字符串常量池共享成為可能,節省內存。
C++ 重載了 == 可直接比較字符串內容,Java 僅比較引用。正確做法是使用 equals() 或 compareTo()(類似 C 的 strcmp):
greeting.compareTo("Hello") == 0 // 內容相等
length() 返回 UTF-16 代碼單元數量codePointCount() 返回實際字符(代碼點)數量charAt(n) 取代碼單元,索引範圍 0 ~ length()-1offsetByCodePoints(0, i) 配合 codePointAt()StringBuilder builder = new StringBuilder();
builder.append(ch); // 或 append(str)
String result = builder.toString();
避免在循環中使用 + 拼接,減少中間對象創建。
Scanner 位於 java.util,適合解析各類輸入Console 可安全讀取密碼(不回顯):Console cons = System.console();
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");
printf 支持顯式索引,避免重複傳參:
System.out.printf("%1$s %2$tB %2$te %2$ty", "Due date:", new Date());
Scanner in = new Scanner(new File("myfile.txt")); // 路徑含反斜槓需轉義
PrintWriter out = new PrintWriter("myfile.txt");
文件不存在或不可建立時會拋出異常,務必捕獲處理。
當 long/double 精度不足時:
BigInteger a = BigInteger.valueOf(100);
a = a.add(b).multiply(c); // 不能用 + * 運算符
for (int v : arr) ...Arrays.toString(arr) / 二維用 Arrays.deepToString()int[] a = {1,2,3}; 或匿名 new int[]{1,2,3}Arrays.copyOf(arr, newLen)(擴容自動填充默認值)int* a = new int[100]Arrays.sort(arr)java Message -g cruel world
args[0]="-g" args[1]="cruel" args[2]="world"
這 13 條技術點貫穿 Java 基礎開發的方方面面,熟練掌握能顯著提升代碼健壯性與性能。建議收藏備查,實戰中反覆練習。