java常用类--字符串

  • String

import java.io.IOException;
import java.util.Arrays;

public class Linkin 
{
    public static void main(String[] args) throws IOException 
    {
        String str = "LinkinPark...";
        //找到某一处char值
        System.out.println(str.charAt(0));
        //测试某一个字符串是否和当前字符串相同
        System.out.println("Linkin".equals(str));
        //判断该字符串的前缀和后缀
        System.out.println(str.startsWith("Lin"));
        System.out.println(str.endsWith("..."));
        //判断该字符串是否包含指定的内容
        System.out.println(str.contains("kin"));
        //将指定字符串连接到此字符串的结尾   一般不怎么用 直接用+号连接就好了
        System.out.println(str.concat("binger"));
        System.out.println(str+"binger");
        //使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
        byte[] bytes = str.getBytes();
        for (byte b : bytes) {
            System.out.println(b);
        }
        //返回指定子字符串在此字符串中第一次出现处的索引
        System.out.println(str.indexOf("kin"));
        //返回指定字符在此字符串中最后一次出现处的索引
        System.out.println(str.lastIndexOf("P"));
        //当且仅当 length() 为 0 时返回 true。
        System.out.println(str.isEmpty());
        //返回此字符串的长度
        System.out.println(str.length());
        //返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
        System.out.println(str.replace("L", "B"));
        //根据给定正则表达式的匹配拆分此字符串,返回的是字符串数组
        System.out.println(Arrays.asList(str.split("i")));
        //返回字符串的副本,忽略前导空白和尾部空白
        System.out.println(str.trim());
        //返回一个新的字符串,它是此字符串的一个子字符串。 后面还可以跟一个参数,表示结尾
        System.out.println(str.substring(2));
        //返回 int 参数的字符串表示形式  一般不怎么用 直接用加号连接就好了
        System.out.println(String.valueOf(2));
        System.out.println(2+"");
    }

}


  • 字符串与字符数组

String 类的构造方法:String(char[]) 和 String(char[],int offset,int length) 分别用字符数组中的全部字符和部分字符创建字符串对象 
String类提供了将字符串存放到数组中的方法:public void getChars(int start,int end,char c[],int offset ) 
将字符串中的全部字符存放在一个字符数组中的方法:public char[] toCharArray()   


  • 字符串与字节数组
String(byte[])用指定的字节数组构造一个字符串对象。String(byte[],int offset,int length) 用指定的字节数组的一部分,即从数组起始位置offset开始取length个字节构造一个字符串对象。
public byte[] getBytes() 方法使用平台默认的字符编码,将当前字符串转化为一个字节数组。
public byte[] getBytes(String charsetName) 使用参数指定字符编码,将当前字符串转化为一个字节数组。 


  • StringBuffer,StringBuilder 
StringBuffer append(String s)  StringBuffer append(int n)   
StringBuffer append(Object o)  StringBuffer append(char n)
StringBuffer append(long n),StringBuffer append(boolean n),
StringBuffer append(float n),StringBuffer append(double n),
public chat charAt(int n )
public void setCharAt(int n ,char ch)
StringBuffer insert(int index, String str) :
public StringBuffer reverse() 
StringBuffer delete(int startIndex, int endIndex) 
StringBuffer replace( int startIndex ,int endIndex, String str)

import java.io.IOException;

public class Linkin 
{
    public static void main(String[] args) throws IOException 
    {
        //一般使用的构造器有2个 一个无参的 一个传入一个字符串的
        StringBuilder sb = new StringBuilder();
        //追加字符串
        sb.append("LinkinPark...");
        //替换
        sb.replace(0, 1, "binger");
        //删除
        sb.delete(0, 1);
        //反转
        sb.reverse();
        // 设置字符序列的长度
        sb.setLength(3);
        //toString 返回字符串
        System.out.println(sb.toString());
    }

}



StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样,关于三者的区别:

String:不可变字符序列
StringBuilder:可变字符序列、效率高、线程不安全
StringBuffer:可变字符序列、效率低、线程安全

String使用陷阱:
string s="a"; //创建了一个字符串 s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。在玩hibernate的时候,写hql往往要串好多的字符串,记住以后不管是否拼接不拼接hql,统一使用stringBuiler。

原文地址:https://www.cnblogs.com/LinkinPark/p/5233135.html