一、Object类

Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
equals方法与toString方法是最常见的两种Object类方法。

1.boolean equles(Object obj)

equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
  在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。
/*
    描述人这个类,并定义功能根据年龄判断是否是同龄人
    由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法
    在方法体中根据类的属性值进行比较
 */
class Person extends Object{
    int age ;
    //复写父类的equals方法,实现自己的比较方式
    public boolean equals(Object obj) {
        //判断当前调用equals方法的对象和传递进来的对象是否是同一个
        if(this == obj){
            return true;
        }
        //判断传递进来的对象是否是Person类型
        if(!(obj instanceof Person)){
            return false;
        }
        //将obj向下转型为Perosn引用,访问其属性
        Person p = (Person)obj;
        return this.age == p.age;
    }
}

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

2.String toString()

toString()方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。
 由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
class Person extends Object{
    int age ;
    //根据Person类的属性重写toString方法
    public String toString() {
        return "Person [age=" + age + "]";
    }
}

二、 String类

查阅API发现说字符串是常量;它们的值在创建之后不能更改,这是什么意思呢?   其实就是说一旦这个字符串确定了,那么就会在内存区域中就生成了这个字符串。字符串本身不能改变,但str变量中记录的地址值是可以改变的。

1.string类的创建

字符串有大量的重载的构造方法。通过String类的构造方法可以完成字符串对象的创建。
String s1 = new String(); //创建String对象,字符串中没有内容

byte[] bys = new byte[]{97,98,99,100};
String s2 = new String(bys); // 创建String对象,把数组元素作为字符串的内容
String s3 = new String(bys, 1, 3); //创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素

char[] chs = new char[]{’a’,’b’,’c’,’d’,’e’};
String s4 = new String(chs); //创建String对象,把数组元素作为字符串的内容
String s5 = new String(chs, 0, 3);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数count为要几个元素

    String s6 = new String(“abc”); //创建String对象,字符串内容为abc

2.常用方法

/*获取长度*/
int length()

/*获取部分字符串*/
String substring(int beginIndex)
String subString(int beginIndex,int endIndex)

/*查找*/
//字符串是否以指定字符串开头\结尾
boolean startsWith(String prefix)
boolean endsWith(String suffix)
//字符串中是否包含另一个字符串
boolean contains(CharSequence s)
int indexOf(String str)
//将字符串转成一个字符数组。或者字节数组。
char toCharArray()
byte[] str.getBytes()
//判断两个字符串中的内容是否相同
boolean equals(Object obj)
boolean equalsIgnoreCase(String anotherString)
//判断该字符串的内容是否为空的字符串
boolean isEmpty()
//获取该字符串中指定位置上的字符
char charAt(int index)

/*修改*/
//大小写转化
String toLowerCase() //字符串转成小写
String toUpperCase() //字符串转成大写
//替换
String repalce(char oldChar, char newChar) //将字符串中的老字符,替换为新字符
String repalce(String old, String newstr) //将字符串中的老字符串,替换为新字符串
//去掉字符串两端空格
String trim()

三 、StringBuffer类

在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区。 

 查阅StringBuffer的API,StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。

 原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。

常用方法:

//在末尾追加新数据
public StringBuffer append(String str)

//在指定位置插入新数据
public StringBuffer insert(int offset,String str)

//删除指定位置上的字符
public StringBuffer deleteCharAt(int index)

//删除指定范围内的多个字符
public StringBuffer delete(int start,int end) 

//将指定范围内的多个字符 用给定的字符串替换
public StringBuffer replace(int start,int end,String str)

//将字符串缓冲区的内容反转  如"abc"----"cba"
public StringBuffer reverse()

//从指定位置开始,到末尾结束,截取该字符串缓冲区,返回新字符串
public String substring(int start)

//从指定位置开始,到指定位置结束,截取该字符串缓冲区,返回新字符串
public String substring(int start,int end)