常用接口2
1.Object类
java.lang.Object
类是Java语言的根类,是所有类的父类(超类),默认被未指定父类的类所继承。类中的方法可以被所有的子类使用
1.1.toString方法
public String toString
:返回指定对象的字符串显示,
toString方法返回的字符串内容为对象的类型+@+内存地址值
通过system.out.println(对象)
直接打印对象名,默认调用toString
方法输出对象类型及其内存地址。
在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此需要对Object类的toString
方法进行覆盖重写。
1.2.equals方法
public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。
调用equals方法指定参数为另一个对象,判断与调用equals方法的对象是否相同。
- Object.equals(s1,s2)
对s1与s2两个对象进行比较,Object类中的equals方法容忍空指针,即允许一个对象为空进行比较。
默认地址比较
Object类中的equals方法默认进行 == 运算符的对象地址比较,除非是同一个对象,内存地址相同,否则其结果必为false
对象内容比较
如果是希望对对象的部分内容进行比较,即指定的成员变量;则可以对equals方法进行覆盖重写。
例:
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为相同
if (this == o)
return true;
// 如果参数为空,或者类型信息不一样,则认为不同
if (o == null || getClass() != o.getClass())
return false;
// 转换为当前类型
Person person = (Person) o;
// 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
return age == person.age && Objects.equals(name, person.name);
2.日期时间类
2.1.Date类
无参构造
- public Date():获取当前系统的日期与时间(精确到毫秒)
有参构造
- public Date(long date):传递毫秒值,将其转换为Date日期
getTime
- public long getTime():将日期对象转换为对应的时间毫秒值
2.2.DateFormat类
java.text.DateFormat
是一个用于日期/时间格式化的抽象类,主要通过它的子类java.text.SimpleDateFormat
实现抽象方法完成日期:Date对象与文本:String对象之间相互转换。
-
创建SimpleDateFormat对象:
DateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
DataFormat类常用方法
ft.format(Date date)
:将Date对象格式化为字符串ft.parse(String source)
:将字符串解析为Date对象
2.3.Calendar类
java.util.Clendar
是在Date类之后出现的抽象日历类,替换掉了许多Date类的方法,该类中所有可能使用的时间信息(YEAR、MONTH、DAY-OF-MONTH、HOUR等)均被封装为静态成员变量,方便获取各个时间属性。
-
Calendar抽象类无法直接创建对象使用,通过Calendar的静态方法getInstance()返回Calendar的子类对象
多态:
Calendar c = Calendar.getInstance();
使用默认时区与语言环境获得一个日历对象
-
常用方法
c.get(Calendar.YEAR)
:参数为指定时间字段,返回字段对应的具体时间c.set(Calendar.YEAR,1999)
:参数为指定时间字段+具体的字段值,从而设置对应的时间字段值c.set(1999,9,9)
:方法的重载,同时设置年月日c.add(Calendar.YEAR,2)
:指定时间字段+更改的值,正数为增加,负数为减少c.getTime()
:返回一个当前Calendar时间的Date对象
3.System类
java.lang.System
类提供了大量的静态方法,可用于获取与系统相关的信息或系统级操作
常用方法
-
currentTimeMillis方法:获取自1970年开始到当前系统时间的毫秒值
System.out.println(System.currentTimeMillis());
-
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
方法:将数组中的数据拷贝到另一个数组参数序号 参数名称 参数类型 参数含义 1 src Object 源数组 2 srcPos int 源数组索引起始位置 3 dest Object 目标数组 4 destPos int 目标数组索引起始位置 5 length int 复制元素个数 int[] src = new int[]{1,2,3,4,5}; int[] dest = new int[]{6,7,8,9,10}; System.arraycopy( src, 0, dest, 0, 3); /*代码运行后:两个数组中的元素发生了变化 src数组元素[1,2,3,4,5] dest数组元素[1,2,3,9,10] */
4.StringBuilder类
在String类中描述字符串是常量,字符串的底层是一个被final修饰的数组,在创建后不能被修改,故若对字符串进行拼接操作,每次拼接均会构建一个新的String对象,既耗时又浪费内存空间,为解决该问题需使用java.lang.StringBuilder
类
-
StringBuilder,又称可变字符序列,是一个类似于String的字符缓冲区,通过内部数组存放字符串内容,自动维护数组的扩容
-
构造方法:
-
空参构造:
StringBuilder bu1 = new StringBuilder
构造一个不带任何字符的字符串生成器,初始容量为16个字符
-
有参构造:
StringBuilder bu2 = new StringBuilder(String str)
构造一个字符串生成器,并初始化为指定的字符串内容
-
-
成员方法
-
append():添加任意类型的字符串数据,并返回当前对象本身,若使用另一个StringBuilder对象接受append方法的返回值,即将原StringBuilder对象的地址值赋给新创建的StringBuilder对象,二者完全相同,故使用append方法无需接受返回值
StringBuilder sb1 = new StringBuilder sb1.append("abc"); sb1.append(1); sb1.append(true); System.out.println(sb1); //输出结果w为abc1true,StringBuilder对象自动拼接扩充
-
toString():StringBuilder对象转换为String对象方法
String str1 = "Hello"; StringBuilder sb1 = StringBuilder(str);//String转换为StringBuilder对象 sb1.append("World"); String str2 = sb1.toString(); System.out.println(str2); //输出结果为HelloWorld
-
5.包装类
基本数据类型没有对应的方法来操作这些基本类型的数据,为解决此问题,可以使用一个类,把基本类型的数据封装起来,在类中定义一些方法,使用这些方法来操作这些基本类型的数据,这种类被称为包装类
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
转换
-
装箱:从基本类型转换为对应的包装类对象
- 构造方法:
Integer(int value);
构造一个表示指定的int值的Integer对象Integer(String s);
构造一个表示String参数指定的int值的Integer对象,若传递的String字符串指向的不是Int类型的数据则会报错。Integer("110")
- 静态方法:
statifc Integer valueof(int i);
:返回一个表示指定int值的Integer对象static Integer valueof(String s);
:返回保存指定String代表Int值的Integer对象
- 构造方法:
-
拆箱:从包装类对象转换为对应的基本类型
- 成员方法:
int Integer();
以int类型返回Integer对象的值
- 成员方法:
-
自动装箱
Integer in = 1;
//把int类型的整数赋值给包装类 -
自动拆箱
in = in+2;
😕/in是包装类,无法直接参与运算,可以自动转换为基本数据类型再进行计算,然后再次自动装箱转换为Integer对象
基本类型与字符串的相互转换
1.基本类型转字符串
-
基本类型的值+" ",添加空字符串自动转换为String类型
String s = 1+" ";
-
包装类的静态方法:toString(参数),返回一个指定包装类对象的String对象
String s = Integer.toString(1);
-
String类的valueof()方法,取得基本数据类型的String对象
String s = String.valueof(1);
2.字符串转基本类型
-
包装类的静态方法:
static xxx parsexxx(String s)
,返回一个指定字符串的基本数据类型对象int i = Integer.parseInt("1");