Java核心类

一、String类

1、定义String类型

String s = "aaaa";    //   <====>  String s = new String("aaa");

2、方法介绍

Java 11 API : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#

// 1. equals()     两个字符串比较是否相同
s1.equals(s2);

// 2. equalsIgnoreCase()   忽略大小写比较
s1.equalsIgnoreCase(s2);

// 3. contains()   是否包含
str.contains("W");

// 4.indexOf()    返回某个字符在字符串中的索引
str.indexOf("W");

// 5.  length()    返回字符串的长度
str.length();
charcharAt(int index)返回指定索引位置的字符
booleancontains(CharSequence s)是否包含某个字符串
booleaendsWith(String suffix)判断是否以指定字符串结尾
booleanequals(Object anObject)比较两个字符串是否相等
booleanmatches(String regex)判断字符串是否和给定的正则匹配
Stringreplace(char oldChar, char newChar)用新字符/串 替换旧字符/串
String[]split(String regex)对字符串按给定方式切割,返回一个数组
Stringtrim()删除字符串的首尾的空白字符串,包括空格\t\r\n
StringtoString()转为字符串
booleanisEmpty()判断字符串是否为空
static Stringjoin(CharSequence delimiter, CharSequence... elements)将可迭代对象中的elements用delimiter拼接成一个字符串,静态方法,由类直接调用

二、StringBuilder类

String对象是不可改变的。每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能。

Java 11 API : https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StringBuilder.html

StringBuilderappend(xxx)xxx 参数的字符串表示形式追加到序列中
StringBuilderdelete(int start, int end)删除字符串索引在start与end之间的字符串,含头不含尾
StringBuilderinsert(int offset, xxx)在offset索引位置插入xxx字符串
StringBuilderreplace(int start, int end, String str)在索引start到end范围内的字符串用str替换,含头不含尾
StringBuilderreverse()反序

三、BigInteger类

来表示任意大小的整数

四、BigDecimal类

可以表示一个任意大小且精度完全准确的浮点数

五、Math类

数学计算

// 求绝对值:
Math.abs(-100); // 100
Math.abs(-7.8); // 7.8

// 取最大或最小值:
Math.max(100, 99); // 100
Math.min(1.2, 2.3); // 1.2

// 计算x的y次方:
Math.pow(2, 10); // 2的10次方=1024

// 计算√x:
Math.sqrt(2); // 1.414...

// 计算e的x次方:
Math.exp(2); // 7.389...

// 计算以e为底的对数:
Math.log(4); // 1.386...

// 计算以10为底的对数:
Math.log10(100); // 2

// 三角函数:
Math.sin(3.14); // 0.00159...
Math.cos(3.14); // -0.9999...
Math.tan(3.14); // -0.0015...
Math.asin(1.0); // 1.57079...
Math.acos(1.0); // 0.0

// Math还提供了几个数学常量:
double pi = Math.PI; // 3.14159...
double e = Math.E; // 2.7182818...
Math.sin(Math.PI / 6); // sin(π/6) = 0.5

// 生成一个随机数x,x的范围是0 <= x < 1:
Math.random(); // 0.53907... 每次都不一样

六、Random类

生成伪随机数,所谓伪随机数,是指只要给定一个初始的种子,产生的随机数序列是完全一样的。Random rd = new Random(10);

要生成一个随机数,可以使用nextInt()nextLong()nextFloat()nextDouble()

这是因为我们创建Random实例时,如果不给定种子,就使用系统当前时间戳作为种子,因此每次运行时,种子不同,得到的伪随机数序列就不同。Random rd = new Random();

Random r = new Random();
r.nextInt(); // 2071575453,每次都不一样
r.nextInt(10); // 5,生成一个[0,10)之间的int
r.nextLong(); // 8811649292570369305,每次都不一样
r.nextFloat(); // 0.54335...生成一个[0,1)之间的float
r.nextDouble(); // 0.3716...生成一个[0,1)之间的double

七、SecureRandom类

生成安全的随机数,SecureRandom无法指定种子,它使用RNG(random number generator)算法

SecureRandom sr = new SecureRandom();
System.out.println(sr.nextInt(100));
// 实际使用的时候,可以优先获取高强度的安全随机数生成器,如果没有提供,再使用普通等级的安全随机数生成器
import java.util.Arrays;
import java.security.SecureRandom;
import java.security.NoSuchAlgorithmException;

public class Main {
    public static void main(String[] args) {
        SecureRandom sr = null;
        try {
            sr = SecureRandom.getInstanceStrong(); // 获取高强度安全随机数生成器
        } catch (NoSuchAlgorithmException e) {
            sr = new SecureRandom(); // 获取普通的安全随机数生成器
        }
        byte[] buffer = new byte[16];
        sr.nextBytes(buffer); // 用安全随机数填充buffer
        System.out.println(Arrays.toString(buffer));
    }
}
12-25 14:56
查看更多