java常用API知识整理(下)

一、Object类

1. 概述
java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。

  • public String toString():返回该对象的字符串表示。
  • public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。

在IntelliJ IDEA中,可以点击Code菜单中的Generate...,也可以使用快捷键alt+insert,点击toString()选项。选择需要包含的成员变量并确定。

2. equals方法

01.Object类的equals方法源码

	 public boolean equals(Object obj) {
	    return (this == obj);
 	 }

解析:
this,obj是谁? 方法中p1调用,那么this就是p1,也就是说this==obj --> p1 ==p2。

基本数据类型:比较的是值。
引用数据类型:比较的是两个对象的地址值。
02.String类重写equals方法源码

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

使用向下转型,把anObject转换为String类型。

3.Object类

String s1 = null;
String s2 = "abc";
s1.equals(s2)

上面代码产生空指针异常,针对空指针异常产生了objects类。
Objects类的equals方法:对两个对象进行比较,防止空指针异常。

public static Boolean equals (Object a,Object b){
          return (a==b) ||   (a!=null &&a.equals(b));
}

  在JDK7添加了一个Objects工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象。

  在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题。
二、Date类
java.util.Date:表示日期和时间的类
Date获取当前系统的日期和时间
java常用API知识整理(下)_第1张图片
long getTime()把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
返回自1970年1月1日 00:00:00 GMT以来此Date对象表示的毫秒数。
DateFormat类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
java.text.DateFormat:是日期/时间格式化子类的抽象类
作用;
格式化(日期-->文本)、解析(文本-->日期)
成员方法
String format(Date date)  格式化
Date parse(String source) 解析
*/
public class FormatTest {
	public static void main(String[] args) throws ParseException {
   	 //demo1();
   	 demo2();
}
private static void demo2() throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    Date date = sdf.parse("2019年08月08日 15时51分54秒");
    System.out.println(date);
}
private static void demo1() {
    //使用DateFormat类中的方法format,把日期转换为文本
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
    Date date = new Date();
    String d = sdf.format(date);
    System.out.println(date);
    System.out.println(d);
   }
}

三、Calendar类

/*
java.util.Calendar类:日历类
Calendar类是一个抽象类,里面提供了很多操作日历字段的方法(YEAR、MONTH、DAY_OF_MONTH、HOUR)
Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance(),该方法返回了Calendar类的子类对象。
static Calendar getInstance()使用默认时区和语言环境获得一个日历
*/
/*
public int get(in field):返回给定日历字段的值。
参数:传递的日历字段(YEAR,MONTH..)
返回值:日历字段代表的具体值
 */
import java.util.Calendar;
public class test1 {
public static void main(String[] args) {
    //demo1();
    demo2();
}
private static void demo2() {
    Calendar c = Calendar.getInstance();//多态
    c.add(Calendar.YEAR, 2);
    c.add(Calendar.MONTH, -3);
    int year = c.get(Calendar.YEAR);
    System.out.println(year);
    //System.out.println();
    int month = c.get(Calendar.MONTH);
    System.out.println(month);//西方的月是0到11。东方:1-12
  }
private static void demo1() {
    Calendar c = Calendar.getInstance();//多态
    int year = c.get(Calendar.YEAR);
    System.out.println(year);
    //System.out.println();
    int month = c.get(Calendar.MONTH);
    System.out.println(month);//西方的月是0到11。东方:1-12
    }
}

四、System类

  java不支持全局函数和变量,Java将一些与系统相关的重要函数和变量放到了System类中。System类提供了外部定义的属性和环境变量的访问,加载文件和库的方法,还有快速复制数组的一部分的实用方法。
java.lang.System类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有:

  • public static long currentTimeMillis():返回以毫秒为单位的当前时间。
  • public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。

String类的常用属性如下。

  • public static final InputStream in:标准输入流设备----键盘;
  • public static final PrintStream out:标准输出流设备----屏幕;
  • public static final PrintStream err:标准出错设备。

01.arraycopy()方法

	import java.util.Arrays;
	public class test1 {
 	public static void main(String[] args) {
    	int [] src ={1,2,3,4,5};
   		 int [] dest = {6,7,8,9,10};
    	System.out.println("复制前:"+ Arrays.toString(dest));
    	System.arraycopy(src,0,dest,0,3);
    	System.out.println("复制前:"+ Arrays.toString(dest));
 	   }
	}

02. currentTimeMillis方法

  实际上,currentTimeMillis方法就是 获取当前系统时间与1970年01月01日00:00点之间的毫秒差值。

import java.util.Date;
public class SystemDemo {
public static void main(String[] args) {
  	 	//获取当前时间毫秒值
   	 System.out.println(System.currentTimeMillis()); // 1516090531144
 }
}

五、StringBuilder类
  JDK8中String类底层是char数组,而JDK9底层是byte数组。String它是一个不可变字符串,可通过+拼接字符串。
java常用API知识整理(下)_第2张图片
java常用API知识整理(下)_第3张图片
StringBuilder常用的方法2个:

  • public StringBuilder append(…):添加任意类型数据的字符串,并返回当前对象自身。
  • public String toString() : 将当前StringBuilder对象转换为String对象。

练习

import java.util.Arrays;

public class test1 {
public static void main(String[] args) {
int a [] = {1,2,3,4};
double b [] = {2.1,3,2,4,3};

for(int i =0;i

你可能感兴趣的:(Java高级编程)