一、String的注意点

1.字符串的内容是不会发生改变的,他的对象在创建后不能被更改
举个栗子

String name="张三";
String hobby="唱歌";
System.out.print(name+hobby);

则一共是产生了3个字符串的,即name,hobby,name+hobby(即拼接后的)
2.String是Java定义好的一个类,定义在java.lang包中,所以使用时不需要导包。

二、创建String对象的两种方式

1.直接赋值(串池里)

String s1="张三";

2.使用new构造方法(堆里)

a.空参构造:获得一个空白的字符串对象

String s2=new String();
System.out.println("@"+s2+"@");//为了方便展示,在s2前后加上@

则输出

@@

b.有参构造

情况一:传递一个字符串,根据字符串的内容再创建一个新的字符串
(这种情况下用new还不如用第一种直接赋值)

举个栗子

String s3=new String("abc");
System.out.println(s3);

输出

abc
情况二:传递一个字符数组,根据字符数组内容再创建一个新的字符串对象。
应用场景——要修改字符串的内容,可以通过修改字符数组的方式弥补字符串不可被修改的遗憾。
char[] chs={'a','b','c','d'};
String s4=new String(chs);
System.out.println(s4);

输出

abcd
情况三:传递一个字节数组,根据字节数组的内容再创建一个新的字符串对象。
应用场景——在网络中传输的数据其实都是字节信息
而我们一般要将字节信息进行转换,转成字符串,用到此构造。
注意:不是拿着97、98、99、100去拼接,而是去根据这个数组查 ASCII码,查到对应的字母,再将其转换,变成字符串
byte[] bytes={97,98,99,100};
String s5=new String(bytes);
System.out.println(s5);

输出

abcd

三、字符串的拼接

用"+"即可实现拼接

四、字符串的比较(内容的比较)

说明:用“==”号比较时

对于基本数据类型比较的是数据值
对于引用数据类型比较的是地址值

1.equals方法(完全一模一样)

2.equalsIgnoreCase方法(忽略大小写)

String s1=new String("abc");
String s2="Abc"
boolean res1=s1.equals(s2);
boolean res2=s1.equalsIgnoreCase(s2);
System.out.println("res1="+res1);
System.out.println("res2="+res2);

输出

res1=false
res2=true

五、字符串截取subString

1.subString(beginIndex)
2.subString(beginIndex,endIndex)不包括endString

String s1="I love singing";
String s2=s1.subString(2);
String s3=s1.subString(2,8)
System.out.println("s2="+s2);
System.out.println("s3="+s3);
s2=love singing
s3=love s//不包括下标为8的,所以没有i

六、字符串查找indexOf

1.int x=str1.indexOf(str2)
2.int x=str1.indexOf(str2,fromIndex)

String s1="principle";
String s2=s1.indexOf(in);
String s3=s1.indexOf(in,2);
System.out.println("s2="+s2);
System.out.println("s3="+s3);
2
2

java字符串常用操作:
: 定位某个下标的字符charAt(n)、
获取字符串长度str.length()
: 去掉字符串开头结尾的空格str.trim()、
大小写互化str.toUpperCase、
截取子串str.subString(n)或str.subString(n,i)
:(字符串是否相等str1.equals(str2)或者str1.subStringIgnoreCase(str2)、
开头结尾是否存在某串endsWith(s1)或者startsWith(s1)、
某串(首次/最后一次)存在的位置indexOf(s1)或者lastIndexOf(s1)、