技术干货程序员

Java常用API(一)

2018-02-24  本文已影响0人  cuzz_
API

Java的API(Application Programming Interface)也叫应用程序接口,是JDK中提供给我们使用的类,这些类将底层代码封装起来

Object类

Object类的概述

Object类是Java语言中的根类,是所有类的父类,它描述的所有子类方法都可以使用,所有类在创建对象时,最终找到的父类就是Object

equals 方法

equals方法用于比较两个对象是否相同,其实就是比较两给对象的内存地址是否相同,Object类中的equals方法内部就是使用==比较符
在Object类中原代码为

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

在开发中比较两个对象是否相等意义不大,通常会根据对象中的属性值进行比较,也就是在开发中需要从写equals方法的属性进行比较

下面描述一个人的类,并定义功能判断是否为同龄人

public class Person extends Object{
    private String name;
    private int age;
    
    // 无参数构造方法
    public Person(){
    }
    // 有参数构造方法
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }
    // 重写父类的equals方法
    public boolean equals(Object obj){
        // 判断是当前调用的equals方法的对象和传递进来的对象是否是同一个
        if(this == obj){
            return true;
        }
        // 判断是否传递进来的对象是否是Person类型
        // 对obj参数进行向下转型,把obj转成Person类型
        if(obj instanceof Person){
            Person p = (Person)obj;
            return this.age == p.age;
        }
        return false;       
    }
    // getters和setters
    ...
}

注意:在重写Object中的equals方法时,public boolean equals(Object obj)的参数是Object类型,在调用属性时,一定要进行类型转换,在转换之前必须对类型进行判断

toString方法

toString方法返回该对象的字符串表示,一般默认返回的该字符串的内容是【对象类型@内存地址】
由于toString方法返回的结果是内存地址,而在实际的开发中,经常需要按照对象的属性得到相应的字符串的表达形式,因此也需要重写,比如Person类返回name

class Person extends Object{
    ...
    // 根据Person类的属性重写toString方法
    public String toString(){
    return name
    }
}

String类

String类的概述

查阅API中的String类的描述,发现String类代表的字符串,Java中的所有字符串(如“abc”)都作为此类的实例实现的
继续查阅API发现说字符串是常量,它们在的值在创建后就不能更改,这是什么意思呢?其实就是说一旦这个字符串一旦确定了,那么就会在内存区域生成这个字符串,字符本生不能改变,但str变量中的记录的地址可以改变
String源码中private final char value[]定义为不可改变的数组

内存图
符串有大量的重载的构造方法。通过String类的构造方法可以完成字符串对象的创建,那么,通过使用双引号的方式创建对象与new的方式创建对象,有什么不同呢?看如下程序:
String str1 = "abc";
String str2 = new String("abc");
System.out.println(str1==str2);             //false
System.out.println(str1.equals(str2));      //true

因为String重写了equals方法,建立了字符串自己的判断相同的依据(通过字符串对象中的字符来判断)

str1和str2的创建方式有什么不同呢?

String的构造方法

构造方法是用来完成String对象的创建,下面给出了一部分构造方法需要在API中找到,并能够使用下列构造方法创建对象

String类中的构造函数

String类的常用方法

StringBuffer类

查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。
原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

StringBuffer的方法使用

StringBuilder类

查阅API发现还有一个StringBuilder类,它也是字符串缓冲区,StringBuilder与它和StringBuffer的有什么不同呢?
我们阅读StringBuilder的API说明发现,它也是一个可变的字符序列。此类提供一个与 StringBuffer兼容的 API,但不保证同步。该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快

上一篇 下一篇

猜你喜欢

热点阅读