Object

:::tips

概述:

  • Object是类层次结构的根,每个类都可以将Object作为超类,所有类都直接或间接继承自该类

    构造方法:

  • public Object()

    常用方法:

  • public String toString()

    • 得到对象地址值,格式为”类全名@16进制地址值”
    • 打印对象默认调用toString()方法,打印对象地址值
    • 一般会重写toString()方法
  • public boolean equals(Object object)

    • 比较对象是否相等,默认比较地址值,重写比较内容,自动生成
    • 如果想比较对象的内容,需要重写该方法 ::: equals与==区别 :::tips ==与equals的区别
  • ==是比较运算符

    • JAVA中基本数据类型只有八种:byte,short,char,int,long,float,double,boolean。
    • 除了这八种之外的类型,都称为引用类型。
    • ==即可以判断基本类型,又可判断引用数据类型
    • 如果判断基本数据类型 判断的是值是否相等
    • 如果判断的是引用数据类型 判断的是地址是否相等
  • equals是object类中的方法,只能判断引用类型
  • 默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相等 :::

    1. public class Equal {
    2. public static void main(String[] args) {
    3. A a = new A();
    4. A b = a;
    5. A c = a;
    6. System.out.println(a == b && b == c);//true
    7. B bobj = a;
    8. System.out.println(c == bobj);//true
    9. "a".equals("a");
    10. Integer integer1 = 1000;
    11. Integer integer2 = 1000;
    12. System.out.println(integer1 == integer2);//false
    13. System.out.println(integer1.equals(integer2));//true Integer有重写equals方法
    14. }
    15. }
    16. class A extends B{ }
    17. class B{ }

    String

    :::tips

    概述:

  • String代表字符串,java程序中的所有字符串文字都被实现为此类的实例

    特点:

  • 字符串不可变,它们的值在创建之后不能改变。

  • 字符串缓冲区支持可变字符串。因为String对象是不可变的,它们可以被共享
  • 字符串效果相当于字符数组(char[]),但是底层原理是字节数组(byte[])

String构造方法:

  • public String() 创建空白字符串对象,不含任何内容
  • public String(char[] chs) 根据字符数组内容来创建字符串对象
  • public String(byte[] bys) 根据字节数组内容来创建字符串对象
  • String str = “…”; 直接赋值方式创建字符串对象

String对象特点:

  • 通过new创建的字符串对象,每次都会申请一个内存空间
  • 以 “ “ 方式给出的字符串,只要字符序列相同(顺序和大小写),无论程序代码出现几次,JVM都只会建立一个String对象,并在字符串池中维护

字符串的比较:

  • 基本类型:比较的是数据值是否相同
  • 引用类型:比较的是地址值是否相同
  • 字符串是对象,通过equals()比较内容是否相同
  • public boolean equals(Object anObject)将字符串与指定对象进行比较,
  • 由于比较的是字符串对象,所有参直接传递一个字符串

String中的方法:

  • public boolean equals(Object anObject)比较字符串内容,严格区分大小写
  • public char charAt(int index)返回指定索引出的char值
  • public int length()返回字符串的长度
  • public String split(String regex)将此字符串按照给定regex拆分为多个字符串
  • public String substring(int beginIndex)从指定索引开始截取字符串的所有内容
  • public String substring(int beginIndex,int endIndex)从beginIndex开始(包含),截取到endIndex(不包含)
  • public boolean contains(String str)判断字符串中是否包含指定的字符串
  • public int indexof(int ch1)返回字符串ch1第一次出现的位置,返回类型为int
  • public int indexOf(int index1,int index2)在该字符串中,从第index个位置开始,子字符串ch1第一次出现的位置,返回值为int
  • public char[] toCharArray()将此字符串转换为新的字符数组char[] c = str.toCharArray()
  • public boolean startsWith(String prefix)判断字符串是否以传入的字符开头
  • public boolean endsWith(String suffix)判断字符串是否以传入的字符结尾 :::

    StringBuilder

    :::tips

    概述:

  • 如果对字符串进行拼接操作,每次拼接,都会构成一个行的String对象,

  • 即耗时,又浪费内存空间,java提供StringBuilder来解决此问题
  • StringBuilder是一个内容可变的字符串类,可以把它当成一个容器

StringBuilder与String的区别:

  • String:内容不可变
  • StringBuilder:内容可变

StringBuilder构造方法: StringBuilder strb = new StringBuilder()

  • public StringBuilder() 创建空白可变字符串对象,不含任何内容
  • public StringBuilder(String str) 根据字符串内容来创建字符串对象

StringBuilder添加和反转:

  • public StringBuilder append(任意类型) 添加数据并返回对象本身
  • public StringBuilder reverse() 返回相反的字符序列

StringBuilder转换为String:

  • public String toString()

String 转换为StringBuilder:

  • public StringBuilder(String str) ::: | Object | /ˈɒbdʒɪkt; əbˈdʒekt/ | 对象 | | —- | —- | —- | | split | /splɪt/ | 分割 | | substring | /ˈsʌbstrɪŋ/ | 截取字符串中的子串 | | contains | /kənˈteɪnz/ | 包含 | | indexof |
    | 查找字符或者子串第一次出现的地方 | | toCharArray |
    | 转换为字符数组 | | startsWith |
    | 以…开头 | | endsWith |
    | 判断字符串是否以某个字符或字符串结尾的 | | StringBuilder |
    | 可变的字符序列 | | append | /əˈpend/ | 追加 | | reverse | /rɪˈvɜːs/ | 相反的 |