String常用方法
判断方法
boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结尾。
public static void main(String[] args) {
String str1 = "hello World";
String str2 = new String("hello world");
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
}
查找
与indexof方法的查找顺序相反
获取长度
替换
分割
String str5 = "155.3422.6932";
String[] arrStr = str5.split("\\.");
for(String str : arrStr){
System.out.println(str);
}
String str6 = str5.substring(5);//从指定位置开始 一直到字符串的末尾
String str7 = str5.substring(0,3);//包含开始 位置 不包含结束位置
转换
System.out.println(str8.toLowerCase());
System.out.println(str8.toUpperCase());
System.out.println(str8.toString());
System.out.println(arr.toString());
toString返回 对象的 字符串表示形式
String str9 = " java se ";
System.out.println(str9);
System.out.println(str9.trim());// 去除字符串的首尾的空格 不能去除中间空格
int a = 10;
int b = 20;
System.out.println(a + b);//30
System.out.println(String.valueOf(a) + b);//1020
public class StringDemo_02 {
/*
案例 :拼接字符串
需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,
并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]
思路:
①定义一个 int 类型的数组,用静态初始化完成数组元素的初始化
②定义一个方法,用于把 int 数组中的数据按照指定格式拼接成一个字符串返回。返回值类型 String,参数列表 int[] arr
③在方法中遍历数组,按照要求进行拼接
④调用方法,用一个变量接收结果
⑤输出结果
*/
public static void main(String[] args) {
int[] arr = {2,1,4,53,2,2,4,5};
printArray(arr);
}
public static void printArray(int[] arr){
String arrStr="[";
for(int i = 0 ; i < arr.length;i++){
if(i == arr.length-1){//此时是最后一个元素
arrStr += arr[i];
}else{
arrStr += arr[i] + ",";
}
}
arrStr +="]";
System.out.println(arrStr);
}
}
public class StringDemo_03 {
public static void main(String[] args) {
String str = "abcde";
String res = reverse(str);
System.out.println(res);
}
/**
* 实现的功能就是将str字符串反转 并返回
* @param str 表示需要反转的字符串
* @return 反专之后的 字符串
*/
public static String reverse(String str){
String reverseStr = "";
for(int i = str.length()-1;i>-1;i--){
char c = str.charAt(i);
reverseStr += c;
}
return reverseStr;
}
}
StringBuffer和StringBuilder
• 一个可变的字符序列。 此类提供与StringBuffer的API,但不保证同步。 此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方(如通常是这种情况)。 在可能的情况下,建议使用这个类别优先于StringBuffer ,因为它在大多数实现中将更快。
• StringBuilder的主要StringBuilder是append和insert方法,它们是重载的,以便接受任何类型的数据。 每个都有效地将给定的数据转换为字符串,然后将该字符串的字符附加或插入字符串构建器。 append方法始终在构建器的末尾添加这些字符; insert方法将insert添加到指定点。
StringBuilder类的构造方法
容量的保证机制
public static void main(String[] args) {
//创建一个StringBuilder对象
StringBuilder sb = new StringBuilder();//容量16
StringBuilder sb1 = new StringBuilder("helloWorld");//容量helloWorld.length() + 16
// 向StringBuilder中追加字符串
sb.append("abc");
sb.append(11);
sb.append(true);
sb.append(23.32);
sb.append(123L);
sb.append('a');
sb.append(new char[]{'3','m'});
// StringBuilder和String之间 的转换
System.out.println(sb.toString());
// 插入
sb1.insert(3,100);// 3 从字符串开始位置往后的 偏移量 插入位置
String str = "java";
char[] arr = str.toCharArray();
// index 表示插入到StringBuilder对象的位置
// arr 是插入的字符数组
// offset 表示 取数组的元素的 开始位置
// len 表示取数组中的元素的个数
sb1.insert(6,arr,1,2);
System.out.println(sb1.toString());
}
反转:
String str1 = "helloworld";
StringBuilder stringBuilder = new StringBuilder(str1);
stringBuilder.reverse();
System.out.println(stringBuilder.toString());
//这种编程方式称为链式编程
sb.append("abc").append(true).append(100).append('a');
删除
public static void main(String[] args) {
StringBuilder sb= new StringBuilder("hellojavaee");
//删除
//delete(int start, int end) 删除指定区间内的子字符串
sb.delete(2,5);// 前闭后开区间
System.out.println(sb.toString());
//deleteCharAt(int index) 删除指定位置的字符
sb.deleteCharAt(2);
System.out.println(sb.toString());
//修改 setCharAt(int index, char ch)
sb.setCharAt(0,'H');
System.out.println(sb.toString());
//截取
//String substring(int start) 从开始位置截取到末尾
//String substring(int start, int end)截取指定区间的子串
String sub1 = sb.substring(3);
System.out.println(sub1);
String sub2 = sb.substring(3,5);
System.out.println(sub2);
}
获取的容量
System.out.println(sb.capacity());//返回容量 27
sb.trimToSize();//释放没有字符的空间 保留足够 容纳当前字符串的空间
System.out.println(sb.capacity()//7
StringBuilder和StringBuffer的区别:
StringBuilder 是不同步 不是线程安全的
StringBuffer 是 同步的 也是 线程安全的
String和StringBuilder的使用场景
对于String 当我仅需要使用一个字符串,而且 字符串不会出现频繁的修改 则使用String
而如果 字符串需要频繁 的 修改 则使用StringBuilder
StrignBuffer基本不用