String类:位于java.lang 包中,被fifinal修饰,没有子类
1、String str1 = "hello";
直接使用""获取字符串在串池中查看是否有需要的字符串对象,如果串池有,则直接使用;如果没
有需要在串池中产生一个字符串对象,串池中的字符串对象可以被共享
2、String str2 = new String("wolrd");
利用构造方法获取字符串,首先在堆空间中创建一个字符串对象,然后查看串池中是否存在此字符
串对象,存在-串池中就不再创建字符串对象,如果没有,则串池中需要再创建一个字符串对象用
于共享,这种获取字符串对象的方式产生1~2个字符串对象(默认将堆空间中的字符串存储在字符串
变量中)
扩充:String str = new String("world");
这种获取字符串对象的方式默认指向堆空间中字符串对象,如果调用str.intern();方法,则指向串池
中字符串对象
引入:字符串底层本质为char类型的数组,应用层操作字符串底层实际上操作的数组,字符串的下
标从0开始,到字符串长度-1
1、int length():获取字符串的长度 【常用】
注意:数组获取长度:数组名.length
字符串获取长度:str.length()
2、 char charAt(int index):获取指定下标对应的字符
注意:如果给定的下标超出范围,则运行报错,错误信息为:
java.lang.StringIndexOutOfBoundsException (字符串下标越界) 【常用】
3、 boolean contains(String s):判断当前字符串中是否包含s子串,包含-true;不包含-false
4、 char[] toCharArray():将字符串转换为字符数组
5、 boolean equals(String str):判断字符串内容是否相同,相同——true;不相同-false
注意:实际开发中,比较字符串内容是否相等,使用equals
6、 boolean equalsIgnoreCase(String str):比较字符串内容是否相同,但是忽略大小写
实际开发中:对验证码比较时,通常忽略大小写
7、 String toUpperCase():将字符串小写转换为大写
String toLowerCase():将字符串大写转换为小写
8、int indexOf(String s):获取s在当前字符串中第一次出现的首字符的下标做返回,如果没有出现
过,则返回-1
9、 boolean endsWith(String s):判断当前字符串是否以s结尾,是-true;不是-false
10、 boolean startsWith(String s):判断当前字符串是否以s开头,是-true;不是-false
11、 String substring(int startInder,int end):从当前字符串中截取一个子串,子串的结果中包含起
始下标startIndex,截取到 end-1下标
12、 String trim():去除当前字符串中的前后空格
实际开发应用:
String age = "18 ";
// String ->int
int a=Integer.parseInt(age.trim());
System.out.println(a);
13、 String[] split(String s):将当前字符串以s进行拆分,将拆分结果自动封装在String数组中返回
1、 String字符串字面值为常量,一旦创建不能更改,如果对字符串进行拼接,会在原来的字
符串基础上拷贝一个副文本,在副文本上完成字符串的拼接
2、由于String不可变长的字符串,完成字符串拼接时效率较低
1、常用的可变长字符串位于java.lang包中
(1)StringBuffer:jdk1.0版本,线程安全,并发效率低
(2)StringBuilder:jdk5.0,线程不安全,并发效率高
2、常用构造方法:
StringBuilder():无参数的构造方法
StringBuilder(String str):有参数的构造法方法
3、常用的方法:
append(参数):完成字符串的拼接
4、写出String、StringBuilder、StringBuffer的区别【面试题目】
String:不可变长的字符串,字符串拼接效率较低
StringBuilder:可变长字符串,拼接效率相对高,线程不安全
StringBuffer:可变长字符串,拼接效率相对高,线程安全
5、 将String转换为StringBuider
StringBuilder s = new
StringBuilder("hello");
StringBuilder转换为String
String ss=s.toString();