java基础之object类、Date类、System类、StringBuilder类、包装类、枚举类
一、public String toString() :默认返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值
重写后:
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
二、public boolean equals(Object obj):默认地址比较
重写后:
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为相同
if (this == o) return true;
// 如果参数为空,或者类型信息不一样,则认为不同等同于 if(o instanceof PerSION)
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);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
三、Date类
1:将Date对象转换成String
public class Demo03DateFormatMethod {
public static void main(String[] args) {
Date date = new Date();
// 创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = df.format(date);
System.out.println(str); // 2008年1月23日
}
}
2:把String转换成Date对象
public class Demo04DateFormatMethod {
public static void main(String[] args) throws ParseException {
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
String str = "2018年12月11日";
Date date = df.parse(str);
System.out.println(date); // Tue Dec 11 00:00:00 CST 2018
}
}
四、System类
1:public static long currentTimeMillis() :返回以毫秒为单位的当前时间
例:
public class SystemTest1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end ‐ start));
}
}
五、StringBuilder类:可变字符序列。底层是一个数组
1、构造方法
a: public StringBuilder() :构造一个空的StringBuilder容器。
b: public StringBuilder(String str) :构造一个StringBuilder容器,并将字符串添加进去。
2、常用方法
a: public StringBuilder append(...) :添加任意类型数据的字符串形式,并返回当前对象自身。
b: public String toString() :将当前StringBuilder对象转换为String对象。
例子:
public class DataTest {
public static void main(String[] args) {
StringBuffer buffer1 = new StringBuffer();
StringBuffer buffer2 = buffer1.append("hello");
//对比一下
System.out.println(buffer1==buffer2); //true:是同一个对象
//将StringBuilder对象将会转换为不可变的String对象
String str = buffer1.toString();
System.out.println(str);
}
}
六、包装类:基本数据类型的数据,使用起来非常方便,但没有对应的方法来操作这些数据,所以我们可以使用一个类,把基本数据类型的数据包装起来,这类
叫包装类
1、装箱与拆箱
装箱:从基本类型转换为对应的包装类对象。
拆箱:从包装类对象转换为对应的基本类型
2、基本数值---->包装对象
Integer i = new Integer(4);//使用构造函数函数
Integer ii = Integer.valueOf(4);//使用包装类中的valueOf方法
包装对象---->基本数值
int num = i.intValue();
3、自动装箱与自动拆箱
例子:
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
4、基本类型与字符串之间的转换的方式
a、基本类型转换为String: 基本类型直接与””相连接即可;如:34+""
b、String转换成对应的基本类型 (除了Character类)
public static byte parseByte(String s) :将字符串参数转换为对应的byte基本类型。
public static short parseShort(String s) :将字符串参数转换为对应的short基本类型。
public static int parseInt(String s) :将字符串参数转换为对应的int基本类型。
public static long parseLong(String s) :将字符串参数转换为对应的long基本类型。
public static float parseFloat(String s) :将字符串参数转换为对应的float基本类型。
public static double parseDouble(String s) :将字符串参数转换为对应的double基本类型。
public static boolean parseBoolean(String s) :将字符串参数转换为对应的boolean基本类型。
例子:
public class Demo18WrapperParse {
public static void main(String[] args) {
int num = Integer.parseInt("100");
}
}
七、enum类名
格式:
enum 类名{
//枚举值
}
枚举要注意的细节:
1. 枚举类也是一个特殊的类。
2. 枚举值默认的修饰符是public static final。
3. 枚举值就是是枚举值所属的类的类型, 然后枚举值是指向了本类的对象的。
4. 枚举类的构造方法默认的修饰符是private的。
5. 枚举类可以定义自己的成员变量与成员函数。
6. 枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
7. 枚举类可以存在抽象 的方法,但是枚举值必须要实现抽象 的方法。
8. 枚举值必须要位置枚举类 的第一个语句。
例子:
enum MessageMeta{
//枚举值, 相当于public static final MessageMeta accountNotEnough = new MessageMeta("余额不足")
accountNotEnough("余额不足"),
sendError("发送失败"),
sendSuccess("发送成功");
private String msg; //成员变量
MessageMeta(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}
}
public class EnumTest {
public static void main(String[] args) {
String msg = MessageMeta.accountNotEnough.getMsg();
System.out.println(msg);
}
}