Java 常用API 01 Object、String、StringBuffer

1 Java API & Object 类

1.1 Java的API

API:Application Programming Interface (应用程序接口)。

Java API 是JDK中提供给我们使用的类,这些类将底层代码实现封装起来。

1.2 Object类概述

Object类是Java语言中的根类,是所有类的父类。所有类在创建对象的时候,最终找的父类是Object。

1.3 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类型。
  • 在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断。
1.4 toString方法

此方法返回对象的字符串表示。该字符串内容是对象的类型+@+内存地址值

由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。

示例:

class Person extends Object{
    int age ;
    //根据Person类的属性重写toString方法
    public String toString() {
        return "Person [age=" + age + "]";
    }
}

2 String类

2.1 概述

1)字符串是常量,在创建之后不能更改?

扫描二维码关注公众号,回复: 2336085 查看本文章
String str="hello";
str="world";    // 输出str,为world

不能更改==>字符串本身不能改变(拼接,更改某个字符),但是str变量中记录的地址值是可以改变的。

2)使用双引号创建对象与使用new的方式有啥不同?

String s1 = "abc";
String s2 = new String("abc");
  • s1创建,在内存中只有一个对象,这个对象在字符串常量池中。
  • s2创建,在内存中有两个对象。一个new的对象在堆中,一个字符串本身对象在字符串常量池中。
2.2 String类中的一些方法
String str="hello,world";
// 字符串长度        
System.out.println(str.length());       // 11
// 获取部分字符串
System.out.println(str.substring(2, 4));    //  ll
// 从指定位置到字符串末尾的所有字符
System.out.println(str.substring(3));   //  lo,world
// 判断字符串是否以xx开头
System.out.println(str.startsWith("he"));   // true
// 判断字符串是否包含指定的字符串
System.out.println(str.contains("world"));  // true
// 返回指定字符串第一次出现的位置
System.out.println(str.indexOf("llo")); // 2
// 将字符串转换成新的字符数组
char[] chs=str.toCharArray();   
// 使用平台的默认字符集将字符串编码成byte序列,存储在一个byte数组中
byte[] bytes=str.getBytes();

String str1="HELLO,world";
// 判断俩个字符串是否相同,忽略大小写
System.out.println(str.equalsIgnoreCase(str1)); // true

3 字符串缓冲区

3.1 StringBuffer 类概述

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

3.2 常用方法
StringBuffer sbBuffer=new StringBuffer();
// 添加字符串
System.out.println(sbBuffer.append("hello"));   // hello
// 在指定位置插入
System.out.println(sbBuffer.insert(2, "sky")); // heskyllo
// 删除指定范围的字符串
System.out.println(sbBuffer.delete(2, 5));  // hello
// 替换指定范围的内容
System.out.println(sbBuffer.replace(1, 3, "sbl"));  // hsbllo
// 将字符串序列反序
System.out.println(sbBuffer.reverse()); // ollbsh
3.3 StringBuilder 类

此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

猜你喜欢

转载自blog.csdn.net/lihaogn/article/details/80998629