- 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类提供了将字符串存放到数组中的方法: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) 使用参数指定字符编码,将当前字符串转化为一个字节数组。
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)
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。