Java高级用户指南-核心Java
原文地址:https://dzone.com/refcardz/core-java
本文采用Google翻譯,有些地方數據類型被翻譯成了中文,建議中英文對照一起看。
第1節
關于Core Java
此Refcard概述了Java語言的關鍵方面以及核心庫(格式化輸出,集合,正則表達式,日志記錄,屬性)以及最常用的工具(javac,java,jar)上的備忘單。
第2節Java關鍵字
| 抽象 | 抽象類或方法 | 抽象類Writable {public abstract void write(Writer out); public void save(String filename){...} |
| 斷言 | 如果啟用斷言,則在條件未滿足時拋出錯誤 | assert param!= null; 注意:使用-ea運行以啟用斷言 |
| 布爾 | 布爾值類型,值為true和false | boolean more = false; |
| 打破 | 斷開開關或回路 | while((ch = in.next())!= -1){if(ch =='\ n')break; 過程(ch); }注意:也看開關 |
| 字節 | 8位整數類型 | 字節b = -1; //不等于0xFF注意:小心字節<0 |
| 案件 | 開關的情況 | 見開關 |
| 抓住 | try塊的子句捕獲異常 | 看試試 |
| char | Unicode字符類型 | char input ='Q'; |
| 類 | 定義類類型 | class Person {private String name; public Person(String aName){name = aName; } public void print(){System.out.println(name); }} |
| 繼續 | 在循環結束時繼續 | while((ch = in.next())!= -1){if(ch =='')continue; 過程(ch); }} |
| 默認 | 1)交換機的默認子句 2)表示接口方法的默認實現 | 1)見開關 2) |
| 做 | 一個do / while循環的頂部 | do {ch = in.next(); } while(ch ==''); |
| 雙 | 雙精度浮點數型 | 雙1 = 0.5; |
| 其他 | if語句的else子句 | 看看 |
| 枚舉 | 枚舉類型 | enum Mood {SAD,HAPPY}; |
| 延伸 | 定義類的父類 | class Student extends Person {private int id; public Student(String name,int anId){...} public void print(){...} |
| 最后 | 一個常量,或一個不能被覆蓋的類或方法 | public static final int DEFAULT_ID = 0; |
| 最后 | 總是執行的try塊的部分 | 看試試 |
| 浮動 | 單精度浮點類型 | float oneHalf = 0.5F; |
| 對于 | 循環類型 | for(int i = 10; i> = 0; i--)System.out.println(i); for(String s:line.split(“\\ s +”))System.out.println(s); 注意:在“generalized”for循環中,:之后的表達式必須是數組或Iterable |
| 如果 | 條件語句 | if(input =='Q')System.exit(0); else more = true; |
| 實現 | 定義類實現的接口 | 類學生實現Printable {...} |
| 進口 | 導入包 | import java.util.ArrayList; import com.dzone.refcardz。*; |
| instanceof | 測試一個對象是否是一個類的實例 | if(fred instanceof Student)value =((Student)fred).getId(); 注意:null的instanceof T總是false |
| int | 32位整數類型 | int value = 0; |
| 接口 | 一個類可以實現的方法的抽象類型 | interface Printable {void print(); }} |
| 長 | 64位長整數類型 | long worldPopulation = 6710044745L; |
| 本機 | 由主機系統實現的方法 | ? |
| 新 | 分配一個新的對象或數組 | 人員fred =新人(“Fred”); |
| 空值 | 空引用 | Person optional = null; |
| 包 | 一個包的類 | package com.dzone.refcardz; |
| 私人的 | 一個只能通過此類的方法訪問的功能 | 見類 |
| 保護 | 一個只能通過此類,其子代和同一個包中的其他類的方法訪問的功能 | class Student {protected int id; ...} |
| 上市 | 一個可以通過所有類的方法訪問的功能 | 見類 |
| 返回 | 從一個方法返回 | int getId(){return id; }} |
| 短 | 16位整數類型 | 短裙長度= 24; |
| 靜態的 | 一個對其類唯一的特征,而不是它的類的對象 | public class WriteUtil {public static void write(Writable [] ws,String filename); public static final String DEFAULT_EXT =“.dat”; }} |
| strictfp | 對浮點計算使用嚴格的規則 | ? |
| 超 | 調用超類構造函數或方法 | public Student(String name,int anId){super(name); id = anId; } public void print(){super.print(); System.out.println(id); }} |
| 開關 | 選擇語句 | switch(ch){case'Q':case'q':more = false; 打破; 案件 ' '; 打破; default:process(ch); 打破; }注意:如果省略了中斷,則會繼續處理下一個情況。 |
| 同步 | 對線程而言是原子的方法或代碼塊 | public synchronized void addGrade(String gr){grades.add(gr); }} |
| 這個 | 方法的隱式參數,或者這個類的構造函數 | public Student(String id){this.id = id;} public Student(){this(“”); }} |
| 扔 | 拋出異常 | if(param == null)throw new IllegalArgumentException(); |
| 拋出 | 方法可以拋出的異常 | public void print()throws PrinterException,IOException |
| 短暫的 | 標記不應該持久的數據 | class Student {private transient Data cachedData; ...} |
| 嘗試 | 一個捕獲異常的代碼塊 | try {fred.print(out); } catch(PrinterException ex){ex.printStackTrace(); }} finally {out.close(); }} |
| void | 表示不返回值的方法 | public void print(){...} |
| 揮發性 | 確保字段由多個線程一致地訪問 | class Student {private volatile int nextId; ...} |
| 而 | 一個循環 | while(in.hasNext())process(in.next()); |
標準Java包
| java.applet | Applets(在Web頁面中運行的Java程序) |
| java.awt | 圖形和圖形用戶界面 |
| java.beans | 支持JavaBeans組件(具有屬性和事件偵聽器的類) |
| java.io | 輸入和輸出 |
| java.lang | 語言支持 |
| java.math | 任意精度數字 |
| java.net | 聯網 |
| java.nio | “新建”(內存映射)I / O |
| java.rmi | 遠程方法調用 |
| java.security | 安全支持 |
| java.sql | 數據庫支持 |
| java.text | 文本和數字的國際化格式 |
| java.time | 日期,時間,持續時間,時區等 |
| java.util | 實用程序(包括數據結構,并發,正則表達式和日志記錄) |
運算符優先級
| []。 ()(方法調用) | 左到右 | ? |
| ! ?++ - +(unary) - (unary)()(cast)new | 右到左 | ?翻轉一個數字的每一位 |
| * /% | 左到右 | 使用帶負數的%時要小心。 -a%b == - (a%b),但是一個%-b == a%b。 例如,-7%4 == -3,7%-4 == 3 |
| + - | 左到右 | ? |
| << >> >>> | 左到右 | >>是算術移位(正數和負數的n >> 1 == n / 2),>>>是邏輯移位(將0加到最高位)。 如果左手邊是一個整數,右手邊減去模數32,如果左手邊長則是模數64。 例如,1 << 35 == 1 << 3 |
| <= =>> = instanceof | 左到右 | null instanceof T總是false |
| ==!= | 左到右 | 檢查身份。 使用equals檢查結構相等性 |
| &lt; | 左到右 | 按位AND; 沒有使用bool參數的延遲評估 |
| ^ | 左到右 | 按位異或 |
| | | 左到右 | 按位OR; 沒有使用bool參數的延遲評估 |
| && | 左到右 | ? |
| || | 左到右 | ? |
| ?: | 右到左 | ? |
| = + = - = * = / =%=&= | = ^ = << = >> = >>> = | 右到左 | ? |
基本類型
| int | 4字節 | -2,147,483,648至2,147,483,647(剛剛超過20億) | 包裝類型為整數。 對任意精度整數使用BigInteger |
| 短 | 2字節 | -32,768 to 32,767 | ? |
| 長 | 8字節 | -9,223,372,036,854,775,808至9,223,372,036,854,775,807 | 字面值以L結尾(例如1L) |
| 字節 | 1字節 | -128?127 | 請注意,范圍不是0 ... 255 |
| 浮動 | 4字節 | 約-3.40282347E + 38F(6-7有效十進制數字) | 字面值以F結尾(例如0.5F) |
| 雙 | 8字節 | 約-1.79769313486231570E + 308(15個有效十進制數字) | 對任意精度浮點數使用BigDecimal |
| char | 2字節 | \ u0000至\ uFFFF | 包裝類型為Character。 Unicode字符> U + FFFF需要兩個字符值 |
| 布爾 | ? | 對或錯 | ? |
原始類型之間的法律轉換
虛線箭頭表示可能失去精度的轉化。
Lambda表達式
功能接口
用一個抽象方法接口。 例:
@FunctionalInterface public interface Predicate<T> { boolean test(T t); }此接口的實現可以作為lambda表達式在線提供:
- 功能接口的匿名實現
- 參數和主體由“箭頭符號”(“ - >”)分隔
- 抽象方法的參數在箭頭的左邊
- 實現是在箭頭的右邊
lambda表達式的典型用法:
JButton button = new JButton("MyButton"); button.addActionListener(event -> doSomeImportantStuff(event));方法參考
lambda表達式表示匿名函數。 您可以將它們作為方法參數傳遞或返回。 使用方法引用的命名方法也可以做到這一點。
方法參考文獻的典型用法:
| 無方法參考 | 使用方法引用 |
| button.addActionListener(event - > doSomeImportantStuff(event)); | button.addActionListener(this :: doSomeImportantStuff); |
| list.forEach(element - > System.out.println(element)); | list.forEach(System。out :: println); |
有四種方法引用:
| 種類的方法參考 | 例 |
| 靜態方法 | Collections :: emptyList |
| 一個特定(命名)對象的實例方法 | user :: getFirstName |
| 給定類型的任意對象(稍后命名)的實例方法 | User :: getFirstName |
| 到構造函數 | User :: new |
集合和常見算法
| ArrayList | 動態增長和收縮的索引序列 |
| LinkedList | 允許在任何位置有效插入和移除的有序序列 |
| ArrayDeque | 作為圓形數組實現的雙端隊列 |
| HashSet | 拒絕重復的無序集合 |
| TreeSet | 排序集 |
| EnumSet | 一組枚舉類型值 |
| LinkedHashSet | 記住插入元素的順序的集合 |
| PriorityQueue | 允許有效移除最小元素的集合 |
| HashMap | 存儲鍵/值關聯的數據結構 |
| TreeMap | 其中鍵被排序的映射 |
| EnumMap | 其中鍵屬于枚舉類型的映射 |
| LinkedHashMap | 記住添加條目順序的地圖 |
| WeakHashMap | 如果未在其他地方使用的值,那么可以由垃圾回收器回收的值的映射 |
| IdentityHashMap | 具有由==比較的鍵的映射,不等于 |
常見任務
| List <String> strs = new ArrayList <>(); | 收集字符串 |
| strs.add(“Hello”); strs.add(“World!”); | 添加字符串 |
| for(String str:strs)System.out.println(str); | 對集合中的所有元素執行某些操作 |
| 迭代器<String> iter = strs.iterator(); while(iter.hasNext()){String str = iter.next(); if(someCondition(str))iter.remove(); }} | 刪除與條件匹配的元素。 remove方法刪除前面調用next所返回的元素 |
| strs.addAll(strColl); | 添加另一個字符串集合中的所有字符串 |
| strs.addAll(Arrays.asList(args)) | 添加字符串數組中的所有字符串。 Arrays.asList是一個數組的List包裝器 |
| strs.removeAll(coll); | 刪除另一個集合的所有元素。 用于比較 |
| if(0 <= i && i <strs.size()){str = strs.get(i); strs.set(i,“Hello”); }} | 獲取或設置指定索引處的元素 |
| strs.insert(i,“Hello”); str = strs.remove(i); | 在指定索引處插入或刪除元素,移動索引值較高的元素 |
| String [] arr = new String [strs.size()]; strs.toArray(arr); | 從集合轉換到數組 |
| String [] arr = ...; List <String> lst = Arrays.asList(arr); lst = Arrays.asList(“foo”,“bar”,“baz”); | 從數組轉換為列表。 使用varargs表單來創建一個小集合 |
| List <String> lst = ...; lst.sort(); lst.sort(new Comparator <String>(){public int compare(String a,String b){return a.length() - b.length();}} | 按照元素的自然順序或使用自定義比較器對列表排序 |
| Map <String,Person> map = new LinkedHashMap <String,Person>(); | 創建以插入順序遍歷的映射(需要針對密鑰類型使用hashCode)。 使用TreeMap以排序順序遍歷(要求鍵類型是可比較的) |
| for(Map.Entry <String,Person> entry:map.entrySet()){String key = entry.getKey(); Person value = entry.getValue(); ...} | 迭代地圖的所有條目 |
| Person key = map.get(str); // null如果沒有找到map.put(key,value); | 獲取或設置給定鍵的值 |
Stream API的批量操作
| strs.forEach(System.out :: println); | 對集合中的所有元素執行某些操作 |
| List <String> filteredList = strs .stream().filter(this :: someCondition).collect(Collectors.toList()); | 過濾符合條件的元素 |
| String concat = strs | 連接流的元素 |
| List <User> users = ...; 列表<String> firstNames = users .stream().map(User :: getFirstName).collect(Collectors.toList()); | 創建一個映射到原始列表的新列表 |
| 列表<String> adminFirstNames = users .stream() | 組合操作這不會導致列表元素的兩次遍歷 |
| int sumOfAges = users .stream().mapToLong(User :: getAge).sum(); | 簡單還原操作 |
| Map <Role,List <User >> byRole = users .stream() .groupingBy(User :: getRole)); | 按特定屬性對用戶進行分組 |
| int sumOfAges = users .parallelStream().mapToLong(User :: getAge).sum(); | 所有上述操作可以并行完成 |
字符轉義序列
| \ b | 退格\ u0008 |
| \ t | 標簽\ u0009 |
| \ n | 換行符\ u000A |
| \F | 表單feed \ u000C |
| \ r | 回車\ u000D |
| \“ | 雙引號 |
| \' | 單引號 |
| \\ | 反斜杠 |
| \ uhhhh(hhhh是0000和FFFF之間的十六進制數) | UTF-16代碼點的值為hhhh |
| \ ooo(ooo是0到377之間的八進制數) | 八進制值為ooo的字符 |
| 注意:與C / C ++不同,不允許\ xhh | |
格式化輸出使用printf
典型用法
System.out.printf("%4d %8.2f", quantity, price); String str = String.format("%4d %8.2f", quantity, price);每個格式說明符具有以下格式。 請參閱表格中的標志和轉換字符。
標志
| 旗 | 描述 | 例 |
| + | 打印正數和負數的符號 | +3333.33 |
| 空間 | 在正數之前添加一個空格 | | 3333.33 | |
| 0 | 添加前導零 | 003333.33 |
| - - | 左對齊字段 | | 3333.33 | |
| (( | 括號中包含負數 | (3333.33) |
| , | 添加組分隔符 | 3,333.33 |
| #(for f format) | 始終包括小數點 | 3,333。 |
| #(對于x或o格式) | 添加0x或0前綴 | 0xcafe |
| $ | 指定要格式化的參數的索引; 例如,%1 $ d%1 $ x以十進制和十六進制打印第一個參數 | 159 9F |
| < | 格式與以前的規格相同; 例如,%d%<x以十進制和十六進制打印相同的數字 | 159 9F |
轉換字符
| d | 十進制整數 | 159 |
| X | 十六進制整數 | 9f |
| o | 八進制整數 | 237 |
| F | 定點浮點 | 15.9 |
| e | 指數浮點 | 1.59e + 01 |
| G | 一般浮點(e和f的較短者) | ? |
| 一個 | 十六進制浮點 | 0x1.fccdp3 |
| s | 串 | 你好 |
| C | 字符 | H |
| b | 布爾 | 真正 |
| H | 哈希碼 | 42628b2 |
| tx | 日期和時間 | 參見下表 |
| % | 百分比符號 | % |
| n | 平臺相關的行分隔符 | ? |
帶有MessageFormat的格式化輸出
典型用途:
String msg = MessageFormat.format("On {1, date, long}, a {0} caused {2,number,currency} of damage.", "hurricane", new GregorianCalendar(2009, 0, 15). getTime(), 1.0E8);產量"On January 1, 1999, a hurricane caused $100,000,000 of damage"
- 第n個項目由{n,format,subformat}表示,其格式和子格式如下所示
- {0}是第一個項目
- 下表顯示可用的格式
- 對引號使用單引號,例如對于文字左花括號使用“{”
- 使用''作為文字單引號
| 數 | 沒有 | 1,234.567 |
| ? | 整數 | 1,235 |
| ? | 貨幣 | $ 1,234.57 |
| ? | 百分 | 123,457% |
| 日期 | 無或中等 | 2009年1月15日 |
| ? | 短 | 1/15/09 |
| ? | 長 | 2009年1月15日 |
| ? | 充分 | 2009年1月15日,星期四 |
| 時間 | 無或中等 | 3:45:00 PM |
| ? | 短 | 下午3:45 |
| ? | 長 | 下午3:45:00太平洋標準時間 |
| ? | 充分 | 下午3:45:00太平洋標準時間 |
| 選擇 | 選擇列表,以|分隔。 每個選擇都有
| 沒有房子 一個房子 5房子 |
| ? | ? | ? |
正則表達式
常見任務
| String [] words = str.split(“\\ s +”); | 沿著空格邊界拆分字符串 |
| Pattern pattern = Pattern.compile(“[0-9] +”); Matcher matcher = pattern.matcher(str); String result = matcher.replaceAll(“#”); | 替換所有匹配項。 這里我們用#替換所有數字序列。 |
| Pattern pattern = Pattern.compile(“[0-9] +”); Matcher matcher = pattern.matcher(str); while(matcher.find()){process(str.substring(matcher.start(),matcher.end())); }} | 查找所有匹配項。 |
| Pattern pattern = Pattern.compile(“(1?[0-9]):([0-5] [0-9])[ap] m”); Matcher matcher = pattern.matcher(str); for(int i = 1; i <= matcher.groupCount(); i ++){process(matcher.group(i)); }} | 查找所有組(由模式中的括號指示)。 這里我們找到一個日期的小時和分鐘。 |
正則表達式語法
| C | 字符c |
| \ unnnn,\ xnn,\ 0n,\ 0nn,\ 0nnn | 具有給定十六進制或八進制值的代碼單元 |
| \ t,\ n,\ r,\ f,\ a,\ e | 控制字符選項卡,換行,返回,換頁,提醒和轉義 |
| \ cc | 對應于字符c的控制字符 |
| [C1C2。 。 。] | 聯合:由C1C2,...表示的任何字符。 。 。 Ci是字符,字符范圍c1-c2或字符類。 示例:[a-zA-Z0-9_] |
| [^ C1C2。 。 。] | 補充:不由C1C2,...表示的字符。 。 。 示例:[^ 0-9] |
| [C1 && C2 &&。 。 。] | 交叉:由所有C1C2,...表示的字符。 。 。 示例:[Af && [^ G -#]] |
| 。 | 除了行終止符以外的任何字符(如果設置了DOTALL標志,則為任何字符) |
| \ d | 數字[0-9] |
| \ D | 非數字[^ 0-9] |
| \ s | 空格字符[\ t \ n \ r \ f \ x0B] |
| \ S | 非空格字符 |
| \ w | 字字符[a-zA-Z0-9_] |
| \ W | 非字符字符 |
| \ p {name} | 命名字符類 - 請參見下表 |
| \ P {name} | 命名字符類的補碼 |
| ^ $ | 開始,輸入結束(或多行模式中的開始,結束行) |
| \ b | 字邊界 |
| \ B | 非字邊界 |
| \一個 | 輸入開始 |
| \ z | 輸入結束 |
| \ Z | 最終行終止符以外的輸入結束 |
| \G | 上一次比賽結束 |
| X? | 可選X |
| X* | X,0或更多次 |
| X + | X,1次或更多次 |
| X {n} X {n,} X {n,m} | X n次,至少n次,在n和m次之間 |
| ? | 將默認(貪婪)匹配轉換為不愿意匹配 |
| + | 將默認(貪婪)匹配轉換為不愿意匹配 |
| XY | 任何來自X的字符串,后跟任何來自Y的字符串 |
| X | Y | 任何來自X或Y的字符串 |
| (X) | 捕獲與X匹配的字符串 |
| \G | 第g組的比賽 |
| \C | 字符c(不能是字母字符) |
| \ Q。 。 。 \ E | 報價。 。 。 逐字 |
| (α...) | 特殊結構 - 參見Pattern類的API注釋 |
預定義字符類名稱
| 降低 | ASCII小寫字母[az] |
| 上 | ASCII大寫[AZ] |
| Α | ASCII字母[A-Za-z] |
| 數字 | ASCII數字[0-9] |
| Alnum | ASCII字母或數字[A-Za-z0-9] |
| XDigit | 十六進制數字[0-9A-Fa-f] |
| 打印或圖形 | 可打印的ASCII字符[\ x21- \ x7E] |
| 點 | ASCII非數字或數字[\ p {Print} && \ P {Alnum}] |
| ASCII | 所有ASCII [\ x00- \ x7F] |
| Cntrl | ASCII控制字符[\ x00- \ x1F] |
| 空白 | 空間或制表符[\ t] |
| 空間 | 空白[\ t \ n \ r \ f \ 0x0B] |
| javaLowerCase | 小寫,由Character.isLowerCase() |
| javaUpperCase | 大寫,由Character.isUpperCase() |
| javaWhitespace | 空白,由Character.isWhitespace() |
| javaMirrored | 鏡像,由Character.isMirrored()確定 |
| InBlock | 塊是Unicode字符塊的名稱,刪除空格,例如BasicLatin或Mongolian |
| 類別或類別 | 類別是Unicode字符類別的名稱,例如L(字母)或Sc(貨幣符號) |
匹配的標志
模式匹配可以使用標志進行調整,例如:
Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE)| 不區分大小寫 | 匹配字母獨立于大寫字母。 默認情況下,此標志僅考慮US ASCII字符 |
| UNICODE_CASE | 當與CASE_INSENSITIVE組合使用時,請使用Unicode字母大小寫進行匹配 |
| MULTILINE | ^和$匹配行的開始和結束,而不是整個輸入 |
| UNIX_LINES | 在多行模式中匹配^和$時,只有'\ n'被識別為行終止符 |
| DOTALL | 當使用這個標志時, 符號匹配所有字符,包括行終結符 |
| CANON_EQ | 考慮Unicode字符的規范等效性。 例如,u后跟¨(diaeresis)匹配ü |
| 文字 | 指定模式的輸入字符串被視為一串文字字符,對于沒有特殊含義。 []等。 |
記錄
常見任務
| Logger logger = Logger.getLogger(“com.mycompany.myprog.mycategory”); | 獲取類別的記錄器 |
| logger.info(“Connection successful。”); | 記錄級別FINE的消息。 可用級別為SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST,以及相應的嚴重,警告等方法 |
| logger.log(Level.SEVERE,“Unexpected exception”,Throwable); | 記錄Throwable的堆棧跟蹤 |
| logger.setLevel(Level.FINE); | 將日志記錄級別設置為FINE。 默認情況下,日志記錄級別為INFO,不記錄不太嚴重的日志消息 |
| 處理程序處理程序=新的FileHandler(“%h / myapp.log”,SIZE_LIMIT,LOG_ROTATION_COUNT); handler.setFormatter(new SimpleFormatter()); logger.addHandler(handler); | 添加用于將日志記錄保存在文件中的文件處理程序。 有關命名模式,請參見下表。 這個處理程序使用一個簡單的格式化程序,而不是XML格式化程序,這是文件處理程序的默認值 |
記錄配置文件
日志配置可以通過日志配置文件配置,默認為jre/lib/logging.properties 。 啟動虛擬機時,可以使用系統屬性java.util.logging.config.file另一個文件。 (注意LogManager在main之前運行。)
| loggerName.level | 記錄器的日志記錄級別由給定的名稱 | 沒有; 日志記錄器從其父級繼承處理程序 | ||||||||||||
| 處理程序 | 根記錄器的類名稱的空格或逗號分隔的列表。 使用默認構造函數為每個類名創建一個實例 | java.util.logging。 ConsoleHandler | ||||||||||||
| loggerName.handlers | 給定記錄器的類名稱的空格或逗號分隔列表 | 給定日志記錄的類名稱列表無 | ||||||||||||
| loggerName。 useParentHandlers | false如果父記錄器的處理程序(和最終的根記錄器的處理程序)不應該使用 | 真正 | ||||||||||||
| 配置 | 用于初始化的空格或逗號分隔的類名稱列表 | 沒有 | ||||||||||||
| java.util.logging.FileHandler.level java.util.logging.ConsoleHandler.level | 默認處理程序級別 | Level.ALL用于FileHandler,Level.INFO用于ConsoleHandler | ||||||||||||
| java.util.logging.FileHandler.filter java.util.logging.ConsoleHandler.filter | 默認過濾器的類名 | 沒有 | ||||||||||||
| java.util.logging.FileHandler.formatter java.util.logging.ConsoleHandler.formatter | 默認格式化程序的類名 | formatter java.util.logging。 XMLFormatter for FileHandler,java.util.logging。 SimpleFormatter for ConsoleHandler | ||||||||||||
| java.util.logging.FileHandler.encoding java.util.logging.ConsoleHandler.encoding | 默認編碼 | 默認平臺編碼 | ||||||||||||
| java.util.logging.FileHandler.limit | 旋轉日志文件的默認限制(以字節為單位) | 0(無限制),但在jre / lib / logging.properties中設置為50000 | ||||||||||||
| java.util.logging.FileHandler.count | 循環日志文件的默認數目 | 1 | ||||||||||||
| java.util.logging.FileHandler.pattern | 日志文件的默認命名模式。 創建文件時,將替換以下標記:
| %h / java%u.log | ||||||||||||
| java.util.logging。 FileHandler.append | 文件記錄器的默認附加模式; true以附加到現有日志文件 | 假 |
屬性文件
- 包含名稱/值對,用=,:或空格分隔
- 名稱周圍的空格或值開始之前的空格將被忽略
- n可以通過將\作為最后一個字符來繼續行; 連續線上的前導空白被忽略 button1.tooltip = This is a long \ tooltip text.
- \ t \ n \ f \ r \\ \ uxxxx轉義被識別(但不是\ b或八進制轉義)
- 文件假設在ISO 8859-1中編碼; 使用native2ascii將非ASCII字符編碼為Unicode轉義
- 空行和以#或!開頭的行。 被忽略
典型用途:
Properties props = new Properties(); props.load(new FileInputStream("prog.properties")); String value = props.getProperty("button1.tooltip"); // null if not present也用于資源包:
ResourceBundle bundle = ResourceBundle.getBundle("prog"); // Searches for prog_en_US.properties, // prog_en.properties, etc. String value = bundle.getString("button1.tooltip"); 第14節JAR文件
- 用于存儲應用程序,代碼庫
- 默認情況下,類文件和其他資源以ZIP文件格式存儲
- META-INF / MANIFEST.MF包含JAR元數據
- META-INF /服務可以包含服務提供程序配置
- 使用jar實用程序創建JAR文件
JAR實用程序選項
| C | 創建新的或空的歸檔文件,并向其中添加文件。 如果任何指定的文件名是目錄,則jar程序將遞歸處理它們 |
| C | 臨時更改目錄。 例如,jar cvfC myprog.jar類* .class更改為classes子目錄以添加類文件 |
| e | 在清單jar中創建Main-Class條目cvfe myprog.jar com.mycom.mypkg.MainClass文件 |
| F | 指定JAR文件名作為第二個命令行參數。 如果缺少此參數,jar將結果寫入標準輸出(創建JAR文件時)或從標準輸入讀取(在提取或制表JAR文件時) |
| 一世 | 創建索引文件(用于加速大型存檔中的查找) |
| m | 將清單添加到JAR文件。 jar cvfm myprog.jar mymanifest.mf文件 |
| M | 不為條目創建清單文件 |
| t | 顯示目錄。 jar tvf myprog.jar |
| ü | 更新現有的JAR文件jar uf myprog.jar com / mycom / mypkg / SomeClass.class |
| v | 生成詳細輸出 |
| X | 解壓縮文件。 如果提供一個或多個文件名,則只提取這些文件。 否則,將提取所有文件。 jar xf myprog.jar |
| O | 無ZIP壓縮的商店 |
常見javac選項
| -cp或-classpath | 設置類路徑,用于搜索類文件。 類路徑是目錄,JAR文件或表單目錄/'*'(Unix)或目錄\ *(Windows)的表達式的列表。 后者指的是給定目錄中的所有JAR文件。 類路徑項由以下分隔:(Unix)或; (視窗)。 如果未指定類路徑,則將其設置為當前目錄。 如果指定了類路徑,則不會自動包含當前目錄 - 添加。 項目,如果你想包括它 |
| -sourcepath | 設置用于搜索源文件的路徑。 如果給定文件存在源文件和類文件,則如果源文件較新,則對其進行編譯。 如果未指定源路徑,則將其設置為當前目錄 |
| -d | 設置用于放置類文件的路徑。 使用此選項來分隔.java和.class文件 |
| -資源 | 設置源級別。 有效值為1.3,1.4,1.5,1.6,1.7,1.8,5,6,7,8 |
| -deprecation | 提供有關使用已棄用功能的詳細信息 |
| -Xlint:未選中 | 提供有關未檢查的類型轉換警告的詳細信息 |
| -cp或-classpath | 設置類路徑,用于搜索類文件。 有關詳細信息,請參閱上表。 注意,如果當前目錄在源路徑上而不是類路徑上,則java失敗時,javac可以成功。 |
| -ea或-enableassertions | 啟用斷言。 默認情況下,斷言被禁用。 |
| -Dproperty = value | 設置系統可以檢索的系統屬性。 getProperty(String) |
| -罐 | 運行包含在其清單具有Main-Class條目的JAR文件中的程序。 使用此選項時,將忽略類路徑。 |
| -verbose | 顯示加載的類。 此選項可能有助于調試類加載問題。 |
| -Xmssize -Xmxsize | 設置初始或最大堆大小。 大小是以字節為單位的值。 為千字節或兆字節添加后綴k或m,例如-Xmx10m |
常用的java選項
| 選項 | 描述 |
| -cp或-classpath | 設置類路徑,用于搜索類文件。 有關詳細信息,請參閱上表。 注意,如果當前目錄在源路徑上而不是類路徑上,則java失敗時,javac可以成功 |
| -ea或-enableassertions | 啟用斷言。 默認情況下,斷言被禁用 |
| -D property = value | 設置可以檢索的系統屬性 System.getProperty(String) |
| -罐 | 運行包含在其清單具有Main-Class條目的JAR文件中的程序。 使用此選項時,將忽略類路徑 |
| -verbose | 顯示加載的類。 此選項可能有助于調試類加載問題 |
| -Xms 大小 -Xmx 大小 | 設置初始或最大堆大小。 大小是以字節為單位的值。 為千字節或兆字節添加后綴k或m,例如-Xmx10m |
總結
以上是生活随笔為你收集整理的Java高级用户指南-核心Java的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Single-Stage Semanti
- 下一篇: lammps教程:径向分布函数g(r)的