Java中常用的工具类

news2024/12/24 20:33:39

有时间就该多学,我还年轻,吃苦趁现在!

文章目录

  • ❗前言
  • 1️⃣Object类
    • ①、使用步骤
      • equals方法
      • hashCode方法
      • toString方法
      • ❗equals方法和==运算符的区别
    • ②、重要方法
    • 总结
  • 2️⃣包装类
    • 基本类型和包装类相互转换
    • 字符串类型转换成基本类型
  • 3️⃣Date类
    • Date类的常用方法
    • String和Date相互转换
    • 小结
  • 4️⃣数字格式化
  • 5️⃣String字符串类


❗前言

提示:学历不但是敲门砖,也是我下不来的高台,更是孔乙己脱不下的长衫

Java中常用的工具类是预定义好的类,它们提供了一些常用的方法和功能,用于完成日常开发中的各种任务


1️⃣Object类

提示:这里可以添加本文要记录的大概内容:
Object类是所有类的父类,又叫祖宗类,是java中唯一一个没有父类的类
定义类时没有明确指定一个父类,那么就是默认继承Object

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

①、使用步骤

在下面例子中,我们定义了一个Animal类,并重写了toString方法

Object 类属于java.lang包,此包下的所有类在使用时无需手动导入,系统会在程序编译期间自动导入

public class Animal {
    private String name;
    private int age;
    private String species;  //属性

    public Animal() {}  //无参构造方法

    public Animal(String name, int age, String species) {
        super();
        this.name = name;
        this.age = age;
        this.species = species;
    }  //有参构造方法

    public String getName() {
        return name;
    }
//get、set
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSpecies() {
        return species;
    }

    public void setSpecies(String species) {
        this.species = species;
    }

    @Override
    public String toString() {   //生成toString,重写
        return "Animal [name=" + name + ", age=" + age + ", species=" + species + "]";
    }
}

来几个测试类分别看看所用方法之间的区别

equals方法

1、equals方法返回一个布尔数据,代表比较两个引用类型变量是否相等
equals比较的是引用变量存储的地址

下面例子中使用equals方法判断两个Animal对象是否相等
基本数据类型的比较用 == (如: a == 3b == 4, a == b,比较的是值是否相等)
引用类型数据比较:调用 equals()方法进行比较

public class AnimalTest {
    public static void main(String[] args) {
        Animal a1 = new Animal("Tom", 3, "cat");
        Animal a2 = new Animal("Jerry", 2, "mouse");

        System.out.println(a1.equals(a2)); // false
        Animal a3 = a1;
        System.out.println(a1.equals(a3)); // true
     }
}

返回布尔类型数据

hashCode方法

2、hashCode方法,返回一个整数,代表的是当前对象在内存中的地址

使用hashCode方法获取Animal对象在内存中的地址。

public class AnimalTest {
    public static void main(String[] args) {
        Animal a1 = new Animal("Tom", 3, "cat");
        Animal a2 = new Animal("Jerry", 2, "mouse");
        System.out.println(a1.hashCode());
        System.out.println(a2.hashCode());
     }
}

toString方法

3、toString方法,无论原来什么类型都返回一个字符串
默认格式是全类名@hashCode 十六进制表示,一般来讲子类需要重写toString

在下面测试类中输出一个Animal对象时,默认调用toString方法输出对象的字符串表示形式。

public class AnimalTest {
    public static void main(String[] args) {
        Animal a1 = new Animal("Tom", 3, "cat");
        Animal a2 = new Animal("Jerry", 2, "mouse");
        System.out.println(a1.toString());

        Animal a4 = new Animal("Rex", 5, "dog");
        System.out.println(a4.toString());

        System.out.println(a4); // 默认调用toString方法

    }
}
//在前面代码Animal类中已重写toString(),这里需要对比着看
//代码在此处Animal类中加了属性、两个构造方法、get/set、重写toString
 @Override
    public String toString() {   //生成toString,重写
        return "Animal [name=" + name + ", age=" + age + ", species=" + species + "]";
    }

❗equals方法和==运算符的区别

需要注意的是,equals方法和==运算符在比较字符串对象时有所不同。
==运算符比较的是两个对象的引用地址是否相同,而equals方法比较的是两个对象的值是否相等。
因此,当需要比较两个对象的内容时,应该使用equals方法

以下示例中使用==运算符比较两个字符串对象,返回false:

String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1 == str2); //输出false

在以上示例中,str1和str2的值相等,但是被声明时存放的位置不一样,因此==运算符返回false。
要比较字符串对象的内容,应该使用equals方法。

①、==是运算符,既可以比较基本类型数据也可以比较引用类型
equals方法只能比较引用类型数据

②、==运算符和equals方法默认实现比较引用类型时,都是比较地址而不是内容

③、有的子类会重写equals方法,重写后比较的不再是地址,String类重写后比较的是字符串内容

②、重要方法

Object类是Java中所有类的公共父类,即所有类都直接或间接继承自Object类。以下是Object类的一些重要方法及解释:

  1. equals(Object obj):判断当前对象是否与另一对象相等;
  2. hashCode():返回当前对象的哈希码值;
  3. toString():返回当前对象的字符串表示形式;
  4. getClass():返回当前对象所属的类的对象;
  5. finalize():在垃圾回收器清理对象之前调用,用于释放系统资源或执行特定操作;
  6. notify():唤醒在当前对象的监视器中等待的单个线程;
  7. notifyAll():唤醒在当前对象的监视器中等待的所有线程;
  8. wait():当前线程等待,直到另一个线程调用notify()或notifyAll()方法;
  9. wait(long timeout):当前线程等待指定时间,直到另一个线程调用notify()或notifyAll()方法;
  10. wait(long timeout, int nanos):当前线程等待指定时间加上指定的纳秒数,直到另一个线程调用notify()或notifyAll()方法。

Object类中的这些方法对于所有Java类都是可用的。其中equals方法非常重要,因为它用于判断对象的相等性,可以在自定义类中重写该方法以实现自定义对象等价性的判断。

总结

  1. equals 方法

返回一个布尔数据,代表比较两个引用类型变量是否相等
equals比较的是引用变量存储的地址

  1. hashCode方法

返回一个整数,代表的是当前对象在内存中的地址

  1. toString方法

无论原来什么类型都返回一个字符串,
默认格式是全类名@hashCode 十六进制表示
一般来讲子类需要重写toString

2️⃣包装类

提示:这里可以添加本文要记录的大概内容:

Java中的包装类是指将基本数据类型封装成一个对象的类。
它们提供了许多方法和属性,使得基本数据类型能够像对象一样进行操作。

包装类可以用来实现将基本数据类型作为对象来操作和传递的需求。
它们可以用于将基本类型转换成字符串、获取基本类型的最大值和最小值、进行基本类型的算术运算等等。

在这里插入图片描述


基本数据类型及其包装类型

原始数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

除int和char外,其他包装类型和基本数据类型的名字都是首字母变大写

基本类型和包装类相互转换

基本类型转包装类用的是构造方法传参

具体代码如下:

public static void main(String[] args) {
	int i = 10;
	Integer t = new Integer(i); // 基本类型转包装类
	System.out.println(t);
}

包装转基本类型要调用xxxValue方法

public static void main(String[] args) {
	Integer x = new Integer(10);
	int m = x.intValue(); // 包装类转基本类型
	System.out.println(m);
}

在Java5之后,引用了自动装箱和自动拆箱

  1. 自动装箱

当我们将一个基本类型的值赋给对应的包装类对象时,编译器会自动将其转换为包装类对象,这个过程称为自动装箱。

public static void main(String[] args) {
	double d = 10.8;
	Double y = d;
	System.out.println(y);	
		//拆箱
	Double b = new Double(3.14);
	double s = b;
	System.out.println(s);
}
  1. 自动拆箱

当我们需要将一个包装类对象转换为基本类型值时,编译器会自动将其转换为基本类型值,这个过程称为自动拆箱。

public static void main(String[] args) {
	Double b = new Double(3.14);
	double s = b;
	System.out.println(s);
}

在使用自动拆箱时需要避免出现空指针异常。

字符串类型转换成基本类型

在web开发中用的较多
在网络中传出的数据只能是字符串类型
在java中就需要将字符串类型转换成需要的基本类型

将字符串类型转换为基本类型可以使用相应类型的parseXXX() 方法,其中XXX表示基本类型,例如:

  1. 将字符串类型转换为int类型:
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
  1. 将字符串类型转换为double类型:
String str = "3.14";
double d = Double.parseDouble(str);
System.out.println(d);
  1. 将字符串类型转换为boolean类型:
String str = "true";
boolean b = Boolean.parseBoolean(str);
System.out.println(b);

注意:如果字符串不能转换成目标类型,将会抛出NumberFormatException异常。

3️⃣Date类

SimpleDateFormat

在这里插入图片描述

Date类的常用方法

你可以使用Java中的Date类获取当前运行时系统的日期。具体实现如下:

public static void main(String[] args){
	Date d1 = new Date();
	System.out.println(d1);
}

上述代码中,我们创建了一个Date对象,该对象表示当前日期和时间。
然后使用System.out.println()方法将该对象输出到控制台。
当你运行以上代码时,将输出当前日期和时间


after(Date when)方法是用于比较一个Date对象是否在另一个Date对象之后。这个方法返回一个boolean值
如果这个Date对象的时间在参数when指定的时间之后,则返回true,否则返回false。

方法的语法如下:

public boolean after(Date when)

其中,when表示用于比较的Date对象,(这里可以随便起名,比如叫d1,d2)

以下是使用after(Date when)方法、before(Date when)、compareTo(Date when)的示例:

public static void main(String[] args) throws InterruptedException{
		//当前运行时系统的日期
		Date date1 = new Date();
		Thread.sleep(500); //人为产生间隔,程序运行到此处,暂停500毫秒
		
		Date date2 = new Date();
		System.out.println(date1.after(date2));  //date1是否在指定日期之后
		System.out.println(date1.before(date2));  //date1是否在指定日期之前
		System.out.println(date1.compareTo(date2));  //时间相等为0
	}

这段代码创建了两个Date对象:date1表示当前时间,date2表示当前时间

String和Date相互转换

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd E a HH:mm:ss.SSS"); 

上面代码确立了转换的格式,
yyyy是完整的西元年
MM是月份
dd是日期
HH:mm:ss分别是小时、分和秒
HH:24小时制,而hh是12小时制
E:星期几
a:上午下午
SSS:毫秒

相互转化需要调用SimpleDateFormat类的相关方法
必须先指定日期格式
调用format方法:日期转字符串

SimpleDateFormat是Java中的一个日期格式化类,它可以根据给定的格式将日期对象转换为指定格式的字符串。

以下是SimpleDateFormat类的一些基本用法:

  1. 创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

其中,参数"yyyy-MM-dd"表示日期格式

  1. 将日期对象格式化为字符串

调用format方法,日期转字符串

Date date = new Date();
String strDate = sdf.format(date);
System.out.println(data);

其中,date是一个日期对象,sdf是一个SimpleDateFormat对象,format(date)方法将date对象按照sdf中定义的格式转换为一个字符串strDate。

  1. 将字符串解析为日期对象

调用paerse方法,字符串转日期

String x = "2020-07-15";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(x);
System.out.println(data);

其中,strDate是一个字符串表示的日期,sdf是一个SimpleDateFormat对象,parse(strDate)方法将strDate按照sdf中定义的格式解析为一个日期对象date。

以下是一个完整的示例:

public class SimpleDateFormatExample {
    public static void main(String[] args) {
        // 创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 将日期对象格式化为字符串
        Date date = new Date();
        String strDate = sdf.format(date);
        System.out.println(strDate);
        
        // 将字符串解析为日期对象
        String str = "2021-06-05 14:30:00";
        try {  //此处用添加抛出声明处理异常也行
            Date date2 = sdf.parse(str);
            System.out.println(date2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这段代码创建了一个SimpleDateFormat对象sdf,并将当前时间按照"yyyy-MM-dd HH:mm:ss"格式转换为一个字符串strDate,并输出。然后,将字符串"2021-06-05 14:30:00"按照相同的格式解析为一个日期对象,并输出。

小结

相互转化需要调用SimpleDateFormat类的相关方法
必须先指定日期格式
调用format方法,日期转字符串
调用paerse方法,字符串转日期

提示:Date类的常用方法如下:

  1. getTime()方法:返回从1970年1月1日00:00:00 GMT开始计算的毫秒数。

  2. after(Date when)方法:判断当前日期是否在给定日期之后。

  3. before(Date when)方法:判断当前日期是否在给定日期之前。

  4. compareTo(Date anotherDate)方法:比较当前日期和给定日期的大小。

  5. equals(Object obj)方法:判断当前日期是否等于给定日期。

  6. toString()方法:将当前日期转换为字符串表示形式。

  7. toLocaleString()方法:将当前日期转换为本地字符串表示形式。

  8. getTimezoneOffset()方法:返回当前日期与UTC标准时间之间的时间差,以分钟为单位。

  9. setTime(long time)方法:设置当前日期的毫秒数。

  10. clone()方法:创建并返回当前日期的副本。

  11. getDay()方法:返回当前日期是星期几,其中0表示星期日,1表示星期一,以此类推。

  12. getMonth()方法:返回当前日期的月份,其中0表示一月,1表示二月,以此类推。

  13. getYear()方法:返回当前日期的年份,其中0表示1900年,1表示1901年,以此类推。

  14. setDate(int date)方法:设置当前日期的日期部分。

  15. setMonth(int month)方法:设置当前日期的月份部分。

  16. setYear(int year)方法:设置当前日期的年份部分。


4️⃣数字格式化

提示:这里可以添加本文要记录的大概内容:

DecimalFormat是NumberFormat的一个子类,它可以将数字格式化成指定的格式,并进行数字的格式化和解析


以下是一些DecimalFormat的常用方法:

double number = 1234.5678;
DecimalFormat df = new DecimalFormat("#");  
System.out.println(df.format(number)); //保留整数,一个#号一个整数
		
df.applyPattern(".##");  //整数不管,小数位保留两位
System.out.println(df.format(number));
		
df.applyPattern(",###");  //设置千位分隔符的分隔位数
System.out.println(df.format(number));
		
//每三位用逗号进行分割
number = 123456789; 
System.out.println(df.format(number));

5️⃣String字符串类

Java中常用的工具类——字符串类

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

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

相关文章

【Java入门】-- Java基础详解之 [变量]

目录 1.变量 1.1 变量的概念 1.2 变量的使用基本步骤 1.3 变量使用注意事项 1.4 程序中 号的使用 1.5 数据类型 1.6 整数的类型 1.7 整型的使用细节 1.8 浮点类型 1.9 浮点型的使用细节 2.0 Java API文档 2.1 字符类型(char) 2.2 字符的使用细节 2.3 字符编码 …

JS事件冒泡与JS事件代理(事件委托)

JS事件冒泡与JS事件代理(事件委托) 1、事件冒泡1.1 概念1.2 要是不给子元素添加具体的oncilck处理方法,也能冒泡么?1.3 子元素触发的事件冒泡会触发父元素所有的事件么?还是触发对应的事件?1.4 那么我们应该…

pytorch笔记:Conv2d 和 ConvMixer

来自B站视频,API查阅,TORCH.NN nn.Conv2d 中一般 kernel_size 是小奇数(很多是3),padding 设置为 k − 1 2 \frac{k-1}{2} 2k−1​(实际上padding的是 k − 1 k-1 k−1,因为参数的意义是左右各…

苹果新专利曝光:AirTags可以快速找到Apple Pencil

近日,据外媒报道,苹果一项新专利提出,苹果手写笔可以通过“声学谐振器”来帮助用户找出手写笔的位置。根据这项专利,苹果试图在手写笔的笔盖上加入一个被动元件,以响应特定的声波频率。iPhone、iPad或Apple Watch会发出…

【OpenMMLab AI实战营二期笔记】第七天 MMDetection代码课

0. 环境检测和安装 # 安装 mmengine 和 mmcv 依赖 # 为了防止后续版本变更导致的代码无法运行,暂时锁死版本 pip install -U "openmim0.3.7" mim install "mmengine0.7.1" mim install "mmcv2.0.0"# Install mmdetection rm -rf mmd…

【SpringBoot】SpringBoot集成支付宝支付

文章目录 背景1、预期效果展示2. 开发流程2.1 沙盒调试2.1.1. 创建沙盒应用2.1.2. SpringBoot代码实现2.1.3. 前端代码实现 2.2 创建并上线APP 背景 在开始集成支付宝支付之前,我们需要准备一个支付宝商家账户,如果是个人开发者,可以通过注册…

硬件速攻-E18-D80NK红外光电传感器

介绍 E18-D80NK光电开关是一款常见的光电传感器,具有高性价比、安装方便等优点。其工作原理是利用发射管发射出的红外线照射目标物,当目标物接近开关时,被照射的红外线反射回接收器,接收器就会向微处理器发出信号,从而…

1.9C++不同数据类型转换

C不同数据类型转换 在 C中,不同类型之间的数据转换可以通过强制类型转换(类型转换运算符)来实现。 C 中强制类型转换有以下三种: 1、static_cast static_cast 可以用于基本数据类型之间的转换,也可以用于类层次结构…

从实现到原理,总结11种延迟任务的实现方式(下)

7 监听Redis过期key 在Redis中,有个发布订阅的机制 生产者在消息发送时需要到指定发送到哪个channel上,消费者订阅这个channel就能获取到消息。图中channel理解成MQ中的topic。 并且在Redis中,有很多默认的channel,只不过向这些…

小鱼深度产品测评之:阿里云云效代码管理 Codeup,一款数十万企业正在使用,全方位保护企业代码资产的实力产品,。

云效代码管理 Codeup 0、引言1、进入页面2、创建代码库3、资源文件页面4、分支→新建保护分支规则5、分支-基本设置5.1 基本信息 模块5.2 存储空间管理 6、分支→仓库备份6.1 点击 如何启用 按钮6.2 点击 前往企业设置查看 7、合并请求8、度量报表9、动态10、流水线11、总结 0、…

基于html+css的图展示129

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

24届秋招专场 · 数组如何用双指针解题呢?

你好,我是安然无虞。 文章目录 删除有序数组中的重复项删除排序链表中的重复元素移除元素移除零 大家好,近期主要更新数组相关的解题算法咯,感兴趣的老铁可以一起看过来啦。 今天更新使用双指针解决数组部分题型,注意哦&#xff…

支付宝小程序云亮相!向小程序生态开放全面云服务

前言: 小程序是一种轻量级应用程序,不需要安装即可直接在手机上使用。相较于传统的APP来讲,其无需下载安装,轻便快捷,快速启动,易于推广的良好特性为我们所青睐。 为此,支付宝小程序云&#xff…

DataX在有赞大数据平台的实践

文章目录 一、需求二、选型三、前期设计3.1 运行形态3.2 执行器设计3.3 开发策略 四、Datax-Web五、总结 大家好,我是脚丫先生 (o^^o) 在看技术文章的时候,发现有赞平台采用过Datax。想到指北数据中台,数据汇聚采用的是Datax-web二次开发&am…

chatgpt赋能python:Python的字符串索引操作技巧

Python的字符串索引操作技巧 Python是一个强大而灵活的编程语言,被广泛用于各种领域。在Python中,字符串是一个非常重要的数据类型,它可以包含文本、数字、符号和其他任何字符。在处理字符串时,索引操作是常见的操作之一。本文将…

计算机网络之网络层:数据平面

四.网络层:数据平面 4.1 网络层概述 网络层被分解为两个相互作用的部分,即数据平面和控制平面。 数据平面决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一,转发方式有: 传统的IP转发:转发基于…

【算法与数据结构】707、LeetCode设计链表

文章目录 一、题目二、设计链表三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、设计链表 思路分析:这里我将的成员函数放在类外实现了,这样链表类看起来更加简洁,方便大家…

jenkins用户权限管理

环境准备: 登录jenkins: http://192.168.9.190:8091/ admin asdwhl@0 一、用户权限插件安装 1、Dashboard > Manage Jenkins > Manage Plugins > Available(可选插件) 依次安装: Role-based Authorization Strategy Authorize Project

校园二手交易平台实训报告

目 录 一、设计背景 1. 需求分析 2. 课题研究的目的和意义 二、系统需求分析与开发环境 1. 系统功能需求 2. 系统界面需求 3. 开发环境 三、系统设计 四、系统测试 1. 脑模拟器测试 五、总结与展望 六、重要程序 1. LoginActivity 2. RegisterActiv…

51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036

51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036 Proteus仿真小实验: 51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036 功能: 硬件组成:AT89C51单片机 6位数码管DAC0832电压输出多个按键(设置、移动、加、…