一、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)