Object
之前在谈到继承的时候说过,如果一个类没有明确的继承关系,那么这个类将默认继承于Object类,所以Object是所有类的父类,因此Object中定义的方法都会被各个类继承。
方法:
判断两个对象的内存地址是否相同
boolean equals(Object obj);
获取对象对应的哈希码值(可以理解为是对象在堆内存中的地址)
int hashCode();
将对象转换为字符串,OBject默认是使用对象所属的包名.类名@对象的哈希码值的十六进制字符串
String toString();
对象被系统回收时调用的方法,由系统调用
void finalize();
字符串相关
字符串可以分为可变字符串和不可变字符串。常用的String就是不可变字符串,可变字符串有StringBuffer和StringBuilder;
不可变字符串String
String每次生成的字符串都会存放在常量池中,每次产生新的字符串,并不会销毁或者回收之前字符串所占用的内存,因此在大量字符串操作的时候,使用String就会导致内存消耗过大,整个程序运行卡顿的问题。
如:String str = "hello";这串代码执行结束之后就会在常量池中创建一个”hello“,现在在这个字符串的基础上进行操作,str = str + “world”;现在的str就是字符串“helloworld”,那现在在常量池中就会产生一个world的字符串和helloworld的字符串,随着对字符串的操作,大量产生的字符串就会急剧的消耗内存。
常用方法
构造函数
String(bytes[] bytes,String charsetName);
将byte数组转换成字符串,并指定编码格式;
String(bytes[] bytes,int begin,int len,String charsetName);
将byte数组中指定位置开始的指定数量的元素转换成字符串,并使用指定的编码格式。
String(byte[] bytes,int begin,int len);
将byte数组中指定位置开始的指定数量的元素转换成字符串。
方法
获取指定位置的单个字符
char charAt(int index);
查询字符串长度
int length();
判断字符串内容是否相同
1.通过字典顺序判断字符串的内容是否相同,如果相同返回0,如果不相同,返回非0的数值。
int compareTo(String anotherString);
2.直接通过字符串的内容进行判断,如果相同,返回true,不相同返回false
boolean equals(Object anObject);
3.忽略字符串内容的大小写判断其内容是否相同,如果相同返回true,不相同返回false;
boolean equalsIgnoreCase(String anotherString);
判断字符串是否包含指定字符串
boolean contains(String str);
判断字符串A在字符串B中第一次出现的位置
int indexOf(String str);
判断字符串A在字符串B中最后一次出现的位置
int lastIndexOf(String str);
判断字符串是否以指定的字符串开始
boolean startsWith(String str);
判断字符串是否以指定的字符串结束
boolean endsWith(String str);
将字符串转换为大写
String toUpperCase();
将字符串转换为小写
String toLowerCase();
判读字符串是否为空字符串
boolean isEmpty();
忽略前后空白,并返回去掉前后空白的字符串,如果字符串中间有空格,此函数不予处理。
String trim();
将字符串转换为字节数组
byte[] getBytes();
将字符串转换为字符数组
char[] toCharArray();
切割
String[] split(String s);
替换
String replace(String oldStr,String newStr);
如果字符串中存在多个oldStr,则将这些oldStr全部替换为新内容。
String replaceFirst(String oldStr,String newStr);
如果字符串中存在多个oldStr,则将首次出现的oldStr替换为新内容。
截取
String subString(int start);
将字符串中以指定位置开始截取,直至字符串的最后一位元素,并返回截取后的子字符串。
String subString(int begin,int end);
将子字符串中指定区间内的字符串截取出来,并返回。左闭右开。
BigDecimal
主要作用是用于解决计算机运算精度不足的问题。
使用方法:
BigDecimal big1 = new BigDecimal(0.1+"");
BigDecimal big2 = new BigDecimal(0.01+"");
big1 = big1.substract(big2);
这样得到的结果就是精确结果。
注意:BigDecimal有一个bug,当创建BigDecimal对象时,传入的参数是double类型,那么在计算之后其精度依旧不足。如果传入字符串就不会出现这种问题,所以在创建BigDecimal时,可以使用字符串拼接符将double类型的数据和空字符串链接起来,已解决这个问题。
时间相关
Date
Date有两个构造函数,无参构造用于获取当前时间戳,并转换为我们可以看到的形式展现出了。
常用方法
long getTime();
获取当前时间戳。
int compareTo(Date date);
返回两个时间转换成时间戳后的差值,如果是0,则表示这两个时间是同一时间。
boolean after(Date date);
aDate.after(bDate);
判断a日期是否在b日期之后,如果a在后,则返回true,反之返回false。
boolean before(Date date);
aDate.before(bDate);
判断a日期是否在b日期之后,如果a在后,则返回true,反之返回false。
Calendar
创建Calendar对象:Calendar calendar = Calendar.getInstance();
因为Canlendar是一个抽象类,所以不能直接创建对象。
常用方法:
calendar.get(Calendar.YEAR);
//获取当前年份。
calendar.get(Calendar.MONTH);
//获取当前月份。
calendar.get(Calendar.DAY_OF_MONTH);
//获取当前时间是这个月的第几天。
calendar.get(Calendar.DAY_OF_WEEK);
//获取当前时间是这周的第几天。
calendar.get(Calendar.HOUR_OF_DAY);
//获取当前时间今天的第几小时。
calendar.get(Calendar.MINUTE);
获取当前分钟
calendar.get(Calendar.SECOND);
获取当前秒
SimpleDateFormat
创建SimpleDateFormat需要制定字符串的格式
y:年
M:月
d:日
H:24小时制的时
h:12小时制的时
m:分
s:秒
S:毫秒
如:yyyy--MM--dd HH:mm:ss
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
将特殊格式的str转换为Date对象
String str = "2023-1-13 14:00:00";
Date date = format.parse(str);
将Date对象转换为特殊格式的字符串
String str1 = format.format(date);