Java通识基础22:核心类
字符串
public class Main {
public static void main(String[] args) {
String a = "Hello";
String b = "Hello";
b = b.toLowerCase();//全部字符转化为小写
System.out.println(b);
b=b.toUpperCase();
System.out.println(b);
a=a.toUpperCase();//全部字符转化为大写
System.out.println(a==b);
System.out.println(a.equals(b));
//由上两行可以看出不能用==来比较字符串
System.out.println(a.indexOf("H"));//搜索字符在固定字符串的位置
System.out.println(a.lastIndexOf("L"));//搜索字符在字符串最后出现的位置
System.out.println(a.startsWith("H"));
System.out.println(a.endsWith("O"));//判断开头结尾的字符是否为此字符
System.out.println("a\n".isBlank());
System.out.println("\n".isBlank());//判断空白字符
System.out.println(" ".isEmpty());
System.out.println("".isEmpty());//判断字符串长度是否为0
b=b.replace("L","m");
System.out.println(b);//将该字符串的所有L字符替换为m
String s = "Hi %s, your score is %d!";
System.out.println(s.formatted("Alice", 80));
System.out.println(String.format("Hi %s, your score is %.2f!", "Bob", 59.5));
//替换占位符
String.valueOf(123); // "123"
String.valueOf(45.67); // "45.67"
String.valueOf(true); // "true"
//将别的值转化为字符串
int m1=Integer.parseInt("fd",16);//将该字符串转化为一个十六进制数
char[] cs="dwadaw".toCharArray();
System.out.println(cs[3]);//字符串转化为字符数组
}
}
/*
hello
HELLO
false
true
0
3
true
true
false
true
false
true
HEmmO
Hi Alice, your score is 80!
Hi Bob, your score is 59.50!
d
*/
StringBuilder
一个单纯用于拼接的便捷工具
public class Main {
public static void main(String[] args) {
String s="";
for (int i=0;i<10;i++){
s+=i+",";
}
System.out.println(s);
StringBuilder a=new StringBuilder();
for (int i=0;i<10;i++){
a.append(i);
a.append(",");
}//StringBuilder方法可以预分配缓冲区减小负担
System.out.println(a);
}
}
进行链式操作
public class Main1 {
public static void main(String[] args) {
var sb = new StringBuilder(1024);
sb.append("Mr ")
.append("Bob")
.append("!")
.insert(0,"Hello,");
System.out.println(sb.toString());
}
}
StringJoiner
import java.util.StringJoiner;
public class Main {
public static void main(String[] args) {
String[] names={"A","B","C","D"};
var sj=new StringJoiner(",,");
for(String name:names){
sj.add(name);
}
String[] cities={"NJ","BJ","CZ","DLSD"};
var s=String.join("和",cities);
System.out.println(s);
System.out.println(sj);
}
}
join
info
public class StringJoin {
public static void main(String[] args) {
String[] names = {"Bob", "Alice", "Grace"};
var s = String.join(", ", names);
System.out.println(s);
}
}
JavaBean
getter\setter
定义属性的工具
public class Person {
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
Record
public class Main {
public static void main(String[] args) {
Point p=new Point(233,666);
System.out.println(p.x());
System.out.println(p.y());
}
}
record Point(int x,int y){
//定义更简化的final类
}
//该record类等同于
public final class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int x() {
return this.x;
}
public int y() {
return this.y;
}
}
/*
233
666
*/
Biglnteger
应对巨大的整数
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a=new BigInteger("236075690543243213112312312321312321321231212321213213123124234");
System.out.println(a.longValueExact());//会直接报错ArithmeticException
System.out.println(a.longValue());//会出现不准确的异常值
}
}
BigDecimal
应对任意精度和大小的浮点数
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main1 {
public static void main(String[] args) {
BigDecimal a=new BigDecimal("2.321313213");
System.out.println(a.doubleValue());
System.out.println(a.scale());//显示小数位数
a=a.setScale(4, RoundingMode.HALF_UP);//保留4位并且四舍五入
System.out.println(a.doubleValue());
a=a.setScale(3,RoundingMode.DOWN);
System.out.println(a.doubleValue());//保留3位后面直接截断
BigDecimal b=new BigDecimal("2.321");
System.out.println(a.compareTo(b));//返回正数代表小于,负数代表大于,0代表等于
}
}
Tools
Radom
生成指定范围的随机数
public class RadomInfo {
public static void main(String[] args) {
System.out.println(Math.random());
double x=Math.random();
double min=10;
double max=20;
Double y = x * (max - min) + min; // y的范围是[10,20)
long n=y.longValue();
System.out.println(y);
System.out.println(n);
}
}
import java.security.SecureRandom;
import java.util.Random;
public class Demo2 {
public static void main(String[] args) {
Random m=new Random();
System.out.println(m.nextDouble(10));//生成10以内的随机double值
System.out.println(m.nextInt(5000));//生成5000以内的随机int值
SecureRandom n=new SecureRandom();
System.out.println(n.nextDouble(10));
System.out.println(n.nextInt(5000));
//功能同上,后者的随机性更强
}
}