Java常用方法

Java常用方法

Arrays工具类

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对象
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) 可以把一个用户线程变成一个守护线程

Java常用方法_第1张图片
Java常用方法_第2张图片
Object中关于线程的方法
线程的通信

方法 作用
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实现对象排序的方式有两种:

  1. 自然排序:java.lang.Comparable
  2. 定制排序:java.util.Comparator
    方式一:自然排序:java.lang.Comparable
  • Comparable接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。
  • 实现 Comparable 的类必须实现 compareTo(Object obj) 方法,两个对象即
    通过 compareTo(Object obj) 方法的返回值来比较大小。如果当前对象this大 于形参对象obj,则返回正整数,如果当前象this小于形参对象obj,则返回负整数,如果当前对象this等于形参对象obj,则返回零。
  • 实现Comparable接口的对象列表(和数组)可以通过 Collections.sort 或Arrays.sort进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
  • 对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致。建议(虽然不是必需的)最好使自然排序与 equals 一致

自然排序:java.lang.Comparable
Comparable 的典型实现:(默认都是从小到大排列的) String:按照字符串中字符的Unicode值进行比较

  • Character:按照字符的Unicode值来进行比较
  • 数值类型对应的包装类以及BigInteger、BigDecimal:按照它们对应的数值
    大小进行比较
  • Boolean:true 对应的包装类实例大于 false 对应的包装类实例
  • Date、Time等:后面的日期时间比前面的日期时间大

定制排序:java.util.Comparator

  1. 当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码,或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那么可以考虑使用 Comparator 的对象来排序,强行对多个对象进行整体排序的比较。
  2. 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示o1小于o2。
  3. 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。
  4. 还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。

System类
成员变量

  • System类内部包含in、out和err三个成员变量,分别代表标准输入流
    (键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。
方法 作用
native long currentTimeMillis() 该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
void exit(int status) 该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等
void gc() 该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况
String getProperty(String key) 该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示

Java常用方法_第3张图片
Math类

方法 作用
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类

  • Integer类作为int的包装类,能存储的最大整型值为2
    31-1,Long类也是有限的,
    最大为2
    63-1。如果要表示再大的整数,不管是基本数据类型还是他们的包装类
    都无能为力,更不用说进行运算了。
  • java.math包的BigInteger可以表示不可变的任意精度的整数。BigInteger 提供
    所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。
    另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、
    位操作以及一些其他操作。
  • 构造器 --> BigInteger(String val):根据字符串构建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类。

  • BigDecimal类支持不可变的、任意精度的有符号十进制定点数。
  • 构造器
  1. public BigDecimal(double val)
  2. public BigDecimal(String val)
  • 常用方法
  1. public BigDecimal add(BigDecimal augend)
  2. public BigDecimal subtract(BigDecimal subtrahend)
  3. public BigDecimal multiply(BigDecimal multiplicand)
  4. public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

你可能感兴趣的:(javaSE常用方法)