Java(7)常用的工具类

1.Collections集合工具类

内置了大量对集合操作的静态方法,可以通过类名直接调用方法。

方法的种类:最大值max、最小值min、sort排序...详见API帮助文档

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class CollectionTest {public static void main(String[] args) {List l = new ArrayList();l.add("c");l.add("e");l.add("m");l.add("o");l.add("g");l.add("f");//最大值String max = (String) Collections.max(l);System.out.println(max);//最小值String min = (String) Collections.min(l);System.out.println(min);//排序Collections.sort(l);System.out.println(l);}
}

2. 泛型

是对集合类型的一种约束,保证集合中只存放一种类型的数据

约束的范围:集合、方法、类

import java.util.ArrayList;
import java.util.List;public class 泛型测试 {public static void main(String[] args) {List<String> l = new ArrayList();
//      List l = new ArrayList<String>();l.add("a");
//      不符合类型,会报错👇
//      l.add(1);
//      l.add(true);System.out.println(l);List<Student> studentList = new ArrayList();Student s1 = new Student();Student s2 = new Student();Student s3 = new Student();studentList.add(s1);studentList.add(s2);studentList.add(s3);
//      studentList.add(1);不是学生类型,会报错}public static double getSum(ArrayList<? extends Number> value){return 0;}
}

3.Object类(超类)

是Java中所有类的父类,是唯一没有父类的类

常用的方法:

  • toString() -- 转换字符串
  • hashCode() --  一个对象的唯一十进制数列
  • equals() -- 判断两个字符串是否相等

3.1 模拟hashCode()

public class Test {public static void main(String[] args) {Student student1 = new Student();student1.id = 1;student1.name = "za";Student student2 = new Student();student2.id = 2;student2.name = "ci";System.out.println(student1.hashCode()); //189568618System.out.println(student2.hashCode()); //793589513String s1 = "Hello";String s2 = "World";System.out.println(s1.equals(s2)); //false}
}

3.2 模拟equals

实现属性匹配,根据classId属性判断两名同学是否来自同一个班

public class EqualsDemo {private String classId;private String name;public EqualsDemo(String classId, String name) {this.classId = classId;this.name = name;}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public boolean equals(Object o){if(o instanceof EqualsDemo){int i = 0;EqualsDemo e = (EqualsDemo)o;if (e.getClassId().equals(this.getClassId())){return true;}else{return false;}}return false;}
}

测试文件: 返回true

public class EqualsDemoTest {public static void main(String[] args) {EqualsDemo tom = new EqualsDemo("1234","Tom");EqualsDemo jack = new EqualsDemo("1234","Jack");System.out.println(tom.equals(jack));}
}

4. 包装类

是基于基本类型封装的工具类,提供了大量对数据进行操作的方法。如:类型转换方法

包装类的种类:

  • 所有基本类型都有对应的包装类
  • 包装类中父类中的提供了valueOf()方法,可用于类型转换
  • 各包装类中提供了自己的类型转换方法parseInt()、parseFoalt()等
  • 包装类和对应的基本类型提供了自动装箱、自动拆箱功能,因此可以直接转换
public class 包装类测试 {public static void main(String[] args) {int a = 1;Integer b = 2;System.out.println(a + b);//3
//      该写法JDK1.8支持👇
//      Integer c = new Integer(500);String c = "500";System.out.println(c+1);//5001//字符串转数字,该字符串必须为可计数类型Integer d = Integer.valueOf(c);System.out.println(d+1);//501Integer e = Integer.parseInt(c);System.out.println(e+1);//501}
}

5. 字符串

种类:

  • Sting:将字符串存到常量池中,查询快,修改、追加慢。
  • StringBuffer:将字符串存放在堆中,查询慢,修改和追加快,线程安全的
  • StringBuilder:将字符串存放在堆中,查询快,修改和追加快,线程非安全的

5.1 equals内容比较 

public class 字符串测试1 {public static void main(String[] args) {String str1 = "hello";String str2 = new String("hello");System.out.println(str1 == str2);//false//equals可以对字符串的内容进行比较System.out.println(str1.equals(str2));//trueSystem.out.println(1+2+str1);//3helloSystem.out.println(str1+1+2);//hello12System.out.println(str1+(1+2));//hello3StringBuffer sb = new StringBuffer("abc");sb.append("efg");System.out.println(sb);//abcefgSystem.out.println(sb.length());//6System.out.println(sb.reverse());//gfecba

5.2 三种字符串追加比较

计算并打印出三种字符串拼接操作所花费的时间。

public class 字符串测试2 {public static void main(String[] args) {//String测试String s = "doudou";//获得系统当前的毫秒数long start = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {s+="doudou";}long end = System.currentTimeMillis();System.out.println("String使用了:"+(end-start));//StringBuffer测试StringBuffer strb = new StringBuffer("doudou");long start1 = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {strb.append("doudou");}long end1 = System.currentTimeMillis();System.out.println("StringBuffer使用了:"+(end1-start1));//StringBuilder测试StringBuilder strbu = new StringBuilder("doudou");long start2 = System.currentTimeMillis();for (int i = 0; i < 50000; i++) {strbu.append("doudou");}long end2 = System.currentTimeMillis();System.out.println("StringBuilder使用了:"+(end2-start2));}
}

输出结果:

String使用了:1356
StringBuffer使用了:2
StringBuilder使用了:1

6. 数学运算类 

6.1 Math数学运算类

public class 数学运算类 {public static void main(String[] args) {System.out.println(Math.ceil(1.2)); //向上取整(2.0)System.out.println(Math.floor(1.8));//向下取整(1.0)System.out.println(Math.round(1.5));//四舍五入(2)}
}

6.2 产生10个1-10的随机数

import java.util.Random;
public class 数学运算类 {public static void main(String[] args) {//方法1for (int i=0;i<10;i++){double result = (Math.random()*10)+1;System.out.println((int)result);}//方法2Random r = new Random();for (int i=0;i<10;i++){int result = r.nextInt(10)+1;System.out.println(result);}}
}

7. 日期时间类

7.1 获得系统时间

import java.util.Date;
public class 日期时间类1 {public static void main(String[] args) {//获得当前系统时间Date now = new Date();System.out.println(now); //此刻时间//系统初始时间+1000msDate d = new Date(1000);System.out.println(d); //Thu Jan 01 08:00:01 CST 1970

7.2 比较时间前后

public class 日期时间类 {public static void main(String[] args) {//调用者日期是否在输出者之后/前System.out.println(now.after(d)); //trueSystem.out.println(now.before(d)); //false//调用者日期在参数者之后,返回1,否则返回-1,相等返回0System.out.println(now.compareTo(d)); //1System.out.println(d.compareTo(now)); //-1}
}

7.3 设置日历工具

import java.util.Calendar;
public class 日期时间类3 {public static void main(String[] args){//显示此时此刻的日期时间Calendar calendar = Calendar.getInstance();System.out.println(calendar.get(Calendar.YEAR));System.out.println(calendar.get(Calendar.MONTH)+1);//默认初始值为0,而非1月System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//使用日历工具设置日期calendar.set(2025,6,3);System.out.println(calendar.get(Calendar.YEAR)); //2025System.out.println(calendar.get(Calendar.MONTH)); //6System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //3}
}

7.4 日期时间格式化

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class 日期时间类4 {public static void main(String[] args) throws ParseException {//日期时间格式化DateFormat df = DateFormat.getInstance();//设置格式DateFormat df1 = DateFormat.getDateInstance(DateFormat.LONG);System.out.println(df1.format(new Date())); //2025年1月14日//自定义日期时间格式化工具SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//将日期格式的数据转换成字符串System.out.println(sdf.format(new Date())); //2025-01-14 10:43:47//字符串转换成日期格式Date date1 = sdf.parse("2025-01-14 10:43:47");System.out.println(date1);}
}

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

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

相关文章

Win11右键菜单实现

主要参考Win11 Context Menu Demo 此工程是vs2022编译&#xff0c;vs2019先修改下 base.h 方可编译过 编译好dll以后 拷贝至SparsePackage目录下 生成稀疏包msix 就拿他工程里面的改&#xff0c;编辑AppxManifest.xml&#xff0c;配置都要对&#xff0c;一个不对可能都失败&a…

像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决

问题介绍 今天处理返回的 JSON 的时候&#xff0c;出现了下面这样的问题&#xff1a; 处理这种问题的时候&#xff0c;首先你要看一下当前的字符串格式是啥样的&#xff0c;比如我查看后发现是下面这样的&#xff1a; 会发现这个字符串中间没有逗号&#xff0c;也就是此时的J…

what?ngify 比 axios 更好用,更强大?

文章目录 前言一、什么是ngify&#xff1f;二、npm安装三、发起请求3.1 获取 JSON 数据3.2 获取其他类型的数据3.3 改变服务器状态3.4 设置 URL 参数3.5 设置请求标头3.6 与服务器响应事件交互3.7 接收原始进度事件3.8 处理请求失败3.9 Http Observables 四、更换 HTTP 请求实现…

Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用

概述 现在的 RTOS 基本可以分为 Linux 阵营和非 Linux 阵营这两大阵营。非 Linux 阵营的各大 RTOS 都是独立发展,使用上也相对独立;而 Linux 阵营则有多种不同的实现方法来改造 Linux 以实现实时性要求。本文我们重点关注 Linux 阵营的实时内核实现方法! 本文我们重点关注 …

【拒绝算法PUA】3065. 超过阈值的最少操作数 I

系列文章目录 【拒绝算法PUA】0x00-位运算 【拒绝算法PUA】0x01- 区间比较技巧 【拒绝算法PUA】0x02- 区间合并技巧 【拒绝算法PUA】0x03 - LeetCode 排序类型刷题 【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中 C刷题技巧总结&#xff1a; [温习C/C]0x04 刷…

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置&#xff0c;在config.xml文件中指向users.xml文件&#xff0c;相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中&#xff0c;如果在users.xml文…

《自动驾驶与机器人中的SLAM技术》ch9:自动驾驶车辆的离线地图构建

目录 1 点云建图的流程 2 前端实现 2.1 前端流程 2.2 前端结果 3 后端位姿图优化与异常值剔除 3.1 两阶段优化流程 3.2 优化结果 ① 第一阶段优化结果 ② 第二阶段优化结果 4 回环检测 4.1 回环检测流程 ① 遍历第一阶段优化轨迹中的关键帧。 ② 并发计算候选回环对…

GPT 系列论文精读:从 GPT-1 到 GPT-4

学习 & 参考资料 前置文章 Transformer 论文精读 机器学习 —— 李宏毅老师的 B 站搬运视频 自监督式学习(四) - GPT的野望[DLHLP 2020] 來自猎人暗黑大陆的模型 GPT-3 论文逐段精读 —— 沐神的论文精读合集 GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【论文精读】…

大数据技术Kafka详解 ⑤ | Kafka中的CAP机制

目录 1、分布式系统当中的CAP理论 1.1、CAP理论 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP机制 C软件异常排查从入门到精通系列教程&#xff08;核心精品专栏&#xff0c;订阅量已达600多个&#xff0c;欢迎订阅&#xff0c;持续更新…

riscv架构下linux4.15实现early打印

在高版本linux6.12.7源码中&#xff0c;early console介绍&#xff0c;可参考《riscv架构下linux6.12.7实现early打印》文章。 1 什么是early打印 适配内核到新的平台&#xff0c;基本环境搭建好之后&#xff0c;首要的就是要调通串口&#xff0c;方便后面的信息打印。 正常流…

improve-gantt-elastic(vue2中甘特图实现与引入)

1.前言 项目开发中需要使用甘特图展示项目实施进度&#xff0c;左侧为表格计划&#xff0c;右侧为图表进度展示。wl-gantt-mater&#xff0c;dhtmlx尝试使用过可拓展性受到限制。gantt-elastic相对简单&#xff0c;可操作性强&#xff0c;基础版本免费。 甘特图&#xff08;Gan…

力扣 全排列

回溯经典例题。 题目 通过回溯生成所有可能的排列。每次递归时&#xff0c;选择一个数字&#xff0c;直到选满所有数字&#xff0c;然后记录当前排列&#xff0c;回到上层时移除最后选的数字并继续选择其他未选的数字。每次递归时&#xff0c;在 path 中添加一个新的数字&…

1/13+2

运算符重载 myString.h #ifndef MYSTRING_H #define MYSTRING_H #include <cstring> #include <iostream> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度int capacity; …

【HM-React】08. Layout模块

基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档&#xff0c;找到示例&#xff1a;顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…

计算机视觉算法实战——实时车辆检测和分类(主页有相关源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​​​​​​​​​​​​​​​​ 1. 领域介绍✨✨ 实时车辆检测和分类是计算机视觉中的一个重要应用领域&#xff0c;旨在从视频流或…

使用 selenium-webdriver 开发 Web 自动 UI 测试程序

优缺点 优点 有时候有可能一个改动导致其他的地方的功能失去效果&#xff0c;这样使用 Web 自动 UI 测试程序可以快速的检查并定位问题&#xff0c;节省大量的人工验证时间 缺点 增加了维护成本&#xff0c;如果功能更新过快或者技术更新过快&#xff0c;维护成本也会随之提高…

性能测试工具Jmeter分布式运行

性能测试工具JMeter的分布式执行是一种用于增强压力测试能力的技术方案&#xff0c;它允许用户通过多台机器来共同完成同一个测试计划的执行。这种方式特别适用于需要模拟成百上千甚至上万用户并发访问的情况&#xff0c;当单台机器由于硬件资源&#xff08;如CPU、内存、网络I…

弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了

网址&#xff1a; (63条消息) DSIStudio简体中文汉化版(2022年7月)-算法与数据结构文档类资源-CSDN文库

移动云自研云原生数据库入围国采!

近日&#xff0c;中央国家机关2024年度事务型数据库软件框架协议联合征集采购项目产品名单正式公布&#xff0c;移动云自主研发的云原生数据库产品顺利入围。这一成就不仅彰显了移动云在数据库领域深耕多年造就的领先技术优势&#xff0c;更标志着国家权威评审机构对移动云在数…

在vscode中使用R-1

参考我的上一篇博客&#xff1a; https://blog.csdn.net/weixin_62528784/article/details/145092632?spm1001.2014.3001.5501 这篇内容实际上就是上一篇博客的后续承接&#xff0c;既然都在vscode的jupyter中使用R了&#xff0c;实际上其实也能够直接在vscode中原生使用R的编…