当前位置: 首页 > news >正文

java常见类库

StringBuffer类

String和StringBuffer的区别

String

  • 不可变性String 类是不可变的,这意味着一旦创建了一个 String 对象,其值就不能改变。每次对 String 进行修改(如连接、替换等操作)都会产生新的 String 对象,原来的对象不会被改变。

  • 线程安全性:由于 String 的不可变性,它是线程安全的,可以被多个线程共享而无需担心数据一致性的问题。

  • 性能:因为每次修改都会创建新的对象,所以在频繁进行字符串操作时,String 的效率较低。

StringBuffer

  • 可变性StringBuffer 是一个可变的字符序列,可以被多次修改而不创建新的对象。这意味着如果需要对字符串进行大量的修改操作,使用 StringBuffer 比使用 String 更加高效。

  • 线程安全性StringBuffer 是线程安全的。它的方法都是同步的(即加了 synchronized 关键字),这使得 StringBuffer 可以在多线程环境中安全地使用,但是也导致了它的性能相比非线程安全的 StringBuilder 要差一些。

  • 性能:当需要在一个单线程环境下进行大量字符串操作时,StringBuffer 仍然不是最优选择,因为它的线程安全特性会带来额外的开销。在这种情况下,应该考虑使用 StringBuilder

使用场景

  • 使用 String:当你不需要修改字符串内容时,或者修改次数非常少的时候,使用 String 是合适的。此外,String 的不可变性和线程安全性使其成为多线程环境中的首选。

  • 使用 StringBuffer:如果你的应用程序需要在多线程环境中频繁地修改字符串,那么 StringBuffer 是一个很好的选择,因为它提供了线程安全的操作。

  • 使用 StringBuilder:对于单线程环境下的频繁字符串操作,推荐使用 StringBuilder,因为它比 StringBuffer 性能更高,同时又保持了可变性的优点。

StringBuffer介绍

String类自身有一个最大的缺陷:内容一旦声明则不可改变,JDK为了方便用户修改字符串内容提供了StringBuffer类

StringBuffer类不像String类那样可以直接通过声明字符串常量方式进行实例化,而是必须像普通类对象使用一样,首先通过构造方法进行对象实例化,而后才可以调用方法进行处理。

No.方法类型描述
1public StringBuffer()构造创建一个空的StringBuffer对象
2public StringBuffer(String str)构造将接受到的String内容变为StringBuffer内容
3public StringBuffer append(数据类型 变量)普通内容连接,等价于String中:”+”操作
4public StringBuffer insert(int offset,数据类型 变量)普通在指定索引位置处插入数据
5public StringBuffer delete(int start,int end)普通删除指定索引范围之内的数据
6public StringBuffer reverse()普通内容反转

示例

public class JavaDome{public static void main(String args[]){StringBuffer buf = new StringBuffer("hello");change(buf);String data = StringBuffer.toString();  //将StringBuffer变为String实例System.out.println(data);}
}
​
public static void change(StringBffer temp){temp.append("world").append("!");
}
实际上使用:
String strB = "hello"+"world"+"!"
程序编译后的结果全部等价于以下操作:
StringBuffer buf = new StringBuffer();
buf.append("hello").append("world").append("!");
所有的"+"编译之后都变成了StringBuffer中append()方法

除了可以修改内容的能力外,还提供了一些String类所不具备的方法

插入删除数据

StringBuffer buf = new StringBuffer();
buf.append("hello world").delete(6,12).insert(6,"!");

字符串反转

StringBuffer buf = new StringBuffer();
buf.append("hello");
System.out.println(buf.reverse());

CharSequence接口

常见子类

String、StringBuffer、StringBuilder

常见的方法

No.方法类型描述
1public char charAt(int index)普通获取指定索引字符
2public int length()普通获取字符串长度
3public CharSequence subSequence(int start,int end)普通截取部分字符串

使用示例

CharSequence str = "hello"; 
//子类实例向父类接口转型
CharSequence sub = str.subSequence(4,8);
//截取部分子字符串
​
//String类是CharSequence接口子类,所以本程序利用对象向上转型的操作通过字符串的匿名对象实现了CharSequece父接口对象实例化,随后调用subSequence()方法实现了子字符串的截取操作

注:

开发中优先考虑String类,只有在频繁操作修改这一操作中才会考虑使用StringBuffer或StringBuilder

AutoCloseable接口

该接口的主要功能是结合异常处理结构在资源操作完成后实现自动释放功能

public interface AutoCloseale{public void close() throws Exception;//资源释放
}

Runtime类

Runtime描述的是运行时的状态,在每一个JVM进程中都会提供唯一的一个Runtime类实例化对象。

可以利用Runtime类对象获取与JVM有关的运行时状态。

由于Runtime类中只存在一个实例化对象,所以在Runtime类中默认将默认将其构造方法封装(单例设计模式),这样就必须用Runtime类中提供的getRuntime()方法(为static方法)来获取实例化对象,随后就可以获取一些系统相关的信息。

No.方法类型描述
1public static Runtime getRuntime()普通获取Rintime类的实例化对象
2public int avaliableProcessors()普通获取可用的CPU处理器数量
3public long maxMemory()普通取得最大可用内存量
4public long totalMemory()普通取得总共可用内存量
5public long freeMemory()普通取得空闲内存量
6public void gc()普通运行垃圾收集器,释放垃圾空间

获取本机CPU处理器数量

public class JavaAPIDemo{public static void main(String args) throws Exception{Runtime runtime = Runtime.getRuntime(); //获取Runtime实例化对象System.out.println(runtime.avaliableProcessors()); //获取处理器数量}
}

注: long型数据主要有两种情况,表示文件大小和表示日期时间

System类

No.方法类型描述
1public static void arraycopy(Object src,int srcPos,Object destPos,int length)普通数组复制操作
2public static long currentTimeMillis()普通取得当前的日期时间,以long型数据返回
3public static void gc()普通执行GC操作

Cleaner类

在java中对象的整个生命周期大致可以分为七个阶段:

创建阶段(Created)

应用阶段(In Use)

不可见阶段(Invisible)

不可达阶段(Unreachable)

收集阶段(Collected)

终结阶段(Finalized)

释放阶段(Free)

Math数学计算

程序开发本质就是数据处理,java提供有java.lang.Math类来帮助开发者进行常规的数学计算处理。

例如,四舍五入,三角函数,乘方处理等

Math.abs(-10.9)  //绝对值 10.9
Math.max(10.2,20.3) //获取最大值
Math.log(5) //对数:1.60943...
Math.round(15.1) //四舍五入 15
Math.round(-15.5) //四舍五入 -15
Math.round(-15.51) //四舍五入 -16
Math.pow(10.2,20.2) //乘方:2.36441...

Rondom随机数

import java.util.Random

设置一个随机数的范围边界就可以随机生成不大于此边界范围的正整数

方法(随机生成正整数):public int nextInt(int bound)

Random rand = new Random();
rand.nextInt(100);

大数字处理类

BigInteger

No.方法类型描述
1public BigInterger(String val)构造将一个字符串变成BigInterger类型数据
2public BigInterger add(BigInterger val)普通加法计算
3public BigInterger substract(BigInterger val)普通减法计算
4public BigInterger multiply(BigInterger val)普通乘法计算
5public BigInterger divideBigInterger val)普通除法计算
6public BigInterger max(BigInterger val)普通返回两个大数字中的最大值
7public BigInterger min(BigInterger val)普通返回两个大数字的最小值
8public BigInteger[] divideAndRemainder(BigInterger val)普通除法操作,数组的第一个元素为除法的商,第二个元素为除法的余数

BigDecimal

No.方法类型描述
1public BigDecimal(double val)构造将double表示形式转换为BigDecimal
2public BigDecimal(int val)构造将int表示形式转换为BigDecimal
3public BigDecimal(String val)构造将字符串表示形式转换为BigDecimal
4public BigDecimal add(BigDecimal augend)普通加法计算
5public BigDecimal subtract(BigDecimal subtrahend)普通减法计算
6public BigDecimal multiply(BigDecimal multiplicand)普通乘法计算
7public BigDecimal divide(BigDecimal divisor)普通除法计算
8public BigDecimal divide(BigDecimal divisor,int scale,RoundingMode roundingMode)普通除法计算设置保留下小数位与进位模式

Date日期处理类

No.方法类型描述
1public Date()构造实例化Date对象
2public Date(long date)构造将数字变为Date类对象,long为日期时间数据
3public long getTime()普通将当前的日期时间变为long型

SimpleDateForrmat日期格式化

正则表达式

Arrays数组操作类

import java.util.Arrays

public class JavaApIDemo{public static void main(String[] args) throws Exception{int dataA[] = new int[] {1,2,3};int dataB[] = new int[] {1,2,3};System.out.println(Arrays.compare(dataA,dataB));System.out.println(Arrays.equals(dataA,dataB));int data[]C = new int[10];Arrays.fill(dataC,3); //内容填充System.out.println(Arrays.toString(dataC)); //数组转为字符串输出}
}
No.方法类型描述
1public static void sort(数据类型[] 变量)普通数组排序
2public static int binarySearch(数据类型[] 变量,数据类型 key)普通利用二分查找算法进行数据查询
3public static int compare(数据类型[] 变量,数据类型[] 变量)普通比较两个数组的大小,返回3类结果:大于(1)、小于(-1)、等于(0)
4public static boolean equals(数据类型[] 变量,数据类型[] 变量)普通数组相等判断
5public static void fill(数据类型[] 变量,数据类型 变量)普通数组填充
6public static String toString(数据类型[] 变量)普通数组转为字符串

异常结构

以后慢慢遇到再补充吧!

http://www.lryc.cn/news/511369.html

相关文章:

  • Wordly Wise 3000 国际背单词01 介绍 + 测词汇量
  • Unity Dots理论学习-2.ECS有关的模块(1)
  • 2021.12.28基于UDP同信的相关流程
  • 使用 Docker 搭建 Hadoop 集群
  • optuna和 lightgbm
  • Android 设置铃声和闹钟
  • 自动化测试模型(一)
  • 解决nuxt3下载慢下载报错问题
  • Ubuntu修改swap大小
  • [C#] 复数乘法的跨平台SIMD硬件加速向量算法(不仅支持X86的Sse、Avx、Avx512,还支持Arm的AdvSimd)
  • C#WPF基础介绍/第一个WPF程序
  • 强大的接口测试可视化工具:Postman Flows
  • 系统设计及解决方案
  • 从0入门自主空中机器人-2-2【无人机硬件选型-PX4篇】
  • Linux之ARM(MX6U)裸机篇----2.汇编LED驱动实验
  • e3 1220lv3 cpu-z分数
  • HTML5适配手机
  • C# 中使用 MassTransit
  • 网络编程 实现联网 b+Tree
  • zentao ubuntu上安装
  • Java 网络原理 ①-IO多路复用 || 自定义协议 || XML || JSON
  • Bash Shell知识合集
  • 从0入门自主空中机器人-1【课程介绍】
  • Doris使用注意点
  • Mybatis插件better-mybatis-generator的下载与使用
  • uniapp小程序实现弹幕不重叠
  • 快速排序学习优化
  • 微信流量主挑战:三天25用户!功能未完善?(新纪元4)
  • jetson 无显示器配置WIFI
  • SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)