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方法。