java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比
如排序和搜索)的各种方法。
方法 | 作用 |
---|---|
boolean equals(int[] a,int[] b) | 判断两个数组是否相等。 |
String toString(int[] a) | 输出数组信息。 |
void fill(int[] a,int val) | 将指定值填充到数组之中。 |
void sort(int[] a) | 对数组进行排序。 |
int binarySearch(int[] a,int key) | 对排序后的数组进行二分法检索指定的值。 |
Arrays.copyOf(T[] original, int newLength) | 拷贝数组,其内部调用了 System.arraycopy() 方法,从下标 0 开始,如果超过原数组长度,则会用 0或null 进行填充 |
Arrays.copyOfRange(T[] original, int from, int to) | 拷贝数组,指定起始位置和结束位置,如果超过原数组长度,则会用 null 进行填充 |
Arrays.equals(Object[] array1, Object[] array2) | 判断两个数组是否相等 (1)数组元素为基本数据类型时,依次比较值(2)数组元素为引用数据类型时,依次调用元素的 equals() 方法进行比较(3)即如果两个数组被认为是相等的,则两个数组中应包含相同顺序的相同元素 |
Arrays.asList(T… data) | 注意:该方法返回的是 Arrays 内部静态类 ArrayList,而不是我们平常使用的 ArrayList,,该静态ArrayList 没有覆盖父类的 add(), remove() 等方法,所以如果直接调用,会报 UnsupportedOperationException 异常 (1)如果将基本数据类型的数组作为参数传入,该方法会把整个数组当作一个元素 |
构造方法
构造方法 | 作用 |
---|---|
Thread() | 创建新的Thread对象 |
Thread(String threadname) | 创建线程并指定线程实例名 |
Thread(Runnable target) | 指定创建线程的目标对象,它实现了Runnable接口 |
Thread(Runnable target, String name) | 创建新的Thread对象 |
Thread类的有关方法
方法 | 作用 |
---|---|
void start() | 启动线程,并执行对象的run()方法 |
run() | 线程在被调度时执行的操作 |
void setName(String name) | 设置该线程名称 |
static Thread currentThread() | 返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类 |
static void yield() | 线程让步 暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程 若队列中没有同优先级的线程,忽略此方法 |
join() | 当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止 低优先级的线程也可以获得执行 |
static void sleep(long millis):(指定时间:毫秒) | 令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。抛出InterruptedException异常 |
stop() | 强制线程生命期结束,不推荐使用 |
boolean isAlive() | 返回boolean,判断线程是否还活着 |
getPriority() | 返回线程优先值 |
setPriority(int newPriority) | 改变线程的优先级 |
thread.setDaemon(true) | 可以把一个用户线程变成一个守护线程 |
方法 | 作用 |
---|---|
wait() | 令当前线程挂起并放弃CPU、同步资源并等待,使别的线程可访问并修改共享资源,而当前线程排队等候其他线程调用notify()或notifyAll()方法唤醒,唤醒后等待重新获得对监视器的所有权后才能继续执行。 |
notify() | 唤醒正在排队等待同步资源的线程中优先级最高者结束等待 |
notifyAll () | 唤醒正在排队等待资源的所有线程结束等待 |
这三个方法只有在synchronized方法或synchronized代码块中才能使用,否则会报
java.lang.IllegalMonitorStateException异常。
因为这三个方法必须有锁对象调用,而任意对象都可以作为synchronized的同步锁,
因此这三个方法只能在Object类中声明。
线程池
JDK 5.0起提供了线程池相关API:ExecutorService 和 Executors
ExecutorService:真正的线程池接口。常见子类ThreadPoolExecutor
方法 | 作用 |
---|---|
void execute(Runnable command) | 执行任务/命令,没有返回值,一般用来执行Runnable |
Future submit(Callable task) | 执行任务,有返回值,一般又来执行Callable |
void shutdown() | 关闭连接池 |
Executors:工具类、线程池的工厂类,用于创建并返回不同类型的线程池
方法 | 作用 |
---|---|
Executors.newCachedThreadPool() | 创建一个可根据需要创建新线程的线程池 |
Executors.newFixedThreadPool(n)) | 创建一个可重用固定线程数的线程池 |
Executors.newSingleThreadExecutor() | 创建一个只有一个线程的线程池 |
Executors.newScheduledThreadPool(n) | 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行 |
String常用方法
方法 | 作用 |
---|---|
int length() | 返回字符串的长度: return value.length |
char charAt(int index)) | 返回某索引处的字符return value[index] |
boolean isEmpty() | 判断是否是空字符串:return value.length == 0 |
String toLowerCase() | 使用默认语言环境,将 String 中的所有字符转换为小写 |
String toUpperCase() | 使用默认语言环境,将 String 中的所有字符转换为大写 |
char charAt(int index)) | 返回某索引处的字符return value[index] |
String trim() | 返回字符串的副本,忽略前导空白和尾部空白 |
boolean equals(Object obj) | 比较字符串的内容是否相同 |
boolean equalsIgnoreCase(String anotherString) | 与equals方法类似,忽略大小写 |
String concat(String str) | 将指定字符串连接到此字符串的结尾。 等价于用“+” |
int compareTo(String anotherString)) | 比较两个字符串的大小 |
String substring(int beginIndex) | 返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串 |
String substring(int beginIndex, int endIndex) | 返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串 |
boolean endsWith(String suffix) | 测试此字符串是否以指定的后缀结束 |
boolean startsWith(String prefix)) | 测试此字符串是否以指定的前缀开始 |
boolean startsWith(String prefix, int toffset) | 测试此字符串从指定索引开始的子字符串是否以指定前缀开始 |
boolean contains(CharSequence s) | 当且仅当此字符串包含指定的 char 值序列时,返回 true |
int indexOf(String str) | 返回指定子字符串在此字符串中第一次出现处的索引 |
int indexOf(String str, int fromIndex)) | 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始 |
int lastIndexOf(String str) | 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1 |
int lastIndexOf(String str, int fromIndex) | 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索 |
String replace(char oldChar, char newChar) | 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
String replace(CharSequence target, CharSequence replacement) | 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串 |
String replaceAll(String regex, String replacement)) | 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串 |
String replaceFirst(String regex, String replacement) | 返回指定子字符串在此字符串中最右边出现处的索引 indexOf和lastIndexOf方法如果未找到都是返回-1 |
boolean matches(String regex) | 告知此字符串是否匹配给定的正则表达式 |
String[] split(String regex) | 根据给定正则表达式的匹配拆分此字符串 |
String[] split(String regex, int limit)) | 根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中 |
String与基本数据类型转换
方法 | 作用 |
---|---|
public static int parseInt(String s) | 可以将由“数字”字符组成的字符串转换为整型 |
public String valueOf(int n) | 可将int型转换为字符串 |
String与字符数组转换
字符数组 -->字符串
方法 | 作用 |
---|---|
String(char[]) String 类的构造器 | 用字符数组中的全部字符创建字符串对象 |
String(char[],int offset,intlength) String 类的构造器 | 用字符数组中的部分字符创建字符串对象 |
String(byte[]) | 通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String |
String(byte[],int offset,int length) | 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象 |
字符串 --> 字节数组
方法 | 作用 |
---|---|
public char[] toCharArray() | 将字符串中的全部字符存放在一个字符数组中的方法 |
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 提供了将指定索引范围内的字符串存放到数组中的方法 |
public byte[] getBytes() | 使用平台的默认字符集将此 String 编码为byte 序列,并将结果存储到一个新的 byte 数组中 |
public byte[] getBytes(String charsetName) | 使用指定的字符集将 此 String 编码到 byte 序列,并将结果存储到新的 byte 数组 |
StringBuffer类
方法 | 作用 |
---|---|
StringBuffer() | 初始容量为16的字符串缓冲区 |
StringBuffer(int size) | 构造指定容量的字符串缓冲区 |
StringBuffer(String str) | 将内容初始化为指定字符串内容 |
StringBuffer delete(int start,int end) | 删除指定位置的内容 |
StringBuffer replace(int start, int end, String str) | 把[start,end)位置替换为str |
StringBuffer(int size) | 构造指定容量的字符串缓冲区 |
StringBuffer insert(int offset, xxx) | 在指定位置插入xxx |
StringBuffer reverse() | 把当前字符序列逆转 |
public int indexOf(String str) | |
public int length() | |
public String substring(int start,int end) | |
public char charAt(int n ) | |
public void setCharAt(int n ,char ch) |
StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且
提供相关功能的方法也一样
日期时间API
Java比较器
Java实现对象排序的方式有两种:
自然排序:java.lang.Comparable
Comparable 的典型实现:(默认都是从小到大排列的) String:按照字符串中字符的Unicode值进行比较
定制排序:java.util.Comparator
System类
成员变量
方法 | 作用 |
---|---|
native long currentTimeMillis() | 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。 |
void exit(int status) | 该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等 |
void gc() | 该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况 |
String getProperty(String key) | 该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示 |
方法 | 作用 |
---|---|
abs | 绝对值 |
acos,asin,atan,cos,sin,tan | 三角函数 |
sqrt | 平方根 |
pow(double a,doble b) | a的b次幂 |
log | 自然对数 |
exp | e为底指数 |
max(double a,double b) | 最大数 |
min(double a,double b) | 最小数 |
random() | 返回0.0到1.0的随机数 |
long round(double a) | double型数据a转换为long型(四舍五入) |
BigInteger类
方法 | 作用 |
---|---|
public BigInteger abs() | 返回此 BigInteger 的绝对值的 BigInteger |
BigInteger add(BigInteger val) | 返回其值为 (this + val) 的 BigInteger |
BigInteger subtract(BigInteger val) | 返回其值为 (this - val) 的 BigInteger |
BigInteger multiply(BigInteger val) | 返回其值为 (this * val) 的 BigInteger |
BigInteger divide(BigInteger val) | 返回其值为 (this / val) 的 BigInteger。整数相除只保留整数部分 |
BigInteger remainder(BigInteger val) | 返回其值为 (this % val) 的 BigInteger |
BigInteger[] divideAndRemainder(BigInteger val) | 返回包含 (this / val) 后跟(this % val) 的两个 BigInteger 的数组 |
BigInteger pow(int exponent) | 返回其值为 (thisexponent) 的 BigInteger |
BigDecimal类
一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,
要求数字精度比较高,故用到java.math.BigDecimal类。