常用类
Object
所有类的父类
意味着:
1.所有类的对象都可以转换为Object类的对象
2.Object提供的方法是所有对象都有的方法
提供的方法:
getClass(): 获取类对象
hashCode(): 获取对象的哈希码值
如果不重写该方法,可以理解为该值就是对象在堆内存中的地址
toString(): 将对象转换为字符串
注意: 使用sout打印对象时,默认调用对象的toString方法
equals(): 比较是否相同
注意: Object提供的方法是比较对象的内存地址是否相同
重写步骤
作用: 判断对象的属性值是否相同
1.判断两个对象的内存地址是否相同
如果相同,那么两个对象是同一个对象,所有属性值也相同
2.判断传入的对象与调用equals方法的对象是否为同一个类的对象
如果是同一个类的对象
将传入的对象转换为该类对象
使用转换后的对象的属性与调用equals方法的对象的属性一一对比
如果属性值都相同,那么认为是相同的
3.返回不相同
finalize(): 对象被回收时,由系统调用
线程间通讯
notify()
notifyAll()
wait()
wait(timeout)
wait(timeout, nanos)
package demo01;
public class Person {
private String name;
private String sex;
private int age;
public Person() {
super();
}
public Person(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof Person) {
Person p = (Person)obj;
if(this.name.equals(p.name) && this.sex.equals(p.sex) && this.age == p.age) {
return true;
}
}
return false;
}
}
package demo01;
public class Test {
public static void main(String[] args) {
Person p1 = new Person("张三", "男", 18);
Person p2 = new Person("张三", "男", 18);
System.out.println(p1.equals(p2));
}
}
运行结果
字符串相关
不可变字符串: String
常用的方法:
charAt(index): 获取字符串指定位置的字符
length(): 获取字符串长度
indexOf(子字符串): 获取子字符串在字符串中出现的位置,如果没有返回-1
lastIndexOf(子字符串): 获取子字符串在字符串中最后一次出现的位置,如果没有返回-1
contains(子字符串): 判断子字符串是否存在
equals(字符串): 判断字符串内容是否相同,区分大小写
equalsIgnoreCase(字符串): 判断字符串内容是否相同,不区分大小写
toUpperCase(): 将字符串转换为大写
toLowerCase(): 将字符串转换为小写
endsWith(子字符串): 判断字符串是否以子字符串结束
startsWith(子字符串): 判断字符串是否以子字符串开始
split(子字符串): 将字符串切割
substring(开始位置,结束位置): 截取
注意: 包含开始位置,不包含结束位置
replace(oldStr, newStr): 替换
isEmpty(): 判断字符串是否为空字符串
trim(): 删除字符串前后空白
+: 字符串连接符
可变字符串: StringBuffer, StringBuilder
StringBuffer:
线程安全的
JDK1.0
效率低
StringBuilder:
线程不安全的
JDK1.5
效率高
方法:
append(被添加的字符串): 添加到尾部
delete(start, end): 删除指定位置的字符串
insert(index, 添加的字符串): 指定位置添加字符串
注意
不建议使用不可变字符串(String)对其进行大量的修改,如果非要对其进行大量修改,请使用可变字符串
package demo02;
public class Test01 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
// StringBuilder sb = new StringBuilder();
System.out.println("添加前: " + sb);
sb.append("123");
System.out.println("添加后: " + sb);
sb.delete(0, 2);
System.out.println("删除后: " + sb);
sb.insert(1, "你好");
System.out.println("插入后: " + sb);
}
}
运行结果
package demo02;
public class Test02 {
public static void main(String[] args) {
//将不可变字符串转换为可变字符串
String str = "java";
// StringBuffer sb = new StringBuffer(str);
StringBuilder sb = new StringBuilder(str);
System.out.println(sb);
//将可变字符串转换为不可变字符串
String strs = sb.toString();
System.out.println(strs);
}
}
运行结果
BigDecimal
作用: 精准计算
注意: 创建该对象时,传入字符串
常用方法:
subtract: 减
add: 加
multiply: 乘
divide: 除
xxxValue: 将BigDecimal对象转换成指定的基本数据类型的值
如: doubleValue()
package demo02;
import java.math.BigDecimal;
public class Test03 {
public static void main(String[] args) {
// double money01 = 0.1;
// double money02 = 0.01;
// System.out.println(money01 - money02); //0.09000000000000001
BigDecimal money01 = new BigDecimal(0.1 + "");
BigDecimal money02 = new BigDecimal(0.01 + "");
// BigDecimal money03 = money01.subtract(money02); //0.09
// BigDecimal money03 = money01.add(money02); //0.11
// BigDecimal money03 = money01.multiply(money02); //0.001
BigDecimal money03 = money01.divide(money02);
System.out.println(money03);
double d = money03.doubleValue();
System.out.println(d);
}
}
运行结果
时间相关
Date
概念: 时间
构造函数:
Date(): 获取当前系统时间
Date(long time): 获取距离1970年1月1日00:00:00(格林威治时间)time毫秒的时间
方法:
getTime(): 获取该对象对应的时间距离1970年1月1日00:00:00的时间差
d1.after(Date d2): 判断d1是否在d2之后
d1.before(Date d2): 判断d1是否在d2之前
package demo02;
import java.util.Date;
public class Test04 {
public static void main(String[] args) {
//获取当前系统时间
Date date = new Date();
System.out.println(date);
//获取距离1970年1月1日00:00:00(格林威治时间)1000毫秒的时间
Date date2 = new Date(1000L);
System.out.println(date2);
//获取当前时间距离1970年1月1日00:00:00(格林威治时间)的毫秒值
long time = date.getTime();
System.out.println(time);
Date date3 = new Date(time - 1000 * 60);
//判断date对应的时间是不是在date3之后
boolean b = date.after(date3);
System.out.println(b);
//判断date对应的时间是不是在date3之前
b = date.before(date3);
System.out.println(b);
}
}
运行结果
Calendar
概念: 日历
常用方法:
static getInstance(): 获取Calendar的对象
set(int field, int value): 修改
field: 表示要修改什么
Calendar.YEAR: 年
Calendar.MONTH: 月
Calendar.DAY_OF_MONTH: 日
Calendar.HOUR_OF_DAY: 小时
Calendar.MINUTE: 分钟
Calendar.SECOND: 秒
Calendar.MILLISECOND: 毫秒
get(int field): 获取
getTime(): 将Calendar对象转换为Date对象
package demo02;
import java.util.Calendar;
import java.util.Date;
public class Test05 {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
calendar.set(Calendar.YEAR, 2000); //修改年
calendar.set(Calendar.MONTH, 3); //修改月
calendar.set(Calendar.DAY_OF_MONTH, 1); //修改日
calendar.set(Calendar.HOUR_OF_DAY, 13); //修改小时
calendar.set(Calendar.MINUTE, 14); //修改分钟
calendar.set(Calendar.SECOND, 52); //修改秒
calendar.set(Calendar.MILLISECOND, 520); //修改毫秒
System.out.println(calendar);
int i = calendar.get(Calendar.MILLISECOND); //获取当前时间的毫秒值
System.out.println(i);
//将Calendar对象转换为Date对象
Date date = calendar.getTime();
System.out.println(date);
}
}
运行结果
SimpleDateFormat
概念: 时间日期格式化
作用:
将Date对象转换为指定格式的字符串
或
将指定格式的字符串转换为Date对象
注意:
y: 年
M: 月
d: 日
h: 12小时制
H: 24小时制
m: 分钟
s: 秒
S: 毫秒
构造函数:
SimpleDateFormat(String pattern)
pattern: 时间格式
如: yyyy/MM/dd HH:mm:ss:SSS
常用的方法:
format(Date date): 将Date对象转换为指定格式的字符串
parse(String str): 将指定格式的字符串转换为Date对象
package demo02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test06 {
public static void main(String[] args) throws ParseException {
Date date = new Date();
System.out.println(date);
//2022年10月10日 20:26:12
/**
* y: 年
* M: 月
* d: 日
* H: 小时 (24小时制)
* h: 小时 (12小时制)
* m: 分钟
* s: 秒
* S: 毫秒
*/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
//将date对象转换为特定格式的字符串
String str = sdf.format(date);
System.out.println(str);
String time = "2000年1月1日 8:00:00";
//将特定格式的字符串转换为Date对象
Date date2 = sdf.parse(time);
System.out.println(date2);
}
}
运行结果