java基础-005

常用API

  • Date类
  • DateFormat类
  • Calendar类
  • System类
  • StringBuilder类
  • Object类

Date类

简述:
java.util.Date;表示日期和时间的类
类Date表示特定的瞬间,精确到毫秒
时间原点:1970年1月1日 00:00:00
把毫秒转换为日期:1天 = 86400000毫秒
中国属于东八区:1970年1月1日 08:00:00

构造方法

  • public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
  • public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。

常用方法

  • public long getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public class Demo04Date {
    public static void main(String[] args) {
 //         System.out.println(System.currentTimeMillis());//获取当前系统时间经历了多少毫秒
        Date date = new Date();
        System.out.println(date);
        Date date1 = new Date(0L);
        System.out.println(date1);
        System.out.println(new Date().getTime());//相当于System.currentTimeMillis()

    }
}

DateFormat类

简述: java.text.DataFormat:是日期/时间格式化子类的抽象类
作用:
格式化(日期 -> 文本)、解析(文本-> 日期)和标准化

注意事项: DateFormat是一个抽象类,不能直接创建对象,可以使用DateFormate的子类

构造方法

由于DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat

  • SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。

常用方法

public final String format(Date date):将一个 Date 格式化为日期/时间字符串。
使用步骤:

  1. 创建SimpleDateFormat对象,构造方法中传递指定的模式
  2. 调用SimpleDateFormat对象中的方法format,按照构造方法中指定格式,把Date日期格式化为符合模式的字符串

public Date parse(String source): 从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。
使用步骤:

  1. 创建SimpleDateFormat对象,构造方法中传递指定的模式
  2. 调用SimpleDateFormat对象中的方法parse,把符合模式的字符串,解析为Date日期

注意:
public Date parse(String souce) throws ParseException

public class Demo05DateFormat {
    public static void main(String[] args) throws ParseException {
        //1、创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date = new Date();
        System.out.println(date);//Wed Nov 27 13:47:15 CST 2019
        //2、调用SimpleDateFormat对象中的方法format,按照构造方法中指定格式,把Date日期格式化为符合模式的字符串
        System.out.println(sdf.format(date));//2019年11月27日 13时47分15秒
 //       System.out.println(new SimpleDateFormat("yyyy年MM月DD日 HH时mm分ss秒").format(new Date()));通过匿名对象转换
        System.out.println("====================");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date1 = sdf1.parse("2019年11月27日 14时03分35秒");
        System.out.println(date1);
    }
}

Calendar类

简述:

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

静态方法

Calendar是一个抽象类,不能直接创建对象,但是里面有一个静态的getInstance方法,返回类型为Calendar类的子类对象

static Calendar getInstance(){
    //...
}使用默认时期和语言环境获得一个日历

常用方法

  • public int get(int field):返回给定日历字段的值。
  • public void set(int field, int value):将给定的日历字段设置为给定值。
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
public class Demo06Calendar {
    public static void main(String[] args) {
      /*  Calendar c = Calendar.getInstance();//多态  日历格式
        System.out.println(c);*/
        Calendar c = Calendar.getInstance();
        //public int get(int field):返回给定日历字段的值。
        System.out.println("现在的年份:"+c.get(Calendar.YEAR));
        System.out.println("现在的月份:"+(c.get(Calendar.MONTH)+1));//西方月份是0-11,所以要+1
        //public void set(int field, int value):将给定的日历字段设置为给定值。
        c.set(Calendar.YEAR,2020);
        //同时设置年月日 利用了方法的重载
        c.set(2020,11,27);
        System.out.println("现在的年份:"+c.get(Calendar.YEAR));
        System.out.println("现在的月份:"+(c.get(Calendar.MONTH)));
        //public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
        c.add(Calendar.MONTH,-2);
        c.add(Calendar.YEAR,-1);
        System.out.println("现在的年份:"+c.get(Calendar.YEAR));
        System.out.println("现在的月份:"+(c.get(Calendar.MONTH)));
       // public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
        System.out.println(c.getTime());//把日历转换为日期
    }


}

System类

简述:

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作

常用方法

java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

  • public static long currentTimeMillis():返回以毫秒为单位的当前时间。
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。
  1. src : 源数组
  2. srcPos: 源数组起始位置
  3. dest: 目标数组
  4. destPos: 目标数组起始位置
  5. length:复制的数组元素数量
public class Demo07System {
    public static void main(String[] args) {
        /*long start = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("共耗时毫秒:" + (end - start));*/
        int[] src = {7,8,9};
        int[] dest = {1,2,3};
        System.out.println(Arrays.toString(dest));
        System.arraycopy(src,0,dest,0,3);
        System.out.println(Arrays.toString(dest));
    }
}

StringBuilder类

简述:
java.lang.StringBuilder:字符串缓冲区,可以提高字符串的效率

构造方法

  • StringBuilder():构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符
  • StringBuilder(CharSequence seq):构造一个字符串生成器,它包含与指定的 CharSequence 相同的字符。

常用方法

  • public StringBuilder append():可以添加任意类型字符串,返回当前对象
    将 boolean 参数的字符串表示形式追加到序列。
  • public String toString():返回此序列中数据的字符串表示形式。

String -> StringBuilder :可以通过调用StringBuilder的构造方法
StringBuilder -> String :可以通过toString方法

public class Demo01StringBuilder {
    public static void main(String[] args) {
        String str = "aaa";
        StringBuilder bu = new StringBuilder(str);
        bu.append("bbb");
        System.out.println("bu:"+bu);
        String s = bu.toString();
        System.out.println("s:"+s);
        //无参构造
   /*     StringBuilder str1 = new StringBuilder();
        System.out.println(str1);
        StringBuilder str2 = new StringBuilder("aaaa");
        System.out.println(str2);
        //append方法返回的是this
        System.out.println(str1.append("aaaa"));
        System.out.println(str1==str1.append("111"));
        System.out.println(str1==str1.append(true));
        System.out.println(str1==str1.append(1.1));
        System.out.println(str1==str1.append(111));
        System.out.println("aaaa".toUpperCase().toLowerCase());*/
   
    }
}

Object类

简述:
java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。

常用方法

  • public String toString():返回该对象的字符串表示。
    toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
    由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。输出对象名的时候默认调用了toString方法

  • public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

默认地址比较

如果没有覆盖重写equals方法,那么Object类中默认进行==运算符的对象地址比较,只要不是同一个对象,结果必然为false。

对象内容比较

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。

import java.util.Objects;

public class Person {
    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 Person(String name, int age) {

        this.name = name;
        this.age = age;
    }

    private String name;
    private int age;
    /*
    我们需要重写equals方法
    但是有一个问题:
    这个时候涉及到多态问题
    多态的弊端:无法使用该子类特殊有的方法属性
    结局方法:我们可以通过向下转型(强制类型转换)
    Person p = (Person)obj;
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        //getClass() != o.getClass() 使用反射技术,判断o是否是Person类型,等效于o instanceof Person
         如果参数为空,或者类型信息不一样,则认为不同
        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);
    }

    /*public boolean equals(Object obj){
            //增加一次判断,传递的参数obj如果是this本身,直接返回true,提高程序效率
            if(obj==this){
                return true;
            }
            //增加一次判断,传递的参数obj如果是null,直接返回false,直接返回false,提高程序效率
            if(obj==null){
                return false;
            }
            //增加一次判断,防止类型转换异常ClassCastException
            if(obj instanceof Person){
                Person p = (Person)obj;
                //比较两个对象的属性this(p1),另外一个是obj(p2)
                boolean b =  this.name.equals(p.name) && this.age == p.age;
            }

           return false;
        }*/
        @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public Person() {
    }
}

 */
public class Demo01String {
    public static void main(String[] args) {
        Person per = new Person("迪丽热巴",18);
        System.out.println(per);
        String aaa = "aaaaa";
        System.out.println(aaa);
    }
}
public class Demo02Equals {
    public static void main(String[] args) {
        Person p1 = new Person("迪丽热巴",15);
        Person p2 = new Person("迪丽热巴",15);
       /* boolean result = p1.equals(p2);
        System.out.println(p1);
        System.out.println(p2);
        System.out.println(result);
        System.out.println("=================");
        p1=p2;
        result = p1.equals(p2);
        System.out.println(result);*/
        System.out.println("===================");
        //重写了equals方法
        System.out.println(p1.equals(p2));
    }
}

参考文献

《JDK API 1.6.0 中文版》

附上自己的博客地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值