Scanner 类
使用Scanner类可以很方便的获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本数据类型值和字符串值。Scanner提供了多个构造器,不同的构造器可以接受文件、输入流、字符串作为数据源,用于文件、输入流、字符串中解析数据
Scanner 实例方法
| 常用方法 |
返回值类型 |
说明 |
| delimiter() |
Pattern |
返回当前正在用于匹配分隔符的Pattern |
| useDelimiter() |
Scanner |
Scanner默认使用空白(空格/Tab/回车)作为分割符来分隔文本,但允许你指定新的分隔符 |
| next() |
String |
读取输入的下一个单词(以空格作为分隔符);在读取输入后将光标放在同一行中 |
| nextInt() |
int |
读取并转换下一个表示整数的字符序列 |
| nextDouble() |
double |
读取并转换下一个表示浮点数的字符序列 |
| nextLine() |
String |
读取输入的下一行内容,包括单词之间的空格和除回车以外的所有符号;读取完后将光标定位在下一行 |
| hasNext() |
boolean |
检测输入中是否还有其他单词 |
| hasNextInt() |
boolean |
检测是否还有表示整数的下一个字符序列 |
| hasNextDouble() |
boolean |
检测是否还有表示浮点数的下一个字符序列 |
| hasNextLine() |
boolean |
检测输入中是否还有下一行 |
System 类
System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法
System类提供了代表标准输入、标准输出和错误输出的类变量,并提供了一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法
加载文件和动态链接库主要对native方法有用,对于一些特殊的功能(如访问操作系统底层硬件设备等)Java程序无法实现,必须借助C语言来完成,此时需要使用C语言为Java方法提供实现
System 静态变量
| 类变量 |
数据类型 |
说明 |
| System.in |
InputStream |
标准输入流 |
| System.out |
PrintStream |
标准输出流 |
| System.err |
PrintStream |
标准错误输出流 |
System 静态方法
| 类方法 |
返回值类型 |
说明 |
| arraycopy(src,offset,dest,offset,length) |
void |
数组拷贝 |
| currentTimeMillis() |
long |
返回当前系统的时间毫秒值 |
| exit(int status) |
void |
终止当前运行的JVM;非0表示异常终止,0表示终止 |
| console() |
Console |
获得Console控制台对象;如果JVM没有控制台,则返回null |
| gc() |
void |
通知系统进行垃圾回收 |
| getProperties() |
Properties |
获取程序所在的平台的环境变量和系统属性 |
| getProperty(String key) |
String |
获取指定系统属性的值 |
| getenv() |
Map |
获取系统所有的环境变量 |
| getenv(String name) |
String |
获取指定环境变量的值 |
| identityHashCode(Object x) |
int |
返回指定对象的散列值,无论对象是否重写了hashCode() |
System.getProperties() 相关属性
| key |
关联值的描述 |
java.version |
Java 运行时环境版本 |
java.version.date |
Java 运行时环境版本日期,采用 ISO-8601 YYYY-MM-DD 格式 |
java.vendor |
Java 运行时环境供应商 |
java.vendor.url |
Java 供应商 URL |
java.vendor.version |
Java 供应商版本(可选) |
java.home |
Java安装目录 |
java.vm.specification.version |
Java 虚拟机规范版本 |
java.vm.specification.vendor |
Java 虚拟机规范供应商 |
java.vm.specification.name |
Java 虚拟机规范名称 |
java.vm.version |
Java 虚拟机实现版本 |
java.vm.vendor |
Java 虚拟机实现供应商 |
java.vm.name |
Java 虚拟机实现名称 |
java.specification.version |
Java Runtime Environment 规范版本 |
java.specification.vendor |
Java 运行时环境规范供应商 |
java.specification.name |
Java 运行时环境规范名称 |
java.class.version |
Java 类格式版本号 |
java.class.path |
Java类路径 |
java.library.path |
加载库时要搜索的路径列表 |
java.io.tmpdir |
默认临时文件路径 |
java.compiler |
要使用的 JIT 编译器的名称 |
os.name |
操作系统名称 |
os.arch |
操作系统架构 |
os.version |
操作系统版本 |
file.separator |
文件分隔符(UNIX 上的“/”) |
path.separator |
路径分隔符(UNIX 上的“:”) |
line.separator |
行分隔符(UNIX 上的“\n”) |
user.name |
用户的帐户名 |
user.home |
用户的主目录 |
user.dir |
用户当前工作目录 |
native.encoding |
源自主机环境和/或用户设置的字符编码名称。设置此系统属性无效 |
Console 实例方法
| 实例方法 |
返回值类型 |
说明 |
| readLine(String fmt,Object... args) |
String |
显示字符串fmt并且读取用户输入;args参数可以用来提供输入格式 |
| readPassword(String fmt,Object... args) |
char[] |
输入的内容以密文显式,其他功能同readLine()方法 |
| readLine() |
String |
从控制台读取一行文本 |
| readPassword() |
char[] |
在禁用回显的情况下从控制台读取密码 |
Runtime 类
Runtime类代表Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。它可以访问JVM的相关信息,如处理器数量、内存信息等
应用程序不能创建自己的Runtime实例,但可以通过 getRuntime() 方法获取与之相关的Runtime对象
Runtime 相关方法
| 相关方法 |
返回值类型 |
说明 |
| Runtime.getRuntime() |
Runtime |
返回与当前 Java 应用程序关联的运行时对象 |
| gc() |
void |
通知系统进行垃圾回收 |
| runFinalization() |
void |
清理系统资源 |
| load(String filename) |
void |
加载文件 |
| loadLibrary(String libname) |
void |
加载动态链接库 |
| exec(String command) |
Process |
在单独的进程中执行指定的字符串命令(直接运行操作系统的命令) |
| availableProcessors() |
int |
返回 Java 虚拟机可用的处理器数(内核数) |
| freeMemory() |
long |
返回 Java 虚拟机中的可用内存量(空闲内存) |
| maxMemory() |
long |
返回 Java 虚拟机将尝试使用的最大内存量(最大内存) |
| totalMemory() |
long |
返回 Java 虚拟机中的总内存量(总内存) |
Object和Objects
Object类是所有类、数组、枚举类的父类,所有的Java类都是Object类的子类,所以任何Java对象都可以调用Object类的方法
Object 实例方法
| 实例方法 |
返回值类型 |
说明 |
| equals(Object obj) |
boolean |
默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false |
| hashCode() |
int |
native方法;返回该对象的hashCode值;默认情况下,根据该对象的地址来计算hashCode值 |
| toString() |
String |
默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址 |
| clone() |
Object |
protected native方法;实现对象的浅复制;只有实现了Cloneable接口才可以调用该方法,否则将抛出异常 |
| getClass() |
Class |
final native方法;返回该对象的运行时类 |
| finalize() |
void |
protected方法;当系统中没有变量引用到该对象时,垃圾回收期调用此方法来清理该对象的资源 |
| notify() |
void |
唤醒正在等待的单个线程;随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态 |
| notifyAll() |
void |
唤醒正在等待的所有线程;解除那些在该对象上调用wait方法的线程的阻塞状态 |
| wait() |
void |
让当前线程等待并释放所占锁,直到另一个线程调用notify()方法或notifyAll()方法 |
| wait(long timeoutMillis) |
void |
|
Objects工具类提供了一些工具方法来操作对象,这些工具方法大多是“空指针”安全的。比如你不能确定一个引用变量是否为null,如果贸然调用该变量的toString()方法,则可能引发NullPointerException异常;但如果使用Objects类提供的toString(Object o)方法,就不会引发空指针异常了,当o为null时,程序将返回一个"null"字符串
Objects 静态方法
| 方法 |
返回值类型 |
说明 |
| equals(Object a,Object b) |
boolean |
用于比较两个对象的引用是否相同,还可以避免空指针异常 |
| deepEquals(Object a,Object b) |
boolean |
验证两个数组是否深层相等 |
| hashCode(Object o) |
int |
返回对象的hash code,如果参数为null,返回0 |
| hash(Object... values) |
int |
为输入值序列生成散列码hash code,包括数组 |
| toString(Object o) |
String |
调用对象的toString()方法,如果参数是null,返回字符串"null" |
| compare(T a, T b, Comparator c) |
int |
用于比较两个对象 |
| requireNonNull(T obj) |
T |
判断一个对象是不是null,如果不是null返回对象本身,如果是null抛出空指针异常 |
| isNull(Object obj) |
boolean |
如果引用变量为null则返回true,否则返回false |
| nonNull(Object obj) |
boolean |
如果引用变量不为null则返回true,否则返回false |
Math 类
Java提供了基本的加减乘除余等基本算术运算符,但对于更复杂的数学运算,例如三角函数、对数运算、指数运算等则无能为力。因此Java提供了Math工具类来完成这些复杂的运算
Math 静态变量
| 静态变量 |
数据类型 |
说明 |
| Math.E |
double |
数学中的底数e |
| Math.PI |
double |
数学中的圆周率π |
Math 静态方法
| 静态方法 |
返回值类型 |
说明 |
| ceil(double a) |
double |
向上取整,返回大的值 |
| floor(double a) |
double |
向下取整,返回小的值 |
| round(double a) |
long |
四舍五入;参数为double时返回long值;参数为float时返回int值 |
| rint(double a) |
double |
四舍五入;返回参数最接近的整数;注意.5的时候会取偶数 |
| abs(double a) |
double |
绝对值 |
| max(double a,double b) |
double |
最大值 |
| min(double a,double b) |
double |
最小值 |
| random() |
double |
伪随机数(0≤x<1) |
| sqrt(double a) |
double |
平方根 |
| cbrt(double a) |
double |
立方根 |
| exp(double a) |
double |
返回欧拉数e的double值的幂(e^x) |
| expm1(double x) |
double |
返回e^x - 1的值 |
| pow(double a,double b) |
double |
计算乘方;返回第一个参数的第二个参数的幂的值(x^y) |
| log(double a) |
double |
自然对数;也就是a的自然对数(底数是e) |
| log10(double a) |
double |
返回a的底数为10的对数 |
| log1p(double x) |
double |
返回a+1的自然对数 |
| sin(double a) |
double |
正弦 |
| cos(double a) |
double |
余弦 |
| tan(double a) |
double |
正切 |
| sinh(double x) |
double |
双曲正弦 |
| cosh(double x) |
double |
双曲余弦 |
| tanh(double x) |
double |
双曲正切 |
| asin(double a) |
double |
反正弦 |
| acos(double a) |
double |
反余弦 |
| atan(double a) |
double |
反正切 |
| toDegrees(double angrad) |
double |
将弧度转换成角度 |
| toRadians(double angdeg) |
double |
将角度转换为弧度 |
| atan2(double y, double x) |
double |
将坐标(x,y)转换成极坐标(r,thet),并返回极坐标的角度值 |
| hypot(double x,double y) |
double |
求\(\text{sqrt(x}^2\text{+y}^2\text{)}\) ;在求两点间距离时用\(\text{sqrt((x1-x2)}^2\text{+(y1-y2)}^2\text{)}\) |
| signum(double d) |
double |
返回参数的符号函数 |
Random和ThreadLocalRandom
Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字
ThreadLocalRandom类是Java7新增的类,它是Random的增强版。在并发访问的环境下,使用ThreadLocalRandom来代替Random可以减少多线程资源竞争,最终保证系统具有更好的县城安全性
Random 构造器
| 构造器 |
说明 |
| Random() |
以当前时间作为种子,然后使用这个种子数构造Random对象 |
| Random(long seed) |
通过显式指定long类型的种子数进行创建Random对象 |
Random 实例方法
| 实例方法 |
返回值类型 |
说明 |
| nextBoolean() |
boolean |
生成一个随机的boolean值,生成true和false的几率相等 |
| nextBytes(byte[] bytes) |
void |
生成随机字节并将其置于形参的byte数组中,取值范围为-128到127 |
| nextInt() |
int |
生成一个随机的int值,该值介于int的取值范围 |
| nextInt(int bound) |
int |
生成一个随机的int值,该值介于[0,n)区间内 |
| nextLong() |
long |
生成一个随机的long值 |
| nextFloat() |
float |
生成一个随机的float值,该值介于[0,1)之间 |
| nextDouble() |
double |
生成一个随机的double值,该值介于[0,1)之间 |
| nextGaussian() |
double |
生成一个随机的高斯分布的浮点数,其平均值是0.0,标准差是1.0 |
| setSeed(long seed) |
void |
重新设置Random对象中的种子数 |
相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意。所以为了避免两个Random对象产生相同的数字序列,通常推荐使用当前时间作为Random对象的种子
Random random = new Random(System.currentTimeMillis());
ThreadLocalRandom current = ThreadLocalRandom.current();
int num1 = current.nextInt(4, 20);
double num2 = current.nextDouble(2.0, 10.0);
BigDecimal和BigInteger
- BigDecimal:表示任意精度
- BigInteger:表示任意长度/大小(超过long类型的数值可以使用BigInteger表示)
float、double类型的浮点数容易引起精度损失,尤其在进行算术运算时更容易发生这种情况。为了能精确表示、计算浮点数,Java提供了BigDecimal类
禁止使用BigDecimal(double val)构造器方法将double值直接转换为BigDecimal对象,因为它还是存在精度损失风险。推荐使用BigDecimal(String val)构造器方法或者BigDecimal.valueOf(double val)方法
BigDecimal 实例方法
| 实例方法 |
返回值类型 |
说明 |
| add(BigDecimal augend) |
BigDecimal |
加法 |
| subtract(BigDecimal subtrahend) |
BigDecimal |
减法 |
| multiply(BigDecimal multiplicand) |
BigDecimal |
乘法 |
| divide(BigDecimal divisor) |
BigDecimal |
除法 |
| remainder(BigDecimal divisor) |
BigDecimal |
求余 |
| compareTo(BigDecimal val) |
int |
比较两个值是否相等 |
| max(BigDecimal val) |
BigDecimal |
最大值;求两个BigDecimal类型数据的最大值 |
| min(BigDecimal val) |
BigDecimal |
最小值;求两个BigDecimal类型数据的最小值 |
| abs() |
BigDecimal |
绝对值;求BigDecimal类型数据的绝对值 |
| negate() |
BigDecimal |
相反数;求BigDecimal类型数据的相反数 |
| divide(除数,保留位,取舍规则) |
BigDecimal |
使用场景:出现不能整除的情况 |
| setScale(保留位,取舍规则) |
BigDecimal |
设置小数点保留位数;默认采用四舍五入方式 |
| doubleValue() |
double |
将BigDecimal类型的值转换为double类型 |
| floatValue() |
float |
将BigDecimal类型的值转换为float类型 |
| intValue() |
int |
将BigDecimal类型的值转换为int类型 |
| longValue() |
long |
将BigDecimal类型的值转换为long类型 |
| toBigInteger() |
BigInteger |
将BigDecimal类型的值转换为BigInteger类型 |
取舍规则 RoundingMode 枚举类
| 枚举值 |
说明 |
int值 |
| UP |
远离零方向舍入 |
0 |
| DOWN |
向零方向舍入 |
1 |
| CEILING |
向正无穷方向舍入 |
2 |
| FLOOR |
向负无穷方向舍入 |
3 |
| HALF_UP |
四舍五入 |
4 |
| HALF_DOWN |
五舍六入 |
5 |
| HALF_EVEN |
整数位若是奇数则四舍五入,若是偶数则五舍六入 |
6 |
| UNNECESSARY |
如果需要舍入,就抛出算术异常 |
7 |
BigInteger 相关方法
| 相关方法 |
返回值类型 |
说明 |
| BigInteger.valueOf(long val) |
BigInteger |
将一个普通的数值转换为BigInteger类型的值 |
| add(BigInteger val) |
BigInteger |
加法 |
| subtract(BigInteger val) |
BigInteger |
减法 |
| multiply(BigInteger val) |
BigInteger |
乘法 |
| divide(BigInteger val) |
BigInteger |
除法 |
| remainder(BigInteger val) |
BigInteger |
求余 |
| mod(BigInteger m) |
BigInteger |
取模(需b>0,否则出现异常) a.mod(b)=a%b=a.remainder(b) |
| max(BigInteger val) |
BigInteger |
最大值 |
| min(BigInteger val) |
BigInteger |
最小值 |
| abs() |
BigInteger |
绝对值 |
| negate() |
BigInteger |
取反 |
| gcd(BigInteger val) |
BigInteger |
最大公约数 |
| pow(int exponent) |
BigInteger |
幂运算;a.pow(b)=a^b |
| compareTo(BigInteger val) |
int |
比较两个大整数;如果相等返回0,小于返回负数,大于返回正数 |
| toByteArray() |
byte[] |
将BigInteger类型的值转换为二进制补码形式 |
| intValue() |
int |
将BigInteger类型的值转换为int类型 |
| longValue() |
long |
将BigInteger类型的值转换为long类型 |
| floatValue() |
float |
将BigInteger类型的值转换为float类型 |
| doubleValue() |
double |
将BigInteger类型的值转换为double类型 |
| toString() |
String |
将BigInteger类型的值转换为十进制字符串形式 |
| toString(int radix) |
String |
将BigInteger类型的值转换为radix进制字符串形式 |
String StringBuffer StringBuilder
字符串是一连串的字符序列,Java提供了String来封装字符串,并提供了一系列方法来操作字符串对象
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直到这个对象被销毁
String 构造器方法
| 构造方法 |
说明 |
| String() |
创建一个空白字符串对象,不含任何内容 |
| String(String original) |
根据传入的字符串内容来创建字符串对象 |
| String(byte[] chs) |
解码;根据字节数组的内容来创建字符串对象;且使用默认字符集 |
| String(char[] chs) |
根据字符数组的内容来创建字符串对象;且使用默认字符集 |
| String(byte[] bytes,int offset,int length) |
根据字节数组从offset开始的length个字节创建对象;且使用默认字符集 |
| String(char[] value,int offset,int count) |
根据字符数组从offset开始的length个字符创建对象;且使用默认字符集 |
| String(byte[] bytes,String charsetName) |
根据字节数组的内容来创建字符串对象;且指定字符集 |
| String(byte[] bytes,Charset charset) |
根据字节数组的内容来创建字符串对象;且指定字符集 |
| String(byte[] bytes,int offset,int length,String charset) |
根据字节数组从offset开始的length个字符创建对象;且指定字符集 |
| String(byte[] bytes,int offset,int length,Charset charset) |
根据字节数组从offset开始的length个字符创建字符串对象;且指定字符集 |
| String(StringBuffer buffer) |
根据StringBuffer对象来创建字符串对象 |
| String(StringBuilder builder) |
根据StringBuilder对象来创建字符串对象 |
| String(int[] codePoints, int offset, int count) |
用数组中从offset开始的count个码点构造一个字符串 |
String 常用方法
| 常用方法 |
返回值类型 |
说明 |
| contains(CharSequence s) |
boolean |
判断此字符串是否包含指定的字符序列 |
| contentEquals(CharSequence cs) |
boolean |
判断此字符串是否与指定的字符序列完全相等 |
| contentEquals(StringBuffer sb) |
boolean |
判断此字符串是否与指定的StringBuffer完全相等 |
| endsWith(String suffix) |
boolean |
判断字符串是否以指定的字符结尾 |
| equals(Object anObject) |
boolean |
比较两个字符串内容是否相同,区分大小写 |
| equalsIgnoreCase(String anotherString) |
boolean |
比较两个字符串内容是否相同,并且忽略大小写 |
| isBlank() |
boolean |
如果给定的字符串为空或仅包含空格代码点,则此方法返回true,否则返回false |
| isEmpty() |
boolean |
判断字符串是否为空;length()为0返回true,否则返回false |
| matches(String regex) |
boolean |
判断字符串是否与给定的正则表达式regex相匹配 |
| regionMatches(int toffset,String other,int ooffset,int len) |
boolean |
如果字符串的指定子区域匹配字符串参数的指定子区域,则返回true;否则返回false |
| regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len) |
boolean |
如果为ignoreCase为true,则比较字符时忽略大小写 |
| startsWith(String prefix) |
boolean |
判断字符串是否以指定字符串prefix开头 |
| startsWith(String prefix,int toffset) |
boolean |
判断字符串是否从指定索引开始以指定字符串prefix开头 |
| getBytes() |
byte[] |
编码;使用默认的字符集将字符串转换成一个新的byte数组 |
| getBytes(String charsetName) |
byte[] |
编码;使用指定的字符集将字符串转换为byte数组 |
| getBytes(Charset charset) |
byte[] |
编码;使用指定的字符集将字符串转换为byte数组 |
| toCharArray() |
char[] |
将字符串转换为字符数组 |
| getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) |
void |
将字符串转换为字符数组 |
| subSequence(int beginIndex,int endIndex) |
CharSequence |
返回指定范围内的字符序列 |
| charAt(int index) |
char |
返回指定索引处的字符 |
| codePointAt(int index) |
int |
返回指定索引处的码点 |
| codePointBefore(int index) |
int |
返回指定索引之前字符的码点 |
| codePointCount(int beginIndex,int endIndex) |
int |
返回指定范围内的码点数量,没有配成对的代用字符将记入代码点 |
| offsetByCodePoints(int index,int codePointOffset) |
int |
返回字符串中从给定的index处偏移codePointOffset个代码点的索引 |
| compareTo(String anotherString) |
int |
按字典顺序比较两个字符串;如果位于anotherString之后,返回一个正数;如果位于anotherString之前,返回一个负数;如果两个字符串相等,返回0 |
| compareToIgnoreCase(String str) |
int |
按字典顺序比较两个字符串,不考虑大小写 |
| length() |
int |
返回字符串的长度 |
| hashCode() |
int |
返回字符串的哈希码 |
| indexOf(int ch) |
int |
返回字符串中首次出现的指定字符的索引位置 |
| indexOf(int ch,int fromIndex) |
int |
返回字符串指定位置后首次出现的指定字符的索引位置 |
| indexOf(String str) |
int |
返回字符串中首次出现的指定子字符串的索引位置 |
| indexOf(String str,int fromIndex) |
int |
返回字符串指定位置后首次出现的指定子字符串的索引位置 |
| lastIndexOf(int ch) |
int |
返回字符串中最后一次出现的指定字符的索引位置 |
| lastIndexOf(int ch,int fromIndex) |
int |
返回字符串指定位置后最后一次出现的指定字符的索引位置 |
| lastIndexOf(String str) |
int |
返回字符串中最后一次出现的指定子字符串的索引位置 |
| lastIndexOf(String str,int fromIndex) |
int |
返回字符串指定位置后最后一次出现的指定子字符串的索引位置 |
| toString() |
String |
将其它类型数据转换成字符串 |
| concat(String str) |
String |
字符串拼接;将指定字符串str连接到此字符串的结尾 |
| repeat(int count) |
String |
返回一个字符串,其值是此字符串重复count次数的串联 ;如果字符串为空或count为零,则返回空字符串 |
| replace(char oldChar,char newChar) |
String |
用字符newChar替换当前字符串中所有的oldChar字符,并返回一个新的字符串 |
| replace(CharSequence target,CharSequence replacement) |
String |
将字符串中所有的target替换为replacement,并返回一个新的字符串 |
| replaceAll(String regex,String replacement) |
String |
将字符串中符合regex格式的子串替换成replacement |
| replaceFirst(String regex,String replacement) |
String |
将字符串中符合regex格式的第一个子串替换成replacement |
| substring(int beginIndex) |
String |
从指定位置开始截取字符串,默认到末尾,包括start索引 |
| substring(int beginIndex,int endIndex) |
String |
从开始位置到结束位置截取字符串,包括start索引,不包括end索引 |
| toLowerCase() |
String |
将字符串转换为小写字母 |
| toUpperCase() |
String |
将字符串转换为大写字母 |
| trim() |
String |
删除字符串两端的空格 |
| indent(int n) |
String |
在字符串之前添加n个缩进空格 |
| strip() |
String |
将字符串的所有左右空格都删除 |
| stripIndent() |
String |
将字符串每行的开头和结尾的空格都删除 |
| stripLeading() |
String |
将字符串的所有左空格都删除 |
| stripTrailing() |
String |
将字符串的所有右空格都删除 |
| formatted(Object... args) |
String |
使用此字符串作为格式字符串的格式,以及提供的参数 |
| intern() |
String |
如果字符串常量池中已经包含一个等于此String对象的字符串,则返回常量池中字符串的引用,否则匠心的字符串放入常量池中,并返回新字符串的引用 |
| split(String regex) |
String[] |
根据正则表达式regex来拆分字符串,并将拆分后的单词存入字符串数组中 |
| split(String regex,int limit) |
String[] |
根据匹配给定的正则表达式来拆分字符串 |
| join(CharSequence delimiter,CharSequence... elements) |
static String |
将elements字符序列用指定的分隔符delimiter连接起来,返回这个新组成的字符串 |
| join(CharSequence delimiter,Iterable elements) |
static String |
用指定的分隔符链接字符序列,然后返回新的字符串 |
| format(String format,Object... args) |
static String |
使用指定的格式字符串和参数返回格式化的字符串 |
| format(Locale l,String format,Object... args) |
static String |
使用指定的语言环境、格式字符串和参数返回格式化的字符串 |
| copyValueOf(char[] data) |
static String |
根据字符数组创建并返回一个新的字符串 |
| copyValueOf(char[] data,int offset,int count) |
static String |
根据指定范围内的字符数组返回一个新的字符串 |
| valueOf(boolean b) |
static String |
把boolean类型的数据转换成字符串 |
| valueOf(char c) |
static String |
把char类型的数据转换成字符串 |
| valueOf(char[] data) |
static String |
把字符数组转换成字符串 |
| valueOf(char[] data,int offset,int count) |
static String |
把字符数组指定偏移offset开始的count个字符转换成字符串 |
| valueOf(int i) |
static String |
把int类型的数据转换成字符串 |
| valueOf(long l) |
static String |
把long类型的数据转换成字符串 |
| valueOf(float f) |
static String |
把float类型的数据转换成字符串 |
| valueOf(double d) |
static String |
把double类型的数据转换成字符串 |
| valueOf(Object obj) |
static String |
把Object类型的数据转换成字符串 |
| chars() |
IntStream |
|
| codePoints() |
IntStream |
将该字符串的码点作为一个流返回 |
| lines() |
Stream |
|
| describeConstable() |
Optional |
|
| resolveConstantDesc(MethodHandles.Lookup lookup) |
String |
|
| translateEscapes() |
String |
|
| transform(Function f) |
R |
|
StringBuffer是字符序列可变的字符串,而且是线程安全的
StringBuffer 构造方法
| 构造方法 |
说明 |
| StringBuffer() |
构造一个没有字符的字符串缓冲区,初始容量为 16 个字符 |
| StringBuffer(int capacity) |
构造一个字符串缓冲区,其中没有字符且具有指定的初始容量 |
| StringBuffer(CharSequence seq) |
构造一个字符串缓冲区,其中包含与指定的相同的字符CharSequence |
| StringBuffer(String str) |
构造一个初始化为指定字符串内容的字符串缓冲区 |
StringBuffer 实例方法
| 实例方法 |
返回值类型 |
说明 |
| append(boolean b) |
StringBuffer |
追加一个boolean类型的数据 |
| append(char c) |
StringBuffer |
追加一个char类型的数据 |
| append(CharSequence s) |
StringBuffer |
追加一个字节序列的数据 |
| append(CharSequence s,int start,int end) |
StringBuffer |
追加一个指定范围字节序列的数据 |
| append(char[] str) |
StringBuffer |
追加一个char数组的数据 |
| append(char[] str,int offset,int len) |
StringBuffer |
追加一个指定范围char数组的数据 |
| append(int i) |
StringBuffer |
追加一个int类型的数据 |
| append(long lng) |
StringBuffer |
追加一个long类型的数据 |
| append(float f) |
StringBuffer |
追加一个float类型的数据 |
| append(double d) |
StringBuffer |
追加一个double类型的数据 |
| append(Object obj) |
StringBuffer |
追加一个Object类型的数据 |
| append(String str) |
StringBuffer |
追加一个String类型的数据 |
| append(StringBuffer sb) |
StringBuffer |
追加一个StringBuffer类型的数据 |
| appendCodePoint(int codePoint) |
StringBuffer |
追加一个码点 |
| capacity() |
int |
返回当前容量 |
| charAt(int index) |
char |
返回指定索引处的字符 |
| codePointAt(int index) |
int |
返回指定索引处的码点 |
| codePointBefore(int index) |
int |
返回指定索引之前字符的码点 |
| codePointCount(int beginIndex,int endIndex) |
int |
返回指定范围内的码点数量 |
| compareTo(StringBuffer another) |
int |
按字典顺序比较两个StringBuffer |
| delete(int start,int end) |
StringBuffer |
删除指定范围内的字符 |
| deleteCharAt(int index) |
StringBuffer |
删除指定索引的字符 |
| ensureCapacity(int minimumCapacity) |
void |
确保容量至少等于指定的最小值 |
| getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) |
void |
字符从此序列复制到目标字符数组中dst |
| indexOf(String str) |
int |
返回此字符串中第一次出现指定子字符串的索引 |
| indexOf(String str,int fromIndex) |
int |
返回此字符串中第一次出现指定子字符串的索引,从指定索引开始 |
| insert(int offset,boolean b) |
StringBuffer |
在offset位置插入一个boolean类型的数据 |
| insert(int offset,char c) |
StringBuffer |
在offset位置插入一个char类型的数据 |
| insert(int dstOffset,CharSequence s) |
StringBuffer |
在offset位置插入一个字符序列 |
| insert(int dstOffset,CharSequence s,int start,int end) |
StringBuffer |
在offset位置插入一个指定范围内的字符序列 |
| insert(int offset,char[] str) |
StringBuffer |
在offset位置插入一个char数组 |
| insert(int index,char[] str,int offset,int len) |
StringBuffer |
在index位置插入str数组从offset开始len个字符) |
| insert(int offset,int i) |
StringBuffer |
在offset位置插入一个int类型的数据 |
| insert(int offset,long l) |
StringBuffer |
在offset位置插入一个long类型的数据 |
| insert(int offset,float f) |
StringBuffer |
在offset位置插入一个float类型的数据 |
| insert(int offset,double d) |
StringBuffer |
在offset位置插入一个double类型的数据 |
| insert(int offset,Object obj) |
StringBuffer |
在offset位置插入一个Object类型的数据 |
| insert(int offset,String str) |
StringBuffer |
在offset位置插入一个String类型的数据 |
| lastIndexOf(String str) |
int |
返回StringBuffer中最后一次出现的指定字符的索引位置 |
| lastIndexOf(String str,int fromIndex) |
int |
返回StringBuffer指定位置后最后一次出现的指定字符的索引位置 |
| length() |
int |
返回StringBuffer的长度 |
| offsetByCodePoints(int index,int codePointOffset) |
int |
返回StringBuffer中从给定的index处偏移codePointOffset个代码点的索引 |
| replace(int start,int end,String str) |
StringBuffer |
在指定范围内用str替换StringBuffer中的内容 |
| reverse() |
StringBuffer |
将StringBuffer中的内容反转 |
| setCharAt(int index,char ch) |
void |
设置指定索引处的字符 |
| setLength(int newLength) |
void |
设置字符序列的长度 |
| subSequence(int start,int end) |
CharSequence |
返回指定范围内的子序列 |
| substring(int start) |
String |
从start开始截取并返回一个新的String |
| substring(int start,int end) |
String |
在指定范围内截取并返回一个新的String |
| toString() |
String |
返回StringBuffer的字符串数据 |
| trimToSize() |
void |
尝试减少用于字符序列的存储 |
| chars() |
IntStream |
返回此序列中int零扩展char值的流 |
| codePoints() |
IntStream |
从此序列返回代码点值流 |
StringBuilder是JDK5引入的,它的前身是StringBuffer,同样也是字符序列可变的字符串,而且是线程不安全的,没有实现线程安全功能,所以性能略高。如果需要创建一个内容可变的字符串对象,则应该优先考虑使用StringBuilder类
StringBuilder 构造方法
| StringBuilder() | 构造一个没有字符的字符串缓冲区,初始容量为 16 个字符 |
| StringBuilder(int capacity) | 构造一个字符串缓冲区,其中没有字符且具有指定的初始容量 |
| StringBuilder(CharSequence seq) | 构造一个字符串缓冲区,其中包含与指定的相同的字符CharSequence |
| StringBuilder(String str) | 构造一个初始化为指定字符串内容的字符串缓冲区 |
StringBuilder 常用方法
| 实例方法 |
返回值类型 |
说明 |
| append(boolean b) |
StringBuilder |
追加一个boolean类型的数据 |
| append(char c) |
StringBuilder |
追加一个char类型的数据 |
| append(CharSequence s) |
StringBuilder |
追加一个字节序列的数据 |
| append(CharSequence s,int start,int end) |
StringBuilder |
追加一个指定范围字节序列的数据 |
| append(char[] str) |
StringBuilder |
追加一个char数组的数据 |
| append(char[] str,int offset,int len) |
StringBuilder |
追加一个指定范围char数组的数据 |
| append(int i) |
StringBuilder |
追加一个int类型的数据 |
| append(long lng) |
StringBuilder |
追加一个long类型的数据 |
| append(float f) |
StringBuilder |
追加一个float类型的数据 |
| append(double d) |
StringBuilder |
追加一个double类型的数据 |
| append(Object obj) |
StringBuilder |
追加一个Object类型的数据 |
| append(String str) |
StringBuilder |
追加一个String类型的数据 |
| append(StringBuffer sb) |
StringBuilder |
追加一个StringBuffer类型的数据 |
| appendCodePoint(int codePoint) |
StringBuilder |
追加一个码点 |
| capacity() |
int |
返回当前容量 |
| charAt(int index) |
char |
返回指定索引处的字符 |
| codePointAt(int index) |
int |
返回指定索引处的码点 |
| codePointBefore(int index) |
int |
返回指定索引之前字符的码点 |
| codePointCount(int beginIndex,int endIndex) |
int |
返回指定范围内的码点数量 |
| compareTo(StringBuilder another) |
int |
按字典顺序比较两个StringBuilder |
| delete(int start,int end) |
StringBuilder |
删除指定范围内的字符 |
| deleteCharAt(int index) |
StringBuilder |
删除指定索引的字符 |
| ensureCapacity(int minimumCapacity) |
void |
确保容量至少等于指定的最小值 |
| getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) |
void |
字符从此序列复制到目标字符数组中dst |
| indexOf(String str) |
int |
返回此字符串中第一次出现指定子字符串的索引 |
| indexOf(String str,int fromIndex) |
int |
返回此字符串中第一次出现指定子字符串的索引,从指定索引开始 |
| insert(int offset,boolean b) |
StringBuilder |
在offset位置插入一个boolean类型的数据 |
| insert(int offset,char c) |
StringBuilder |
在offset位置插入一个char类型的数据 |
| insert(int dstOffset,CharSequence s) |
StringBuilder |
在offset位置插入一个字符序列 |
| insert(int dstOffset,CharSequence s,int start,int end) |
StringBuilder |
在offset位置插入一个指定范围内的字符序列 |
| insert(int offset,char[] str) |
StringBuilder |
在offset位置插入一个char数组 |
| insert(int index,char[] str,int offset,int len) |
StringBuffer |
在index位置插入str数组从offset开始len个字符) |
| insert(int offset,int i) |
StringBuilder |
在offset位置插入一个int类型的数据 |
| insert(int offset,long l) |
StringBuilder |
在offset位置插入一个long类型的数据 |
| insert(int offset,float f) |
StringBuilder |
在offset位置插入一个float类型的数据 |
| insert(int offset,double d) |
StringBuilder |
在offset位置插入一个double类型的数据 |
| insert(int offset,Object obj) |
StringBuilder |
在offset位置插入一个Object类型的数据 |
| insert(int offset,String str) |
StringBuilder |
在offset位置插入一个String类型的数据 |
| lastIndexOf(String str) |
int |
返回StringBuilder中最后一次出现的指定字符的索引位置 |
| lastIndexOf(String str,int fromIndex) |
int |
返回StringBuilder指定位置后最后一次出现的指定字符的索引位置 |
| length() |
int |
返回StringBuilder的长度 |
| offsetByCodePoints(int index,int codePointOffset) |
int |
返回StringBuilder中从给定的index处偏移codePointOffset个代码点的索引 |
| replace(int start,int end,String str) |
StringBuilder |
在指定范围内用str替换StringBuilder中的内容 |
| reverse() |
StringBuilder |
将StringBuilder中的内容反转 |
| setCharAt(int index,char ch) |
void |
设置指定索引处的字符 |
| setLength(int newLength) |
void |
设置字符序列的长度 |
| subSequence(int start,int end) |
CharSequence |
返回指定范围内的子序列 |
| substring(int start) |
String |
从start开始截取并返回一个新的String |
| substring(int start,int end) |
String |
在指定范围内截取并返回一个新的String |
| toString() |
String |
返回StringBuilder的字符串数据 |
| trimToSize() |
void |
尝试减少用于字符序列的存储 |
| chars() |
IntStream |
返回此序列中int零扩展char值的流 |
| codePoints() |
IntStream |
从此序列返回代码点值流 |
Arrays
Arrays类是一个工具类,它里包含的一些static修饰的方法可以直接操作数组
Arrays 常用方法
- type:byte、short、int、long、float、double、char、boolean
- parallel开头的方法都表示该方法可利用CPU并行的能力来提高性能
| 常用方法 |
返回值类型 |
说明 |
| asList(T... a) |
static List |
把数组转换为List集合 |
| binarySearch(type[] a,type key) |
static int |
使用二分法查询key元素值在a数组中出现的索引(调用该方法时要求数组中元素已经按升序排列好) |
| binarySearch(type[] a,int fromIndex,int toIndex,type key) |
static int |
使用二分法在指定区域内查询key元素值在a数组中出现的索引 |
| copyOf(type[] original,int length) |
static type[] |
把original数组的length个元素复制成一个新数组;如果length小于original数组的长度,则新数组就是原数组前面length个元素;如果length大于original数组的长度,则新数组的前面元素就是原数组的所有元素,后面补充type类型的默认值 |
| copyOfRange(type[] original,int from,int to) |
static type[] |
把original数组在指定区间内的length个元素复制成一个新数组 |
| equals(type[] a,type[] a2) |
static boolean |
如果a和a2数组的长度相等,且a数组和a2数组的元素也一一相同,该方法返回true |
| fill(type[] a,type val) |
static void |
把数组a的所有元素都赋值为val |
| fill(type[] a,int fromIndex,int toIndex,type val) |
static void |
把数组a在指定区间内的元素都赋值为val |
| sort(type[] a) |
static void |
对数组a的数据元素进行排序 |
| sort(type[] a,int fromIndex,int toIndex) |
static void |
对数组a指定区间内的数据元素进行排序 |
| toString(type[] a) |
static String |
将数组转换为一个字符串;按顺序将多个数组元素连缀在一起,多个元素使用英文逗号和空格隔开 |
| stream(XXX[] array) |
static XXXStream |
将数组转换为Stream流 |
| stream(XXX[] array,int startInclusive,int endExclusive) |
static XXXStream |
将数组指定范围内的数据转换为Stream流 |
| deepEquals(Object[] a1,Object[] a2) |
static boolean |
如果两个指定的数组彼此完全相等,则返回true |
注意:Arrays.asList()方法得到的是一个固定长度的List集合。它既不是ArrayList实现类,也不是Vector实现类的实例,而是ArrayList的内部类ArrayList的实例。它只能遍历访问该集合里的元素,不可增加、删除该集合里的元素,否则会引发异常
List list = Arrays.asList(1, 2, 3);
list.forEach(System.out::println);
list.add(4); // 报异常:UnsupportedOperationException
八大包装类
自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量
自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量
包装类的特有功能
- 包装类的变量的默认值可以是null,容错率更高
- 可以把基本类型的数据转换成字符串类型(用处不大)
- 可以把字符串类型的数值转换成真实的数据类型(真的很有用)
八大包装类:Byte、Short、Integer、Long、Float、Double、Boolean、Character
Integer 静态常量
| 静态常量 |
说明 |
| MAX_VALUE |
最大值 |
| MIN_VALUE |
最小值 |
Integer 常用方法
| 常用方法 |
返回值类型 |
说明 |
| byteValue() |
byte |
Integer类型转换为byte类型 |
| shortValue() |
short |
Integer类型转换为short类型 |
| intValue() |
int |
Integer类型转换为int类型 |
| longValue() |
long |
Integer类型转换为long类型 |
| floatValue() |
float |
Integer类型转换为float类型 |
| doubleValue() |
double |
Integer类型转换为double类型 |
| valueOf(int b) |
static Integer |
int类型转换为Integer类型 |
| valueOf(String s) |
static Integer |
String类型转换为Integer类型 |
| valueOf(String s, int radix) |
static Integer |
String类型的指定进制数据转换为Integer类型 |
| parseInt(String s) |
static int |
String类型转换int类型 |
| parseInt(String s,int radix) |
static int |
String类型转换指定进制的int类型 |
| max(int a, int b) |
static int |
返回两个int值中的较大者 |
| min(int a, int b) |
static int |
返回两个int值中的较小者 |
| sum(int a, int b) |
static int |
根据 + 运算符将两个整数相加 |
| toBinaryString(int i) |
static String |
返回二进制表示形式的字符串 |
| toHexString(int i) |
static String |
返回十六进制表示形式的字符串 |
| toOctalString(int i) |
static String |
返回八进制表示形式的字符串 |
Java常用包
| 常用包 |
说明 |
| java.lang |
包含了Java和核心类;如String、Math、System 和 Thread 类等,系统自动导入该包下的所有类 |
| java.util |
包含了Java的大量工具类/接口和集合框架类/接口;如Arrays 和 List、Set等 |
| java.net |
包含了Java网络编程的相关类/接口 |
| java.io |
包含了Java输入/输出编程相关的类/接口 |
| java.text |
包含了Java格式化相关的类 |
| java.sql |
包含了Java进行JDBC数据库编程的相关类/接口 |
| java.awt |
包含了抽象窗口工具集的相关类/接口,主要用于构建图形用户界面程序(GUI) |
| java.swing |
包含了Swing图形用户界面编程的相关类/接口,这些类可用于构建平台无关的GUI程序 |