Java高级用户指南-核心Java

来源:互联网 发布:ios编程基础 编辑:程序博客网 时间:2024/06/06 10:03

原文地址: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总是falseint32位整数类型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 / Ojava.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亿)包装类型为整数。 对任意精度整数使用BigInteger2字节-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个有效十进制数字)对任意精度浮点数使用BigDecimalchar2字节\ 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十进制整数159X十六进制整数9fo八进制整数237F定点浮点15.9e指数浮点1.59e + 01G一般浮点(e和f的较短者) 一个十六进制浮点0x1.fccdp3s你好C字符Hb布尔真正H哈希码42628b2tx日期和时间参见下表百分比符号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?可选XX*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。 ConsoleHandlerloggerName.handlers给定记录器的类名称的空格或逗号分隔列表给定日志记录的类名称列表无loggerName。 useParentHandlersfalse如果父记录器的处理程序(和最终的根记录器的处理程序)不应该使用真正配置用于初始化的空格或逗号分隔的类名称列表没有java.util.logging.FileHandler.level
java.util.logging.ConsoleHandler.level默认处理程序级别Level.ALL用于FileHandler,Level.INFO用于ConsoleHandlerjava.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 ConsoleHandlerjava.util.logging.FileHandler.encoding
java.util.logging.ConsoleHandler.encoding默认编码默认平台编码java.util.logging.FileHandler.limit旋转日志文件的默认限制(以字节为单位)0(无限制),但在jre / lib / logging.properties中设置为50000java.util.logging.FileHandler.count循环日志文件的默认数目1java.util.logging.FileHandler.pattern日志文件的默认命名模式。 创建文件时,将替换以下标记:令牌 描述 /路径分隔符%t系统临时目录%Huser.home系统属性的值%G循环日志的世代号%u用于解析命名冲突的唯一编号%%人物%h / java%u.logjava.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.classv生成详细输出X解压缩文件。 如果提供一个或多个文件名,则只提取这些文件。 否则,将提取所有文件。 jar xf myprog.jarO无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

2 0
原创粉丝点击