java中的常用类库

常用类库

java.lang包包含了常用类,系统做了设置无需导包即可使用

1、Object

万类之祖:所有的类都间接或直接的继承了Object类

**equals()方法**

​    String类继承并重写了Object的equals

​    == 可以比较基本数据类型的值是否相同,比较引用数据类型的对象是否是同一个

```java
public class Demo01 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("abc");
        System.out.println(s1.equals(s2));//true
        System.out.println(s1==s2);//false

        Cat c1 = new Cat("小白");
        Cat c2 = new Cat("小黑");
        System.out.println(c1==c2);//false
        System.out.println(c1.equals(c2));//true 重写过的equals方法
        Cat c3 = c1;
        System.out.println(c1==c3);//true
    }
}

 

/**
 * 猫类
 */
class Cat{
    private String name; //名字

    /**
     * 改写猫类对象的比较规则,重写Object类equals方法
     *  只要猫的名字一样就为真
     * @param o
     * @return
     */
    public boolean equals(Object o) {
        Cat c = (Cat) o;//向下转型
        //比较猫的名字
        return this.name.equals(c.name);
    }
    /*
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Cat cat = (Cat) o;
        return Objects.equals(name, cat.name);
    }
    */

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }

    public Cat() {
    }
    public Cat(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
```

 

**hashCode()方法**

​    获取对象在堆内存的地址位置叫哈希码

**toString()方法**

​    toString方法默认拼接的对象首地址的@符号后的16进制数字就是hashCoe()哈希码

```java
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
```

重写toString就可以改写打印输出对象的内容

toString()不写,默认就调用

```java
//Dog类
class Dog{
    private String name;
    public Dog() {
    }
    public Dog(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return name;
    }
}
```

2、String

是字符串常量,一旦创建不可改变

```java
//源码
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
```

被final修饰,String类不能被继承

字符串值本质存在private final char value[];

**用法和使用:参考JDK1.8API中文文档**

3、可变字符串

String:字符串常量,一旦创建不可改变,线程不安全

StringBuffer:可变字符串,创建仍然可以改变,线程安全(数据在多个线程中同步)

StringBuilder:可变字符串,创建仍然可以改变,线程不安全(数据在多个线程中不同步)

**用法和使用:参考JDK1.8API中文文档**

4、包装类

包装类是为了将八种基本数据类型转为引用类型的形态

基本        包装类

byte        Byte

short      Short

int          Integer

long        Long

float         Float

double     Double

char         Character

boolean   Boolean

基本数据可以和包装类自动转换:

​    **装箱**(基本数据->包装类对象)和**拆箱**(包装类对象->基本数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值