package 第三章;
import java.util.Scanner;
public class 字符串 {
public static void main(String[] args) {
// 字符串的截取
String s = "abcdefgh";
String sub = s.substring(0,3);
// sub的长度等于3-0=3
System.out.println(sub);
// 字符串的拼接
// 任何对象都可以转化为字符串
String p = s+123;
System.out.println(p);
// join方法
// 在字符串数组的每个元素间添加指定的分隔符
String[] strings = {"a","b","c","d"};
String join = String.join("-",strings);
System.out.println(join);
// java中的字符是不可以修改的,java将String字符称为不可变字符串
// java编译器可以让字符串共享
// 可以认为字符串都是存放在公共的存储池中,字符串变量指向了这个存储池中的某个值,当改变字符串变量的值时改变的是这个变量指向的地址
// 若复制一个字符串变量,则原始字符串与复制的字符串指向同一个地址
// 当一个字符串没有被变量指向时,java会对其进行垃圾回收
// 只有字符串常量是共享的
String x = "abc";
String y = "abc";
String z = x;
System.out.println(z==y);
System.out.println(x==y);
System.out.println(x.equals(y));
// equals()方法比较的是字符串面变量是否相同,而==比较的是两个字符串存放的位置是否相同
// 当要确定一个字符串既不是空串也不是null时,要先判断其不是null,因为null值调用length()方法会报错
String s1 = "";
if (s1!=null&&s1.length()!=0)
System.out.println("yes");
else
System.out.println("false");
// 当需要对一个字符串进行频繁的构建时,可以使用StringBuilder或者StringBuffer类
StringBuilder stringBuilder = new StringBuilder();
for(int i=0;i<10;i++){
stringBuilder.append('a');
}
System.out.println("stringbuilder:"+stringBuilder.toString());
// StringBuilder类适用于单线程,StringBuffer适用于多线程
// 输入
Scanner in = new Scanner(System.in);
// 输入数字
int a = in.nextInt();
// 输入字符串
String s2 = in.nextLine();
// 格式化输出
float x1 = 2.22222f;
System.out.printf("%3.2f",x1);
}
}