首页 专题 文章 代码 归档
Java String常用方法
2020.02.29 18:01 2020.03.01 10:10

1. String类常用方法

基本每个语言都会有很多基础方法,而其实很多类库都是在基础的方法上加以封装;

此节我们来介绍一些String类的常用方法;

1.1. 判断相关

1、public boolean equals (Object anObject)

将此字符串与指定对象进行比较。

2、public boolean equalsIgnoreCase (String anotherString)

将此字符串与指定对象进行比较,忽略大小写。

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = "Hello";

        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//false
        System.out.println(s1.equalsIgnoreCase(s3));//true

    }
}

扩展:采坑,java.lang.NullPointerException错误

public class Test {
    private String h;

    public String getH() {
        return h;
    }

    public void setH(String h) {
        this.h = h;
    }
}

测试:

public class Main {
    public static void main(String[] args) {
        Test test = new Test();
        boolean equals = test.getH().equals("");// 报错

    }

}

这时会抛空指针异常,而不是返回true之类的;

1.2. 获取相关

1、public int length ()

返回此字符串的长度。

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = "Hello";
        String s4 = "迷思爱";

        System.out.println(s1.length());//5
        System.out.println(s4.length());//3

    }

}

2、public String concat (String str)

将指定的字符串连接到该字符串的末尾。

public class Main {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = "hello";
        String s3 = "Hello";
        String s4 = "迷思爱";
        System.out.println(s1.concat(s4));//hello迷思爱

    }

}

说明:

+号运算符也可连接字符串,但是在大量连接字符串时,最好使用concat()方法,而不应该使用+

3、public char charAt (int index)

返回指定索引处的 char值。

String s = "hello world";
//char charAt:获取指定索引处的字符
System.out.println(s.charAt(0));//h
System.out.println(s.charAt(1));//e

4、public int indexOf (String str)

返回指定子字符串第一次出现在该字符串内的索引。

        String s = "hello world";
// 获取子字符串第一次出现在该字符串内的索引,没有返回-1
        System.out.println(s.indexOf("l"));//2
        System.out.println(s.indexOf("wow"));//-1
        System.out.println(s.indexOf("ak"));//-1

5、public String substring (int beginIndex)

返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。

String s = "hello world";
// 从beginIndex开始截取字符串到字符串结尾
System.out.println(s.substring(0));//hello world
System.out.println(s.substring(5));//world

6、public String substring (int beginIndex, int endIndex)

返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。

String s = "hello world";
// 从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
System.out.println(s.substring(0, s.length()));//hello world
System.out.println(s.substring(3,8));//lo wor

1.3. 转换相关

1、public char[] toCharArray ()

将此字符串转换为新的字符数组。

String s = "HelloWorld!";
//char[] toCharArray:把字符串转换为字符数组
char[] chs = s.toCharArray();
System.out.println(Arrays.toString(chs));//[H, e, l, l, o, W, o, r, l, d, !]

2、public byte[] getBytes ()

使用平台的默认字符集将该 String编码转换为新的字节数组。

String s = "HelloWorld!";
byte[] bytes = s.getBytes();
System.out.println(Arrays.toString(bytes));
//[72, 101, 108, 108, 111, 87, 111, 114, 108, 100, 33]

3、public String replace (CharSequence target, CharSequence replacement)

将与target匹配的字符串使用replacement字符串替换。

String str = "misiai com";
String replace = str.replace("mi","MI");
System.out.println("replace = " + replace);
//replace = MIsiai com

1.4. 分割相关

有些特殊符号需要用 反斜杠 \ 转义,在Java要用两个反斜杠 \

public String[] split(String regex)

将此字符串按照给定的regex(规则)拆分为字符串数组。

//String分割
String s = "aa|bb|cc";
String[] strArray = s.split("\\|");
for (String value : strArray) {
    System.out.print(value);
}
//aabbcc

1.5. 其他方法

boolean contains(CharSequence s)

判断字符串中是否包含指定字符。

String s = "djlfdjksdlka";
boolean str = s.contains("g");
System.out.println(str);//false

2. StringBuilder

在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,既耗时,又浪费空间。

除了我们上面说的使用string的concat方法外,更好的方式是使用StringBuilder或者StringBuffer

先来说StringBuilder


创建对象:

StringBuilder builder = new StringBuilder();

字符串连接

StringBuilder builder = new StringBuilder();
StringBuilder append = builder.append("hello").append("world").append(3.02).append(1);
System.out.println(append.toString());//helloworld3.021

如上所示,StringBuilder的方法只有几个,主要的、常用 的也就两个:appendtoString

append是一个重载方法,其支持的参数有很多:如上面的字符串,浮点数,整数等等;

toString就是把append后的东西转换为字符串而已;

其他方法

reverse:将结果按字符倒序,如下:

StringBuilder builder = new StringBuilder();
StringBuilder append = builder.append("hello").append("world").append(3.02).append(1);
System.out.println(append.reverse().toString());//120.3dlrowolleh

replace:替换某些字符

StringBuilder builder = new StringBuilder();
StringBuilder append = builder.append("hello").append("world").append(3.02).append(1);
System.out.println(append.replace(1,3,"wudao"));//1wudao.3dlrowolleh

insert:在某些位置插入某些字符串,不详细说了;

3. StringBuffer

StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

StringBuffer特点:

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

大致效果和StringBuilder效果一致,这里就不详细示例代码了;

  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);

StringBufferStringBuilder区别:

StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

本节阅读完毕! (分享
二维码图片 扫描关注我们哟