常用API

Object类

Object是所有类的父类和基类,超类
规则:

  • Object的toString()方法打印出的是内存地址,所以Object 的所有子类建议重写Object类的toString()方法,用来打印出该子类对象的成员信息.

  • Object类中的equals()方法,默认比较的是对象的地址值是否相等,通常情况下都要比较内容,所以没有意义,所以Object类建议所有的子类重写equals()方法;
重写equals()存在的问题:

隐含着一个问题,多态的问题,由于重写equals()方法,传入的是Object类型的参数,无法获得到子类自己独有的内容,所以需要向下转型,但是向下转型可能抛出类型转换异常,所以要先判断需要转型的参数变量是否是要转成的类型的变量,用instanceof关键字来判断.

  • 重写equals()方法会伴随着重写hashCode()方法,hashCode()方法是重写Objects类里的方法,Objects在util包下,所以重写hashCode()方法伴随着导包的动作.

Object类的toString()方法,用来打印出该子类对象的成员信息.

Date日期和Clendar 日期

jdk1.8之后新版本日期类计算时间更加方便,在java.time包下

Calendar日期接口的用法

代码演示:
//Calendar抽象类获取给定的日历的字段值

//Calendar的所有属性都是静态常量字段,都是用 public static final修饰的,可以通过类名直接调用

public static void main(String[] args){
//用Carlendar抽象类的getInterface()方法获得抽象类的实现类对象,多态写法
Carlendar carlendar = Carlendar.getInterface();
//使用
//获取年份
int year = carlendar.get(Carlendar.YEAR);
//获取月份
int month = calendar.get(Calendar.MONTH);

}

Calendar类

概念

java.util.Calendar 日历类,抽象类,在Date类后出现的,替换掉了很多Date类中的方法。该类将所有的可能用到的时间信息封装为静态成员变量,通过类名.静态成员变量获取时间字段值

获取方式

​由于Calendar类是一个抽象类,语言敏感性,Calendar类并不是直接创建对象来获取时间属性值,而是通过静态方法创建,返回子类对象。

静态方法如下:

  • ​public static Calendar getInstance():使用默认时区和默认的语言环境获取一个日历对象

    例如:

    import java.util.Calendar;
    pubic class Demo01Calendar {
        public static void main(String[] args) {
            Calendar calendar = 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():把日历对象转换成日期对象
  • ​ public long getTimeInMillis():获取日历对象对应的毫秒值

Calendar类中提供了很多个成员常量,代表给定的日历字段:

字段值 含义
YEAR
MONTH 月份
DATE 月中的某一天(几号)
DAY_OF_MONTH 月中的第几天
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK 一周中的第几天(周几,周日为1)

备注:

​ 1. 在西方的星期,开始为周日,中国为周一

​ 2. 在Calendar类中,月份的表示是以0-11代表的是1-12月

​ 3. 日期是有大小关系,时间靠后,时间越大。

System类

​ java.lang.System类中提供了大量的静态方法,主要是用来获取与系统相关的信息或者是进行系统级操作。

它不能被实例化。也不能被继承。

​ 常用的api方法:

  • ​ public static long currentTimeMills(): 获取当前系统时间对应的毫秒值

  • ​ public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):将数组中指定的数据拷贝到另一个数组当中

  • ​ public static void exit(int status): 终止当前正在执行的java虚拟机 0代表正常退出,非0异常退出

currentTimeMills()方法

​ 实际上,它获取到的是距1970年1月1日 0时0分0秒到当前时间的毫秒差值

arraycopy()方法

​ 将一个数组当中的元素复制到另一个数据当中,数组的拷贝动作是一个系统级的操作,性能比较高。

arraycopy方法当中涉及到5个参数:

参数列表 参数名称 参数类型 参数含义
1 src Object 源数组
2 srcPos int 源数组索引的起始位置
3 dest Object 目标数组
4 destPos int 目标数组索引的起始位置
5 length int 复制元素的个数

StingBuilder类

System 类

在 java.lang.System 类中提供啦大量的静态方法和变量,可以获取与系统相关的信息或者系统级操作,System类不能被实例化

常用的方法:

public  static  long currentTimeMills(); 获取当前时间的毫秒值
public static void arraycopy(Object src , int srcPos,Object dest, int destPos,int length);  //将源数组里的从起始位置开始,复制到目标数组,从起始位置开始,最后是复制的元素的个数多长
|      |      |      |
| ---- | ---- | ---- |
|      |      |      |
public static  void  exit(int status):终止当前正在执行的java虚拟机,0代表正常退出,非0代表异常退出


代码演示:

public class DemoSystem {
    public static void main(String[] args) {
        /*long begin = System.currentTimeMillis();
        for (int i = 0; i <10000 ; i++) {
            System.out.println(i);
        }
        long end = System.currentTimeMillis();
        System.out.println("时间差:"+(end-begin));*/


         int[] srcArr = {1,2,3,4,5,6,7};
        int[] destArr = {6,7,8,9,10};
         System.arraycopy(srcArr,0,destArr,0,3);
        for (int i = 0; i < destArr.length; i++) {
            System.out.print(destArr[i]+"  ");
        }
    }

posted @ 2020-11-30 21:30  任苗苗  阅读(147)  评论(0)    收藏  举报