Day20 Java常用类
一、String类
1、概念: 在Java中,String类是一个非常常用的类,用于表示字符串对象。String类提供了许多方法来操作和处理字符串。
2、String类常用方法:
- 获取字符串长度:
int length(): 返回字符串的长度。
- 获取指定位置的字符:
char charAt(int index): 返回指定索引位置的字符。
- 比较字符串:
boolean equals(Object obj): 比较字符串是否相等。boolean equalsIgnoreCase(String anotherString): 忽略大小写比较字符串是否相等。int compareTo(String anotherString): 按字典顺序比较字符串。
- 查找子字符串:
int indexOf(String str): 返回子字符串第一次出现的位置。int lastIndexOf(String str): 返回子字符串最后一次出现的位置。boolean contains(CharSequence s): 判断字符串是否包含指定的字符序列。
- 截取子字符串:
String substring(int beginIndex): 返回从指定索引开始到字符串末尾的子字符串。String substring(int beginIndex, int endIndex): 返回从指定索引开始到指定索引结束的子字符串。
- 替换字符串:
String replace(char oldChar, char newChar): 替换字符串中的字符。String replace(CharSequence target, CharSequence replacement): 替换字符串中的指定字符序列。
- 转换大小写:
String toLowerCase(): 将字符串转换为小写。String toUpperCase(): 将字符串转换为大写。
- 去除空格:
String trim(): 去除字符串两端的空格。
- 拼接字符串:
String concat(String str): 将指定字符串连接到该字符串的末尾。
- 判断字符串是否为空:
boolean isEmpty(): 判断字符串是否为空。
二、StringBuffer类和StringBuilder类
1、StringBuffer概念:StringBuffer代表可变的字符序列。StringBuffer称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer是可变对象,这个是String最大的不同。
StringBuilder概念:StringBuilder与StringBuffer的用法完全一致,唯一的区别是StringBuffer是线程安全的,而StringBuilder不是线程安全的。所以StringBuilder的性能要比StringBuffer要好。单线程推荐使用StringBuilder,多线程使用StringBuffer。
2、 创建StringBuffer类对象:
StringBuffer可以理解为一个字符串容器,可以动态的改变容器中的内容。
StringBuffer类的常用构造方法:
StringBuffer()
构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符
StringBuffer(String str)
构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
3、StringBuffer类的常用方法:
append(String str):
- 将指定的字符串追加到当前
StringBuffer对象的末尾。
insert(int offset, String str):
- 在指定位置插入指定的字符串。
delete(int start, int end):
- 删除从指定位置开始到结束位置之间的字符序列。
replace(int start, int end, String str):
- 用指定的字符串替换从指定起始位置到结束位置之间的字符。
substring(int start)/substring(int start, int end):
- 返回从指定位置开始到结束位置之间的子字符串。
reverse():
- 反转当前
StringBuffer对象中的字符序列。
length():
- 返回当前
StringBuffer对象的长度(字符数)。
indexOf(String str)/lastIndexOf(String str):
- 返回指定字符串在
StringBuffer对象中第一次/最后一次出现的位置。
charAt(int index):
- 返回指定索引位置的字符。
setCharAt(int index, char ch):
- 将指定索引位置的字符设置为指定的字符。
substring(int start, int end):
- 返回从指定起始位置到结束位置之间的子字符串。
toString():
- 将
StringBuffer对象转换为一个普通的字符串。
思考: 为什么需要StringBuilder及StringBuffer类 ?
答:字符串的不变性:
一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符到String对象中。
您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String对象。
String s1 = “abc”;
String s2 = “abc”;
String s3 = s1+s2;
如果程序对这种附加字符串的需求很频繁,系统会频繁在内存中创建String对象,造成性能下降。所以并不建议使用+来进行频繁的字符串串联。应该使用java.lang.StringBuffer类。
三、正则表达式
1、概念: 正则表达式是一种强大的文本匹配工具,用于在字符串中搜索和匹配特定模式的文本。在Java中,正则表达式通常通过java.util.regex包来使用。
2、理解:用来描述或者匹配一系列符合某个语句规则的字符串
3、用法:
.:匹配除换行符以外的任意字符。^:匹配字符串的开始。$:匹配字符串的结束。\*:匹配前面的元素零次或多次。+:匹配前面的元素一次或多次。?:匹配前面的元素零次或一次。\d:匹配数字字符。\w:匹配字母、数字或下划线字符。\s:匹配空白字符。[ ]:匹配括号内的任意一个字符。[^ ]:匹配不在括号内的任意一个字符。{n}:匹配前面的元素恰好n次。{n,}:匹配前面的元素至少n次。{n,m}:匹配前面的元素至少n次,最多m次。
四、日期时间类
在Java中,有多种用于处理日期和时间的类,其中一些主要的类包括:
java.util.Date:Date类用于表示特定的时间点,但它在Java 8及以后被标记为过时,不推荐在新代码中使用。
java.util.Calendar:Calendar类是一个抽象类,用于对日期和时间进行操作,但使用起来比较繁琐。
java.util.GregorianCalendar:GregorianCalendar类是Calendar类的具体实现,提供了处理日期和时间的方法。
java.time.LocalDate:LocalDate类表示一个不带时区的日期,可以用于处理年、月、日信息。
java.time.LocalTime:LocalTime类表示一个不带时区的时间,可以用于处理时、分、秒信息。
java.time.LocalDateTime:LocalDateTime类表示一个不带时区的日期和时间。
java.time.ZonedDateTime:ZonedDateTime类表示带时区的日期和时间。
java.time.format.DateTimeFormatter:DateTimeFormatter类用于日期时间的格式化和解析。
java.time.Duration和java.time.Period:Duration类表示时间间隔,Period类表示日期间隔。
五、Math类
1、概念: 在Java中,java.lang.Math类提供了许多用于执行常见数学运算的静态方法
2、注意:Math 类提供了一序列基本数学运算和几何函数的方法。
Math类是类,并且它的所有成员变量和成员方法都是静态的。
3、用法:
- 数学函数:
abs(x):返回参数的绝对值。ceil(x):返回大于或等于参数的最小整数。floor(x):返回小于或等于参数的最大整数。round(x):将参数四舍五入为最接近的整数。max(x, y):返回两个参数中的较大值。min(x, y):返回两个参数中的较小值。sqrt(x):返回参数的平方根。cbrt(x):返回参数的立方根。pow(x, y):返回x的y次幂。exp(x):返回自然对数的底e的x次幂。log(x):返回参数的自然对数(以e为底)。log10(x):返回参数的以10为底的对数。sin(x)、cos(x)、tan(x):三角函数,分别返回参数的正弦、余弦和正切值。asin(x)、acos(x)、atan(x):反三角函数,分别返回参数的反正弦、反余弦和反正切值。
- 常量:
Math.PI:表示圆周率π的常量。Math.E:表示自然对数的底e的常量。
六、Random类
1、概念: 在Java中,java.util.Random类用于生成伪随机数
2、创建Random类对象:
此类用于生成随机数:
Random(); 创建一个新的随机数生成器Random(long seed);种子数(重点理解工作原理,什么是伪随机数)
3、用法:
- 构造方法:
Random():使用默认种子创建一个新的Random对象。Random(long seed):使用指定种子创建一个新的Random对象,相同种子会生成相同的随机数序列。
- 生成随机数:
nextInt():返回一个随机的32位整数。nextInt(int bound):返回一个大于等于0且小于bound的随机整数。nextLong():返回一个随机的64位整数。nextDouble():返回一个大于等于0.0且小于1.0的随机双精度浮点数。nextBoolean():返回一个随机的布尔值。
- 设置种子:
setSeed(long seed):重新设置随机数生成器的种子,可以影响生成的随机数序列。
- 生成随机字节流:
nextBytes(byte[] bytes):生成随机字节并将其放入指定的字节数组中。
七、 System类
1、概念: 在Java中,java.lang.System类提供了访问系统相关信息和操作系统资源的静态方法。
2、注意:
Java程序的运行平台:
1、 System类提供了一些静态属性和方法,允许通过类名直接调用。
2、 System类提供了代表标准输入、标准输出、错误输出的类属性。
3、 System类提供了一些静态方法用于访问环境变量、系统属性的方法。
3、常用方法及功能:
- 标准输入输出:
System.out:标准输出流,通常用于输出信息到控制台。System.err:标准错误输出流,用于输出错误信息到控制台。System.in:标准输入流,用于从控制台读取输入。
- 系统属性:
getProperty(String key):获取指定系统属性的值。setProperty(String key, String value):设置指定系统属性的值。
- 环境变量:
getenv(String name):获取指定环境变量的值。
- 数组复制:
arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将一个数组的指定范围复制到另一个数组的指定位置。
- 退出程序:
exit(int status):终止当前运行的Java虚拟机,参数为退出状态码。
- 垃圾回收:
gc():运行垃圾回收器。
- 获取当前时间:
currentTimeMillis():返回当前时间与1970年1月1日UTC之间的毫秒数差值,常用于性能测试和时间计算。
- 加载动态链接库:
loadLibrary(String libname):加载指定名称的本机库。
八、 Runtime类
1、概念: 在Java中,java.lang.Runtime类允许应用程序与运行时环境进行交互,执行系统级操作,如执行外部进程、获取系统信息等 。
2、注意:Runtime代表Java程序的运行时环境,可以通过 getRuntime 方法获取当前运行时。
应用程序不能自己创建Runtime对象,可以R通过Runtime的静态方法getRuntime()获得Runtime对象。
Runtime类可以访问jvm的相关信息,如处理器数量,内存信息等
3、用法:
- 获取Runtime对象:
Runtime.getRuntime():返回当前应用程序的Runtime对象,用于与运行时环境交互。
- 执行外部进程:
exec(String command):在单独的进程中执行指定的命令。exec(String[] cmdarray):在单独的进程中执行指定的命令和参数。exec(String command, String[] envp, File dir):在指定环境变量和工作目录下执行指定命令。
- 获取系统信息:
totalMemory():返回JVM的总内存量。freeMemory():返回JVM的空闲内存量。availableProcessors():返回可用的处理器数量。maxMemory():返回JVM的最大内存量。
- 垃圾回收:
gc():运行垃圾回收器。
- 关闭虚拟机:
exit(int status):终止当前运行的Java虚拟机,参数为退出状态码。
- 加载动态链接库:
load(String filename):加载指定名称的本机库。
- 执行Finalization:
runFinalization():运行所有对象的finalize方法。