String
package com.ithema;
import java.util.Random;
public class StringDemo01 {
public static void main(String[] args) {
//1.使用直接赋值的方式获取一个字符串对象
String s1="abc";
System.out.println(s1);
//2.使用new的方式来获取一个字符串对象
//空参构造:可以获取一个空白字符串对象
String s2=new String();
System.out.println('*'+s2+'!');
//传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
String s3=new String("abc");
System.out.println(s3);
//传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
//需求:我们修改字符串的内容 abc Qbc
char []arr={'a','b','c'};
String s4=new String(arr);
System.out.println(s4);
//传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象
byte []bytes={97,98,99};
String s5=new String(bytes);
System.out.println(s5);
}
}
引用数据类型 s1!=s2 因为new开辟不同的空间
字符串拼接
package com.ithehema; import java.util.Scanner; public class StringDemo06 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); String str = reverse2(s); System.out.println(str); } public static String reverse2(String str) { String result=""; for(int i=str.length()-1;i>=0;i--){ char ch = str.charAt(i); result+=ch; } return result; } public static String reverse1(String str) { char[] charArray = str.toCharArray(); int left = 0; int right = str.length() - 1; while (left < right) { char tmp = charArray[left]; charArray[left] = charArray[right]; charArray[right] = tmp; left++; right--; } return new String(charArray); } }
package com.ithehema;
public class Test3 {
public static void main(String[] args) {
String Phone_number = "15572193955";
//1.截取3位
String start = Phone_number.substring(0, 3);
//2.截取后4位
String end = Phone_number.substring(7);
//3.拼接
String ret=start+"****"+end;
//4.打印
System.out.println(ret);
}
}
substring()
包头不包尾
public class StringDemo09 { public static void main(String[] args) { //1.定义一个变量表示骂人的话 String talk = "后裔你玩什么啊,TMD,GDX"; //2.定义一个数组用来存多个敏感词 String []arr={"TMD","GDX","ctmd","ZZ","lj","FW","nt"}; for(int i=0;i<arr.length;i++){ talk=talk.replace(arr[i],"***"); } System.out.println(talk); } }
StringBulider
链式编程
当我们在调用一个方法时,不需要用变量接收他的结果,可以继续调用其他的方法
package ithehma;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
//1.录入字符串
Scanner sc = new Scanner(System.in);
String str = sc.next();
//2.反转字符串
String result =new StringBuilder().append(str).reverse().toString();
//3.比较
if(str.equals(result)){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
StringJoiner
package StringJoiner;
import java.util.StringJoiner;
public class StringJoinerdemo1 {
public static void main(String[] args) {
//1.创建一个对象,并指定中间的间隔符号
StringJoiner sj = new StringJoiner("---");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc").add("ddd");
//3.打印结果
System.out.println(sj.toString());
}
}
总结
至少会创建4个对象new(容器) 也就是StringBulider
字符串拼接的时候如果有变量参与 ,则拼接的底层其实是在容器里的.
字符串拼接的时候如果没有变量参与,则拼接的底层其实是在串池里的