Object类
- java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间 接子类。
- 如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为 java.lang.Object 类。
- Object类定义了“对象”的基本行为, 被子类默认继承。
Object类常用方法
- equals:用于判断调用对象是否与参数对象相等,默认比较两个对象的地址
- hashCode:获取调用对象的哈希码值(内存地址的编号),equals方法相等,就相等
- toString:获取调用对象的字符串形式,使用print或println打印或字符串拼接会调用,默认包名.类名@哈希码值的十六进制
比较两个对象的内容重写equals和hashCode,保持一致
重写toString可以让对象输出和拼接出有意义的信息
String类
- java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描 述,如:"abc"。
- 该类由final关键字修饰,表示该类不能被继承。
- 从jdk1.9开始该类的底层不使用char[]来存储数据,而是改成 byte[]加上编码标记,从而节约了一 些空间。
- 该类描述的字符串内容是个常量不可更改,因此可以被共享使用。
常量池
由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量 池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对 象,从而提高了性能。
可变字符串类
- 由于String类描述的字符串内容是个常量不可改变,当需要在Java代码中描述大量类似的字符串 时,只能单独申请和存储,此时会造成内存空间的浪费。
- 为了解决上述问题,可以使用java.lang.StringBuilder类和java.lang.StringBuffer类来描述字符序 列可以改变的字符串,如:"ab"。
- StringBuffer类是从jdk1.0开始存在,属于线程安全的类,因此效率比较低。
- StringBuilder类是从jdk1.5开始存在,属于非线程安全的类,效率比较高。
StringBuilder类常用的构造方法
- StringBuilder() :StringBuilder类常用的构造方法
- StringBuilder(int capacity): 根据参数指定的容量来构造对象,容量为参数指定大小
- StringBuilder(String str) :根据参数指定的字符串来构造对象,容量为:16+字符串长度
StringBuilder类常用的成员方法
- int capacity() :用于返回调用对象的容量
- int length() :用于返回字符串的长度,也就是字符的个数
- StringBuilder insert(int offset, String str) :插入字符串并返回调用对象的引用,就是自己。
- StringBuilder append(String str) :追加字符串
- StringBuilder deleteCharAt(int index) :将当前字符串中下标为index位置的单个字符删除 StringBuilder delete(int start,int end): 删除字符串
- StringBuilder replace(int start,int end, String str) :替换字符串
- StringBuilder reverse() :字符串反转
StringBuilder返回值
StringBuilder的很多方法的返回值均为StringBuilder类型。这些方法的返回语句均为:return this。
由此可见,这些方法在对StringBuilder所封装的字符序列进行改变后又返回了该对象的引用。基 于这样设计的目的在于可以连续调用。