有时间就该多学,我还年轻,吃苦趁现在!
文章目录
- ❗前言
- 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 == 3
,b == 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类的一些重要方法及解释:
- equals(Object obj):判断当前对象是否与另一对象相等;
- hashCode():返回当前对象的哈希码值;
- toString():返回当前对象的字符串表示形式;
- getClass():返回当前对象所属的类的对象;
- finalize():在垃圾回收器清理对象之前调用,用于释放系统资源或执行特定操作;
- notify():唤醒在当前对象的监视器中等待的单个线程;
- notifyAll():唤醒在当前对象的监视器中等待的所有线程;
- wait():当前线程等待,直到另一个线程调用notify()或notifyAll()方法;
- wait(long timeout):当前线程等待指定时间,直到另一个线程调用notify()或notifyAll()方法;
- wait(long timeout, int nanos):当前线程等待指定时间加上指定的纳秒数,直到另一个线程调用notify()或notifyAll()方法。
Object类中的这些方法对于所有Java类都是可用的。其中equals方法非常重要,因为它用于判断对象的相等性,可以在自定义类中重写该方法以实现自定义对象等价性的判断。
总结
- equals 方法
返回一个布尔数据,代表比较两个引用类型变量是否相等
equals比较的是引用变量存储的地址
- hashCode方法
返回一个整数,代表的是当前对象在内存中的地址
- toString方法
无论原来什么类型都返回一个字符串,
默认格式是全类名@hashCode 十六进制表示
一般来讲子类需要重写toString
2️⃣包装类
提示:这里可以添加本文要记录的大概内容:
Java中的包装类是指将基本数据类型封装成一个对象的类。
它们提供了许多方法和属性,使得基本数据类型能够像对象一样进行操作。
包装类可以用来实现将基本数据类型作为对象来操作和传递的需求。
它们可以用于将基本类型转换成字符串、获取基本类型的最大值和最小值、进行基本类型的算术运算等等。
基本数据类型及其包装类型
原始数据类型 | 包装类 |
---|---|
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之后,引用了自动装箱和自动拆箱
- 自动装箱
当我们将一个基本类型的值赋给对应的包装类对象时,编译器会自动将其转换为包装类对象,这个过程称为自动装箱。
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);
}
- 自动拆箱
当我们需要将一个包装类对象转换为基本类型值时,编译器会自动将其转换为基本类型值,这个过程称为自动拆箱。
public static void main(String[] args) {
Double b = new Double(3.14);
double s = b;
System.out.println(s);
}
在使用自动拆箱时需要避免出现空指针异常。
字符串类型转换成基本类型
在web开发中用的较多
在网络中传出的数据只能是字符串类型
在java中就需要将字符串类型转换成需要的基本类型
将字符串类型转换为基本类型可以使用相应类型的parseXXX() 方法,其中XXX表示基本类型,例如:
- 将字符串类型转换为int类型:
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
- 将字符串类型转换为double类型:
String str = "3.14";
double d = Double.parseDouble(str);
System.out.println(d);
- 将字符串类型转换为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
类的一些基本用法:
- 创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
其中,参数"yyyy-MM-dd"表示日期格式
- 将日期对象格式化为字符串
调用format方法,日期转字符串
Date date = new Date();
String strDate = sdf.format(date);
System.out.println(data);
其中,date是一个日期对象,sdf是一个SimpleDateFormat对象,format(date)方法将date对象按照sdf中定义的格式转换为一个字符串strDate。
- 将字符串解析为日期对象
调用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类的常用方法如下:
-
getTime()
方法:返回从1970年1月1日00:00:00 GMT开始计算的毫秒数。 -
after(Date when)
方法:判断当前日期是否在给定日期之后。 -
before(Date when)
方法:判断当前日期是否在给定日期之前。 -
compareTo(Date anotherDate)
方法:比较当前日期和给定日期的大小。 -
equals(Object obj)
方法:判断当前日期是否等于给定日期。 -
toString()
方法:将当前日期转换为字符串表示形式。 -
toLocaleString()
方法:将当前日期转换为本地字符串表示形式。 -
getTimezoneOffset()
方法:返回当前日期与UTC标准时间之间的时间差,以分钟为单位。 -
setTime(long time)
方法:设置当前日期的毫秒数。 -
clone()
方法:创建并返回当前日期的副本。 -
getDay()
方法:返回当前日期是星期几,其中0表示星期日,1表示星期一,以此类推。 -
getMonth()
方法:返回当前日期的月份,其中0表示一月,1表示二月,以此类推。 -
getYear()
方法:返回当前日期的年份,其中0表示1900年,1表示1901年,以此类推。 -
setDate(int date)
方法:设置当前日期的日期部分。 -
setMonth(int month)
方法:设置当前日期的月份部分。 -
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中常用的工具类——字符串类