关键词搜索

源码搜索 ×
×

Java高级用户指南-核心Java

发布2017-02-14浏览948次

详情内容

原文地址: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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载