API(Object/String)

所属包:

        java.lang

        Class Object

类定义:

        public class Object{}

类介绍:

        Object类是类层次结构的根类(顶级父类)。

        每个类都以 Object作为超类(父类)。

        所有对象,包括数组,实现这个类的方法。

构造方法:

        无参构造

方法:

1、protected Object clone()--创建并返回此对象的副本

注意:

1、protected --受保护的 可以在本类 子类 同包类

在子类中且要通过当前子类对象才能调用protected修饰的方法

解决:

自己开发了一个方法 调用当前对象的clone方法

重写父类的方法-

放大权限范围 实现依然是调用父类的方法

2、CloneNotSupportedException-执行clone方法抛出异常

要克隆对象对应的类必须实现Cloneable接口

3、Cloneable接口--标记接口 如果实现了该接口 则表示该类的对象时允许拷贝 如果没有实现接口 表示不允许clone方法拷贝的方法

接口中没有抽象方法

面试题:

深表克隆、浅表克隆

 

2、protected void finalize()

    当垃圾回收确定没有对对象的引用时,由对象上的垃圾回收器调用。

  程序控制垃圾回收器来指定回收某个对象?

垃圾回收器自己执行  程序员无法干预

finalize方法可以提醒垃圾回收器可以回收对象  无法让对象立马被回收掉

3、public final Class<?> getClass()

        返回当前对象的运行时类型

                Animal a = new Dog();

                a instanceof Dog-true

                a.getClass()--Dog

                Dog dog = (Dog)a;

4、public int hashCode()-获取当前对象的hash值

        在同一个程序中 同一对象多次调用hashcode方法获取到的hash值是相同的

        不同的对象 hashcode方法获取到的hash值不相同

5、public String toString()-获取当前对象的字符串表现形式

toString的源码实现:

public String toString() {

        return getClass().getName() + "@" + Integer.toHexString(hashCode());

}

java.lang.Object@28d93b30

其中:toHexString将int值转为十六进制的字符串类型

注意:

System.out.println(obj3);--底层原理:

先调用obj3.toString()--获取到当前对象的字符串 然后将字符串输出打印

重写toString方法:- 如果需要将对象转为指定的字符串形式

idea都可以直接生成

6、public boolean equals(Object obj)--判断对象是否相等

equals源码实现:

public boolean equals(Object obj) {

        return (this == obj);

    }

默认情况下通过==比较两个对象的地址值

重写equals方法:

idea直接生成

面试题:

==  equals的区别?

基本数据类型:

只能通过==比较数据值是否相等

引用数据类型:

==:比较两个对象的地址值

equals:

如果是默认实现,比较两个对象的地址值;

如果重写equals方法,比较两个对象的属性值是否相等

应用场景:

1、将任意类的对象赋值给Object类型的引用

String

包:java.lang

类定义:

        public final class String extends Object
        String不能被继承

概述:

        表示字符串。

        在java中,所有字符串都是String的对象/实例。

        "hello"是String类的对象

        字符串是常量

String源码:

private final char[] value;--字符数组常量 value--用于存储字符串中的字符

因为字符串对象是不可改变的,所以它们可以被共享;

创建字符串变量的方式:

1、String 变量 = 字符串字面值;

例如:

String str = "hello";

2、String 变量 = new String(字符串字面值);

例如:

String str = new String("hello");

面试题:

String  str1 = "hello";

String  str2 = "hello";

str1 == str2  true

String str3 = new String("hello");

str1 == str3  false

String str4 = new String("hello");

str3 == str4  false

构造方法:

public String()--无参构造创建对象

创建空字符串对象

public String(char[] value)

将字符数组转为字符串类型

public String(char value[]) {

        this.value = Arrays.copyOf(value, value.length);

 }

字符数组的修改不会影响到新创建的字符串的值  字符串的字符数组是新的字符数组

public String(char[] value,

              int offset,

              int count)

offset指定数组开始的下标  count表示个数

例如:

char[] cs = {'a','b','c','d','e','f'};

String str3 = new String(cs, 1, 3);//"bcd"

public String(String original)

String的常用方法:

1、public char charAt(int index)--返回指定索引的 char字符

例如:

 String str1 = "hello";

 char c = str1.charAt(0);

注意:

下标范围:0~长度-1

如果超出范围,则运行会抛出StringIndexOutOfBoundsException异常

 public char charAt(int index) {

        if ((index < 0) || (index >= value.length)) {

            throw new StringIndexOutOfBoundsException(index);

        }

        return value[index];

    }

练习:循环遍历字符串的每一个字符

for (int i = 0; i <=4 ; i++) {

            System.out.println(str1.charAt(i));

        }

2、public int length()-获取字符串的长度

练习:循环遍历字符串的每一个字符

for (int i = 0; i <=str1.length()-1 ; i++) {

            System.out.println(str1.charAt(i));

        }

3、public int compareTo(String anotherString)--比较两个字符串的大小

结果返回值int:

0      当前字符串内容和参数字符串内容相等

正数   当前字符串内容大于参数字符串内容

负数   当前字符串内容小于参数字符串内容

源码:

public int compareTo(String anotherString) {

        int len1 = value.length;//len1=3

        int len2 = anotherString.value.length;//len2=2

        int lim = Math.min(len1, len2);//lim=2

        char v1[] = value;//v1=abc

        char v2[] = anotherString.value;//v2=ab

        int k = 0;//下标

        while (k < lim) {

            char c1 = v1[k];//c1=a

            char c2 = v2[k];//c2=a

            if (c1 != c2) {

                return c1 - c2;//'c'-'e'

            }

            k++;

        }

        return len1 - len2;//3-2=1

    }

4、public int compareToIgnoreCase(String str)

结果返回值int:

0      当前字符串内容和参数字符串内容相等

正数   当前字符串内容大于参数字符串内容

负数   当前字符串内容小于参数字符串内容

总结:

compareTo\compareToIgnoreCase方法通常用于字符串排序--有序集合

5、public boolean contains(CharSequence s)--判断当前字符串是否包含参数字符串

CharSequence 接口

String是CharSequence 接口的实现类

6、public static String copyValueOf(char[] data)--将字符数组转为字符串类型

public static String copyValueOf(char data[]) {

        return new String(data);

    }

7、public boolean endsWith(String suffix)-判断当前字符串是否以参数指定的内容结尾

8、public boolean startsWith(String prefix)-判断当前字符串是否以参数指定的内容开头

9、public boolean startsWith(String prefix, int toffset)-判断当前字符串从指定下标开始是否以参数指定的内容开头

专题:

字符数组<->字符串:

字符数组->字符串:

new String(char[] cs);

String.copyValueOf(char[] cs);

专题:

字符串拼接

        +

        concat()方法

        StringBuilder

        StringBuffer

案例:

1、输出字符串中所有的数字字符

2、求字符串中所有数字的和

3、统计字符串中字母、数字、其他字符出现的次数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔同学Online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值