java common api - yaokun123/php-wiki GitHub Wiki

JAVA常用对象Api

一、String类

  • String类的特点

字符串对象一旦被初始化就不会改变。

字符串"abc"存储在字符串常量池中。

/**
演示字符串定义的第一种方式,并明确字符串常量池的特点。
池中没有就建立,池中有,直接用。
*/
class StringDemo{
    public static void main(String[] args){

        //在内存中有一个字符串缓冲区(字符串常量池)。
        String s = "abc";//先到字符串常量池中找,没有,创建,赋值
        String s1 = "abc";//先到字符串常量池中找,有,不再创建,直接赋值

        //所以s与s1指向同一个地址
        System.out.println(s==s1);//true
        
    }
}

字符串new String("abc")存储在堆内存中

class StringDemo{
    public static void main(String[] args){
        String s = "abc";//创建一个字符串对象在常量池中。
        String s1 = new String("abc");//创建两个对象,一个new一个字符串对象在堆内存中。

        System.out.println(s==s1);//false

        //字符串对象重写了Object的equals方法,比较内容,而不比较地址
        System.out.println(s.equals(s1));//true
    }
}
  • String中的常用方法
1、构造函数
char[] arr={'a','b','c'}
String s = new String(arr);//将数组变为字符串abc

2、获取字符串长度
int length();

3、根据位置获取字符
char charAt(int index);

4、根据字符获取在字符串中第一次出现的位置
int indexOf(int ch)

5、获取字符串中一部分字符串,也叫子串
String substring(int beginIndex,int endIndex);

6、将字符串变成字符串数组(字符串的切割)
String[] split(String regex);//涉及到正则表达式

7、将字符串变成字符数组
char[] toCharArray();

8、将字符串变成字节数组
byte[] getBytes();

9、将字符串中的字母转成大小写
String toUpperCase();//大写
String toLowerCase();//小写

10、将字符串中的内容进行替换
String replace(char oldch,char newch);
String replace(String s1,String s2);

11、将字符串两端空格去除。
String trim();

12、将字符串进行连接。
String concat(String)

13、两个字符串内容是否相同
boolean equals(Object obj);
boolean equalsIgnoreCase(String str);//忽略大写比较字符串内容

14、字符串只是否包含指定字符串。
boolean contains(String str);

15、字符串是否以指定字符串开头,是否以指定字符串结尾
boolean startsWith(String str);
boolean endsWith(String str);

二、StringBuffer

  • 特点

StringBuffer就是字符串缓冲区,用于存储数据的容器。

1、长度是可变的。
2、可以存储不同类型的数据。
3、最终要转成字符串使用。
4、可以对字符串进行修改。

既然是一个容器,应该具备什么功能?
1、添加:StringBuffer append(data)
       StringBuffer insert(index,data)
2、删除:StringBuffer delete(start,end)//包含头,不包含尾
       StringBuffer deleteCharAt(int index)//删除指定位置的元素
3、查找:char charAt(index);
        int indexOf(string);
        int lastIndexOf(string);
4、修改:StringBuffer replace(start,end,string)
        void setCharAt(index,char);
public static void main(String[] args){
    //创建缓冲区对象
    StringBuffer s = new StringBuffer();
   
    StringBuffer s1 = s.append(4).append(false);
    s.insert(1,"haha");

    System.out.println(s==s1);//true


    //清空缓冲区
    s.delete(0,s.length())
}

三、StringBuilder(jdk1.5)

jdk1.5以后出现了功能和StringBuffer一样的对象,就是StringBuilder

不同的是:

StringBuffer是线程同步的,适用于多线程。

StringBuilder是线程不同步的,速度更快,适用于单线程。