日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java高级用户指南-核心Java

發布時間:2023/12/14 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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和falseboolean more = false;
打破斷開開關或回路while((ch = in.next())!= -1){if(ch =='\ n')break; 過程(ch); }注意:也看開關
字節8位整數類型字節b = -1; //不等于0xFF注意:小心字節<0
案件開關的情況見開關
抓住try塊的子句捕獲異常看試試
charUnicode字符類型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)
public interface Collection <E> {
@覆蓋
默認分離器<E> spliterator(){
return Spliterators.spliterator(this,0);
}}
}}

一個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
int32位整數類型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());
第3節

標準Java包

java.appletApplets(在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實用程序(包括數據結構,并發,正則表達式和日志記錄)
第4節

運算符優先級

運算符具有相同的優先級?筆記
[]。 ()(方法調用)左到右?
?++ - +(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參數的延遲評估
&&左到右?
||左到右?
?:右到左?
= + = - = * = / =%=&= | = ^ = << = >> = >>> =右到左?
第5節

基本類型

類型尺寸范圍筆記
int4字節-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
char2字節\ u0000至\ uFFFF包裝類型為Character。 Unicode字符> U + FFFF需要兩個字符值
布爾?對或錯?

原始類型之間的法律轉換

虛線箭頭表示可能失去精度的轉化。





第6節

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

第7節

集合和常見算法

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
.stream().collect(Collectors.joining(“,”));

連接流的元素

List <User> users = ...; 列表<String> firstNames = users

.stream().map(User :: getFirstName).collect(Collectors.toList());

創建一個映射到原始列表的新列表

列表<String> adminFirstNames = users .stream()
.filter(User :: isAdmin).map(User :: getFirstName).collect(Collectors.toList());

組合操作這不會導致列表元素的兩次遍歷

int sumOfAges = users .stream().mapToLong(User :: getAge).sum();

簡單還原操作

Map <Role,List <User >> byRole = users .stream()
.collect(收藏家

.groupingBy(User :: getRole));

按特定屬性對用戶進行分組

int sumOfAges = users .parallelStream().mapToLong(User :: getAge).sum();

所有上述操作可以并行完成

第8節

字符轉義序列

\ 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
第9節

格式化輸出使用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平臺相關的行分隔符?
第10節

帶有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太平洋標準時間
選擇選擇列表,以|分隔。 每個選擇都有
  • 下界(使用 - \ u221E表示 - )
  • 關系運算符:<for“less than”,#或\ u2264 for。
  • 消息格式字符串
例如,{1,choice,0#no houses | 1#one house | 2#{1} houses}
沒有房子
一個房子
5房子
???
第11節

正則表達式

常見任務

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]
AlnumASCII字母或數字[A-Za-z0-9]
XDigit十六進制數字[0-9A-Fa-f]
打印或圖形可打印的ASCII字符[\ x21- \ x7E]
ASCII非數字或數字[\ p {Print} && \ P {Alnum}]
ASCII所有ASCII [\ x00- \ x7F]
CntrlASCII控制字符[\ 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)匹配ü
文字指定模式的輸入字符串被視為一串文字字符,對于沒有特殊含義。 []等。
第12節

記錄

常見任務

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。 useParentHandlersfalse如果父記錄器的處理程序(和最終的根記錄器的處理程序)不應該使用真正
配置用于初始化的空格或逗號分隔的類名稱列表沒有
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日志文件的默認命名模式。 創建文件時,將替換以下標記: 令牌描述
/路徑分隔符
%t系統臨時目錄
%Huser.home系統屬性的值
%G循環日志的世代號
%u用于解析命名沖突的唯一編號
%%人物
%h / java%u.log
java.util.logging。 FileHandler.append文件記錄器的默認附加模式; true以附加到現有日志文件
第13節

屬性文件

  • 包含名稱/值對,用=,:或空格分隔
  • 名稱周圍的空格或值開始之前的空格將被忽略
  • 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壓縮的商店
第15節

常見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
第16節

常用的java選項

選項

描述

-cp或-classpath

設置類路徑,用于搜索類文件。 有關詳細信息,請參閱上表。 注意,如果當前目錄在源路徑上而不是類路徑上,則java失敗時,javac可以成功

-ea或-enableassertions

啟用斷言。 默認情況下,斷言被禁用

-D property = value

設置可以檢索的系統屬性

System.getProperty(String)

-罐

運行包含在其清單具有Main-Class條目的JAR文件中的程序。 使用此選項時,將忽略類路徑

-verbose

顯示加載的類。 此選項可能有助于調試類加載問題

-Xms 大小 -Xmx 大小

設置初始或最大堆大小。 大小是以字節為單位的值。 為千字節或兆字節添加后綴k或m,例如-Xmx10m

總結

以上是生活随笔為你收集整理的Java高级用户指南-核心Java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。