java常用工具类和API

news/2025/3/15 19:46:07/文章来源:https://www.cnblogs.com/rpup/p/18774100

java常用工具类和API

前言:本篇总结一些常用的工具类和api

1.0 StringBuilder

我们在处理字符串时,一般会使用StringBuilder,因为其提供了大量的API,并且效率要高于String

尤其是进行字符串拼接时,如果使用 String进行字符串拼接时,由于String和其他的封装类属于不可变数据类

型,所以对字符串的并不是在原有的基础上进行更改,而是不断产生新串的过程,不断的扔掉老对象,产生新的对

象,而StringBuilder 本质是一个容器,我们在进行拼接时是加在同一个对象中,所以相对String要快很多。所以

对字符串进行频繁修改时,更推荐使用StringBuilder

下面为一些基本运用

package com.example.StringBuilder;
public class MyStringBuilder {public static void main(String[] args) {StringBuilder sb = new StringBuilder();sb.append("Hello");System.out.println(sb);sb.reverse();System.out.println(sb);System.out.println(sb.length());sb.toString();System.out.println(sb);}
}

1.1 StringBuffer

StringBuffer和StringBuilder的用法是完全相同的,不过相比于StringBuilder,StringBuffer的线程更安全

1.2 实际使用

现在有一个要求,要求我们写出一个将数组转换为[1,2,3]这种字符串格式的方法,我们利用StringBuilder来机

进行字符串拼接,并且实现该功能

package com.example.StringBuilder;
class MyArray{private int[] array=new int[10];private int size=0;public void add(int value){if(size<array.length){array[size]=value;size++;}}public String toString(){StringBuilder sb=new StringBuilder();sb.append("[");for(int i=0;i<size;i++) {sb.append(array[i]);if(i<size-1){sb.append(",");}}sb.append("]");return sb.toString();}}
public class MyStringBuilder {public static void main(String[] args) {MyArray arr=new MyArray();arr.add(10);arr.add(20);arr.add(30);System.out.println(arr);}
}

1.3 StringJoiner

StringJoiners是专门用来进行字符串拼接的工具类,使用该工具类可以使代码更简介。

同样是上面的代码,我们使用StringJoiner来进行简化,得到了下面的代码

package com.example.StringBuilder;import java.util.StringJoiner;class MyArray{private int[] array=new int[10];private int size=0;public void add(int value){if(size<array.length){array[size]=value;size++;}}public String toString(){StringJoiner sj=new StringJoiner(",","[","]");for(int i=0;i<size;i++){sj.add(String.valueOf(array[i]));}return sj.toString();}}
public class MyStringBuilder {public static void main(String[] args) {MyArray arr=new MyArray();arr.add(10);arr.add(20);arr.add(30);System.out.println(arr);}
}

我们在创建StringJoiner方法时就已经通过其构造器指明了分隔符,开始符号,结束符号,接下来直接add对象就

自动按照该格式拼接字符串,不过需要注意的是,在StringBuilder时,我们直接传入数字是可以的,因为对于

append()方法,在StringBuilder类内部重载了append方法,对于各种类型的值加入都进行了处理,将其转化为

字符串并进行添加,因此我们直接传入数组的项是可以的,但对于StringJoiner的add方法,并没有进行重载,所

以我们只能传入字符值,因此需要使用valueOf方法将数组中的项的值转换为字符串进行添加

1.4 Math

Math工具类提供一些对数据进行操作的静态方法

abs(x)绝对值方法

ceil(x)向上取整

floor(x)向下取整

max(x,y)取x,y较大值

min(x,t) 取x,y较小值

pow(x,y) 返回x的y次方

random() 返回0.0到1.0的一个随机数,不包括1.0

1.5 Runtime

Runtime表示程序所在的运行环境,Runtime是一个单例类,用于与JVM进行交互,通过getRuntime()获得唯一

的Runtime实例,单例类指只有一个实现的类,通过类提供的静态方法获得该实现

首先我们来看exit方法,该方法用于关闭JVM虚拟机,传递状态码0代表正常结束

package com.example.StringBuilder;public class MyStringBuilder {public static void main(String[] args) {Runtime jre=Runtime.getRuntime();jre.exit(0);//终止当前虚拟机,传递的是状态码System.out.println("Hello World");}
}

因为虚拟机被终止了,所以后面的Hello World并没有被输出

还有一些其他的方法

package com.example.StringBuilder;import java.io.IOException;public class MyStringBuilder {public static void main(String[] args) {Runtime jre = Runtime.getRuntime();System.out.println("处理器数量" + jre.availableProcessors());System.out.println("空闲内存" + jre.freeMemory() / 1024 / 1024 + "M");System.out.println("总内存" + jre.totalMemory() / 1024 / 1024 + "M");try {jre.exec("calc");} catch (IOException e) {e.printStackTrace();}}
}

需要注意的是exec用于执行电脑中的程序,可能会爆出异常,所以要进行异常处理

1.6 System

System代表当前系统,也是一个工具类

package com.example.StringBuilder;public class MyStringBuilder {public static void main(String[] args) {//System.exit(0);//关闭虚拟机long time1 =System.currentTimeMillis();long x=0;for(int i=1;i<=1000000000;i++){x+=i;}long time2 =System.currentTimeMillis();System.out.println((time2-time1)/1000.0+"秒");}
}

我们可以用currentTimeMillis方法来统计运行的时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语单词音标重读符号读法作用

比如explicit,重读的是`后面的第一个元音即i

量子网络操作系统 QNodeOS 资料收集

2025年3月14日,通过科技日报的报道知道了这个量子计算领域的重大突破 —— 全球首个量子网络操作系统 QNodeOS 问世。欧洲的量子互联网联盟(QIA)的研究人员2025年3月12日在《自然》(Nature)杂志上发表了论文 An operating system for executing applications on quantum n…

Typora的基本的一些使用用法

markdown 标题 二级标题 (在最前面两个#号加空格) 三级标题 (在最前面三个#号加空格) 字体 Hello,World!(粗体:两边各两个星号) Hello,World!(斜体:两边各一个星号) Hello,World!(粗体加斜体:两边各三个星号) Hello,World!(删除体:两边各两个波浪号) 引用(大于加…

http--nodejs原生web服务

创建http服务const http = require(node:http) const url = require(node:url)http.createServer((req, res) => {}).listen(98, () => {console.log(server is running on port 98) }) 区分请求方法 例如常见的 POST、GET req表示前端的入参(请求参数)。 res 表示后…

Windows server 中 静默安装SQL SERVER 数据库 命令 参数

这篇文章记录一下自己如何在Windows Server Core上安装和配置SQL Server。 安装之前的检查 安装SQL Server的操作系统要求检查 第一件事是需要仔细检查SQL Server的要求文档,这个文档里详细的列出了目前SQL Server支持的操作系统版本,最重要的一条就是检查当你在使用云上的虚…

(3).工厂方法模式

我们接上一个模式的实例: (1).创建水果接口 IFruit:1 namespace 工厂方法模式2 {3 public interface IFruit4 {5 /// <summary>6 /// 水果的单价7 /// </summary>8 double Amount { get; }9 10 11 /// <s…

nestjs Provider

Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系,自动把 provider 注入到目标对象以上部分只是简写{provide: AppService,useClass: AppService }两种注入方式构造器注入属性注入全局模块一般来说,我们都是在需要导出的模块的m…

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流

FastAPI+CrewAI+MySQL+Celery实现AI Agent复杂工作流 https://github.com/fanqingsong/CrewAIFlowsFullStack本项目主要实现使用FastAPI后端框架+CrewAI实现AI Agent复杂工作流。代码实现CrewAI的Flows功能,并支持Flow运行中间结果进行持久化存储和查询(MySQL),支持多Flow并行…

石家庄地铁收费app

先建立一个项目,项目结构如图所示先编写app页面activity_main.xml,包括其输入框和按钮<TextViewandroid:id="@+id/tvStartStation"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="起点站&quo…

[WSNesting 设置说明] 数控钻加工限制-不使用加工限制-自动连线

版权声明本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 BensonLaur 和本文原始地址:

Git更新子模块

1.问题 如图,我们从GitHub上克隆下来一个库,内部还有类似这种右边蓝色S的表示的是该工程的子模块部分,一般初始为空,导致错误2.解决 我们需要用git submodule update --recursive --remote命令去更新初始化我们的子模块

pycharm2024下载安装一键激活2099年

​软件包和激活工具下载地址,关地球号:QStockView,发送pycharm,立刻发给你,全免费; 激活之后如下: 激活方式,打开压缩包,然后找到下面的文件,双击打开提示成功,之后,就可以了;去重新打开pycharm,就可以了; 中文设置如下: 添加图片注释,不超过 140 字(可选…