少年不懂孔乙己,读懂已是书中人

这篇具有很好参考价值的文章主要介绍了少年不懂孔乙己,读懂已是书中人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


❗前言

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

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

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

少年不懂孔乙己,读懂已是书中人


在写实体类的时候整数、小数尽量使用包装类型,因为 int 类型没有空值,默认为0,包装类有空值

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

原始数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

除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中常用的工具类——字符串类文章来源地址https://www.toymoban.com/news/detail-443644.html

到了这里,关于少年不懂孔乙己,读懂已是书中人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重生之我是孔乙己——查找数组缺失元素的几种方法

      💌 博客内容:查找缺失元素 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSDN,我总结知识和写笔记的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 目录 题目  排序法  异或法  最天

    2023年04月10日
    浏览(29)
  • 学历不仅是敲门砖,也是我下不来的高台,更是孔乙己脱不下的长衫

    鲁迅《孔乙己》是一篇具有深刻思想和感人情感的短篇小说,通过酒肆里的故事反映社会的残酷和人性的悲哀; 故事中的孔乙己是一个身世不明、生活贫困的酒鬼,他虽然饱受百般屈辱,但却有着坚定的自尊和对人性的信仰;他并不在乎别人对他的嘲讽和侮辱,而是坚持自己

    2024年02月02日
    浏览(23)
  • wlan autoconfig服务无法启动其类型已是自动但却是停止的

    无线网络图标显示红叉或无线图标正常但是无法上网,在服务中找到找到 WLAN AutoConfig,启动类型已经是自动,但是该服务却是停止的,单击启动,弹出 Windows 无法启动WLAN AutoConfig 服务,错误代码有多种。 原因分析:这种问题的大部分是因为系统优化软件优化系统之后导致的。

    2024年02月06日
    浏览(82)
  • Git之GitFlow工作流 | Gitflow Workflow(万字整理,已是最详)

    目录 🩸 写在前面 一、 GitFlow 介绍 1.1 什么是 GitFlow 1.2 GitFlow 常用分支说明 1.3 Git flow中的分支介绍 1.3.1 主要分支(Master) 1.3.2 开发分支(Develop) 1.3.3 功能分支(Feature) 1.3.4 预发分支(Release) 1.3.5 热修复分支(Hotfix) 1.4 GitFlow 工作流程 二、GitFlow 实践 2.1 创建 develop 分支

    2024年02月17日
    浏览(32)
  • 安装.net framework 4.0提示已是操作系统一部分但vs2010无法加载指定4.0版本的项目

     当vs2010加载项目出现这个情况时,因为win10操作系统已经有了.NET Framework 4.0,我们进入这个下载网站下载的安装包无法安装,有两个解决方法: 1.运行vs2010安装包选择修复 2.安装vs2019,在vs安装器中选择.NET Framework 4.0

    2024年01月16日
    浏览(42)
  • 那个酷爱写代码的少年后来怎么样了——走近华为云“瑶光少年”

    导读: 为什么计算机学霸都喜欢写代码? 2019年8月,25岁的童昊入职华为,当时他根本没有想到,两年后自己参与研发的 瑶光资源二次调度通用求解器 ,每年可以为华为云节省数千万元,这也成为他参加工作两年多来最有成就感的事。 不久前,笔者电话采访了童昊,作为华

    2024年02月02日
    浏览(28)
  • 解决新版Visual Studio安装.NET Framework 4.0 或者4.5报错问题(NET Framework 4 已是此操作系统的一部分。不需要安装,已在此计算机上安装相同或更高版本 )

    当友友们下载了.NET Framework 4.0 或者.NET Framework 4.5安装包之后发现已经安装了更高的版本,无法再继续按照旧的版本,并提示如下错误 今天教大家一个简单的方法,解决这个问题: 操作如下: 1.下载nuget版本的资源包 microsoft.netframework.referenceassemblies.net40.1.0.3.nupkg,链接放到下

    2024年03月25日
    浏览(42)
  • vivado里那些看不懂的原语

    遇到一段代码 是Intel风格的,可以用xilinx的BUFG进行替代 // BUFG 分配时钟专用资源,指定信号走专门的时钟布线 修改为 布线时候报错 具体原因未知,只能先把功能打通,所以把相关的部分注释掉。 下面是收集的一些资料,来源都做了标注。 inout类型的接口,主动添加IOBUF R

    2023年04月08日
    浏览(67)
  • kotlin协程详解,不可能学不懂

    首先还是先抛出一系列的问题,大家搞清楚这些问题后学习 Kotlin 协程可能会轻松一点: 1、什么是并发?什么是并行? 2、什么是多任务?什么是协作式多任务?什么是抢占式多任务? 3、什么是同步?什么是异步? 4、什么是非阻塞式?什么是阻塞式? 5、什么是挂起? 6、

    2024年02月05日
    浏览(34)
  • 人工智能中一些看不懂的代码

    def forward(self, input: Tensor, hx: Optional[Tensor] = None) - Tuple[Tensor, Tensor]: # noqa: F811         pass forward ,它的第一个参数 input 是一个 Tensor 类型的变量,第二个参数 hx 是一个可选的 Tensor 类型变量,这里使用了 Python 3.7 引入的类型注解语法。 函数返回值类型是一个由两个 Tensor 类

    2023年04月21日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包