Java进阶之常用API

Objects类

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

    public static void main(String[] args) {
     
        String a = "a";
        String b = "b";
        System.out.println(Objects.equals(a, b));// false
    }

你在比较两个字符串是否相等的时候(我一般也就字符串的时候用下equals,别的时候都用==),可以用这个工具类,因为它不再是原本的某个需要比较的对象点上equals了(a.equals(b)),不用担心a是个null,因为有了这个工具类,直接Objects来调用方法,所以就如上面所说,空指针安全或者叫容忍空指针的。

日期时间类Date、DateFormat、Calendar

Date

        Date d = new Date();
        System.out.println( d.getTime());// 1591084558639
        System.out.println(System.currentTimeMillis());// 1591084558639

这个可以用它的getTime()方法来计算一段代码或者程序执行的耗费时间,也可以System.currentTimeMillis(),这个Date对象里的很多方法都过时了,可以使用Calendar类。

DateFormat

	Date d = new Date();
 	DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	System.out.println(df.format(d));// 2020-06-02 15:59:41
	Date date = df.parse(str);
    System.out.println(date);// Tue Jun 02 15:59:41 CST 2020

这个format是将日期格式的对象转化为字符串,而这个parse是用来将字符串格式的日期解析成Date对象,这个方法会抛出异常。另外大概的附一张这个格式表,注意区分一下“M”以及“m”就行了,大的表示规模大的“月”这个概念,小的表示“分”这个概念。

标识字母(区分大小写) 含义
y
M
d
H
m
s

Calendar类

 public static void main(String[] args) {
     
        Calendar c =Calendar.getInstance();
        Date d = c.getTime();
        System.out.println(d);// Tue Jun 02 16:20:04 CST 2020
        System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(d));// 2020-06-02
        System.out.println(c.get(Calendar.YEAR));// 2020 年份
        System.out.println(c.get(Calendar.DATE));// 2 一个月的第几天
        System.out.println(c.get(Calendar.DAY_OF_MONTH));// 2 一个月的第几天
        System.out.println(c.get(Calendar.DAY_OF_WEEK));// 3 一周的第几天,从星期日开始计算
    }

System类

    public static void main(String[] args) {
     
        int[] arr = {
     1,2,3};
        int[] b = new int[3];
        //将源数组中的数据选择性的复制到新数组中,arrayList底层的扩容也是采取这种复制的一个机制。
        // 拷贝是系统级的,性能极高
        System.arraycopy(arr, 0, b, 0, 3);
        System.out.println(Arrays.toString(b));// [1, 2, 3]
        System.out.println(System.currentTimeMillis());// 获取当前系统的毫秒值
    }

StringBuilder

    public static void main(String[] args) {
     
        String s = "Hello";
        s += " World";
        System.out.println(s); 

        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("Hello").append(" World");
        System.out.println(stringBuilder.toString());
    }

由于String类的对象内容不可改变,所以每当进行一次字符串的拼接,都会产生在内存中产生一个新的对象。比如第一个拼接Hello World其实产生了三个字符串,这样既耗时又浪费空间,所以使用StringBuilder类。

StringBuilder又称为可变字符序列,是String字符串缓冲区,也是个容器(内部是个数组),容器中可以装很多的字符串,并且能够对其他的字符串进行各种操作,增删之类的。StringBuffer和他效果一样,StringBuilder是Java1.5出来的,这里就不说了,StringBuffer线程安全,StringBuilder线程不安全,但效率稍微高一点,这就是这二者的区别。

自动装箱、拆箱

Java1.5还更新了基本数据类型的自动装箱和拆箱,比如Integer a = 1;即自动装箱(因为1默认为int类型),然后a = a + 5这一步其实完成了两个操作,等号右边的a+5的这个a是属于Integer类型,5为int类型,两个不同类型的值相加,a先拆箱,加完5之后再次赋值给等号左边的a,a是属于Integer类型,再次装箱。

你可能感兴趣的:(Java进阶,java,字符串)