一.Object类

1.概述

object类是类层次结构的根类,每个类都使用Object类作为超类,每个类都直接或间接继承Object类

我们所定义类,没有显示继承其他类,所有这些类在Java语言中默认继承Object类,可以直接调用Object的成员方法

2.equals()方法

public boolean equals(Object obj)

对于任何非空的引用值x和y,当且仅当x和y引用同一个对象时,此方法才返回true 

Object默认equals方法比较的时对象的地址,方法内部使用的是==比较运算符

但是实际开发中,通常认为只要两个对象内容相同,即同一个类的对象且成员变量值都相同;那么他们就相等,所以经常需要子类重写equals方法

规定:

对于任何非空引用值x,x.equals(null)都返回false

自反性:对于任何非空引用值x,x.equals(x)返回true

对称性:对于任何非空引用值x,y当且仅当y.equals(x)返回true时,x.equals(y)也返回true

传递性:x.equals(y)返回true,y.equals(z)返回true,则x.equals(z)返回true

一致性:如果x和y引用的对象没有发生变化,反复调用x.equals(y)应该返回相同的结果

3.getClass()方法

public final Class getClass()

获取该对象所对应的类的字节码文件对象,也是返回该对象的运行时类的Java.lang.Class对象

JButton b1=new JButton("button1");
System.out.println(b1.getclass());
//输出
class javax.swing.JButton

4.hashCode()方法

public int hashCode()

返回该对象的哈希码值

两个相等的对象,要求返回相等的哈希码值

static int hashCode(Object a):如果a为null返回0,否则返回a.hashCode()

5.finalize()方法

垃圾回收器准备释放内存的时候,会先调用finalize()

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法(执行时机不确定)

子类可以重写finalize方法,以配置系统资源或执行其他清除

虽然在jvm中垃圾回收器可以帮助我们自动回收垃圾(仅限于Java产生的垃圾)

但是对于本地方法,所使用的一些特殊的,jvm管理不了的内存,这样释放内存空间的代码就放在finalize

注意:

对象不一定会被回收

垃圾回收只与内存有关

垃圾回收和finalize()都是不一定每次都发生的,因为jvm只有在快耗尽内存的时候才会进行垃圾回收

6.clone()方法

protected Object clone()

创建并返回此对象的一个副本

深复制和浅复制:

浅复制仅仅复制所考虑的对象,而不引用他所引用的对象

深复制把要复制的对象所引用的对象都复制了一遍。

7. toString() 方法

  • 返回该对象的字符串表示。通常,toString 方法会返回一个 以文本方式表示 此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。

Object 类的  toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、标记符“ @”和此对象哈希码的无符号十六进制表示组成。
换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())

二、String 类

1. 概述

  • 字符串是由多个字符组成的一串数据(字符序列)
  • 字符串可以看成是字符数组
  • String 类对象不能被修改

2. 构造方法

public String()
public String(byte[] bytes)
public String(byte[] bytes,int offset,int length)
public String(char[] value)
public String(char[] value,int offset,int count)
public String(String original)

3.String类的判断功能

boolean equals(Object obj)    //两个字符串的内容是否相同
boolean equalsIgnoreCase(String str)   //两个字符串的是否相同的比较、(忽略字符串的大小写)
boolean contains(String str)  // 判断当前字符串中,是否包含指定字符
boolean startsWith(String str)   //判断当前字符串,是否是由指定字符串开头
boolean endsWith(String str)   //判断当前字符串,是否是由指定字符串结尾
boolean isEmpty()   //判断一个字符串是否是空串

4. String类的获取功能

int length()    //获取当前字符串中的字符序列中,所包含的字符个数
char charAt(int index)     //获取字符串中指定位置的字符
int indexOf(int ch)  //返回指定字符,在字符数组位置

//查找指定字符串,在当前字符串中的位置
// 返回结果是指: 指定字符串中的第一个字符
// 在当前字符串中的位置(只匹配首次出现的单词)
// 如果返回-1,说明再这个字符串中没有与之匹配的
int indexOf(String str)

//从当前字符串指定位置fromIndex往后查找指定的字符ch或者字符串str
int indexOf(int ch,int fromIndex)
int indexOf(String str,int fromIndex)

//从 start 开始,截取到末尾
String substring(int start)
//从 start 开始,end 结束截取到末尾
String substring(int start,int end)

//比如:
String s = "说大放送发康师傅说卡卡卡啊说是";
String s1 = s.substring(2); // 放送发康师傅说卡卡卡啊说是
System.out.println(s1);
String s2 = s.substring(2, 4); //放送
System.out.println(s2);