JavaSE: API - 应用程序接口, 常用类, 方法

一.Object类, 所有类的父类
1.Class getClass(): 通过对象的该方法,可以获得对象对应的类的字节码对象
“haha”.getClass() -> String的字节码对象
“hi”.getClass() -> String的字节码对象

public class GetClassDemo {
    public static void main(String[] args) {
        Class c1 = "haha".getClass();
        Class c2 = "hi".getClass();
        // 同种类型的对象, 对应的字节码对象都是同一个
        System.out.println(c1 == c2);
    }
}

2.Object clone(): 克隆, 复制
复制一份全新的, 属性内容一致的对象, 深克隆
复制的是引用 -> 浅克隆
调用方法的对象, 需要类实现Cloneable接口

public class ZiClone implements Cloneable {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class CloneDemo {
    public static void main(String[] args) throws CloneNotSupportedException {
        ZiClone zi = new ZiClone();
        zi.setName("lucy");
        ZiClone clone = (ZiClone)zi.clone(); // 默认的clone方法, 是复制一份全新的, 属性内容一致的对象 -> 深克隆
        ZiClone clone2 = zi; // 引用的赋值 -> 浅克隆
        System.out.println(clone.getName());
        System.out.println(zi == clone);
    }
}
  1. void finalize()
    GC: 垃圾回收机制, 定时清理内存中
    栈:方法结束, 方法栈直接释放
    堆:无效对象, 等待gc回收
    手动调用: System.gc()
    引用类型对象变为空,若不回收其在堆中的地址内容,叫做内存泄漏
public class FinalizeDemo {
    public static void main(String[] args) {
        ZiFinalize zi = new ZiFinalize();
        zi = null;

        System.gc(); // 手动调用垃圾回收方法
        // new ZiFinalize()对象被回收, 自动调用finalize方法
    }
}

4.String toString(): 将对象变成字符串格式
直接打印对象时, 自动就会调用对象的toString方法
System.out.println(zi.toString()); // 简化写法
System.out.println(zi); // 简化写法
Object中默认toString的实现方式:
getClass().getName() + “@” + Integer.toHexString(hashCode());
自定义打印格式: 重写toString方法

public class Tostring {
    int age=18;
    String name="The shy";
    @Override
    public String toString() {//重写
        return name+","+age;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

public class Text {
    public static void main(String[] args) {
        Tostring k=new Tostring();
        System.out.println(k.toString());//toString重写后打印格式
        //没重写默认为 getClass().getName() + '@' + Integer.toHexString(hashCode())
        //类名+对象名+@+地址
    }
}

5.boolean equals(Object o)
Object中默认equals的实现方式:
return (this == obj); – 比较对象的地址
所以当我们想要比较两个相同类型对象的属性值时, 需要重写equals

public class Equals {
    String name;
    int age;
    Equals(String name,int age){
        this.name=name;
        this.age=age;
    }
    @Override
    public boolean equals(Object o) {//equals重写
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Equals equals = (Equals) o;
        return age == equals.age &&
                Objects.equals(name, equals.name);//会自动判断nanme是不是空值
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

public class Text {
    public static void main(String[] args) {
        Equals m=new Equals("张益达",18);
        Equals n=new Equals("张益达",18);
        boolean q=m.equals(n);//equals重写了
        System.out.println(q);

        // Objects.equals(,)会先自动判断空值,再调用对象的equals方法比较m.equals(n);
        boolean q2= Objects.equals(m,n);
        System.out.println(q2);
    }
}

二。 Date
1.构造方法:
new Date()
new Date(long time)
常用API:
void setTime(long time) -> 将date设置为对应毫秒值表示的时间
long getTime() -> 获得date对应的毫秒值
Date中的 toString() 重写过了

public class Date1 {
    public static void main(String[] args) {
        //空参构造方法->当前系统时间
        Date date=new Date();
        System.out.println(date);
        //参数是long类型的有参构造方法
        Date date1=new Date(0l+30l*24*60*60*1000);//java元年时间的后一个月
        System.out.println(date1);
        //时间的简单计算
        long time=date.getTime();//getTime获得时间的类型是long毫秒
        time+=30l*24*60*60*1000;
        date.setTime(time);
        System.out.println(date);
        //比较date2是否在date时间之后
        Date date2=new Date(0l);
        boolean b=date.after(date2);
        System.out.println(b);
        //获得当前系统时间
        System.currentTimeMillis();

    }
}

2.Calendar:
Calendar使用方法及Calendar\Date\Long之间的转换

public class Calendar1 {
    public static void main(String[] args) {
        //生成万年历
        Calendar cal=Calendar.getInstance();
        System.out.println(cal);
        //获得对应月份,月份从0开始
        int month=cal.get(Calendar.MONTH);
        System.out.println("month:"+month);
        //获得对应年份
        int year=cal.get(Calendar.YEAR);
        System.out.println("year:"+year);
        //DAY_OF_MONTH,获得日
        int day=cal.get(Calendar.DAY_OF_MONTH);
        System.out.println("day:"+day);
        //HOUR_OF_DAY,获得当天小时
        int hour=cal.get(Calendar.HOUR_OF_DAY);
        System.out.println("hour"+hour);
        //MINUTE,获得分钟
        int minute=cal.get(Calendar.MINUTE);
        System.out.println("minute:"+minute);
        //DAY_OF_WEEK,获得周几
        int day_week=cal.get(Calendar.DAY_OF_WEEK);
        System.out.println("week:"+day_week);
        //设置万年历时间
        cal.set(Calendar.MONTH,Calendar.AUGUST);//设置月
        cal.set(Calendar.DAY_OF_MONTH,13);//设置日
        System.out.println("月:"+cal.get(Calendar.MONTH)+"\t日:"+cal.get(Calendar.DAY_OF_MONTH));

        //入职十周年的当月的第三周的周五
        Calendar cal1=Calendar.getInstance();
        System.out.println(cal1);
        System.out.println("入职时间,年月星期和天:"+cal1.get(Calendar.YEAR)+cal1.get(Calendar.MONTH)+cal1.get(Calendar.WEEK_OF_MONTH)+cal1.get(Calendar.DAY_OF_WEEK));
        cal1.add(Calendar.YEAR,10);//add加;
        cal1.set(Calendar.WEEK_OF_MONTH,3);
        cal1.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);

        //Calendar转Date
        Date date=cal1.getTime();
        System.out.println(date);
        //Date转Calender
        Date date2=new Date(0l);
        cal1.setTime(date2);
        System.out.println(cal1);
        //date转long
        long time=date.getTime();
        System.out.println("********"+time);
        //long转date
         date2.setTime(time);
        System.out.println(date2);
    }
}

3.DateFormat

public class DateFormat {
    public static void main(String[] args) throws ParseException {
        Date date=new Date();
        //自定义格式yyy-MM-dd HH:mm:ss E
        SimpleDateFormat df=new
                SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
        //Date转String
        String str=df.format(date);
        System.out.println(str);

        //通过parse把String转Date
        String s="19980531";
        SimpleDateFormat df1=new
                SimpleDateFormat("yyyyMMdd");
        Date date1=df1.parse(s);
        System.out.println(date1);//打印Date模式
        System.out.println(df.format(date1));//打印自定义df模式
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值