一.String类的理解和创建对象
(1).概念:
String对象用于保存字符串(字符序列),字符串常量对象是用双引号括起来的字符序列,例如“你好”,"123"等。字符串中的每个字符都占两个字节。
(2).String类常用的构造器
Stirng s1=new String();
String s2=new String(String origina);
String s3=new String(char[] a);//将一个字符数组转化为字符串
String s4=new String(char[]a,int startIndex,int count)
//将字符数组a中从下标为startInxex开始,截取count个字符放入字符串中
(3).创建Stirng对象的两种方式
a.直接赋值:Stirng s1="abcdef";
b.调用构造器:String s2=new String("abcdef");
两种创建对象的区别:
直接赋值:先从常量池中查看是否有“abcdef”数据空间,如果有,直接执行,如果没有再创建空间,s最终指向的是常量池中的空间。
观察String的源代码可知,字符串存放在value数组中,而这个数组是final的,所以字符串不可修改。
s1和s2在内存中的存放形式:
两种形式的比较
public class Main {
public static void main(String[] args) {
String s1=new String("abcdef");
String s2="abcdef";
//s1指向堆中的空间,s2指向常量池的空间,二者地址不相同
System.out.println(s1==s2);//false
//s1和s2指向的内容相同
System.out.println(s1.equals(s2));//true
//s.intern()方法最终返回的是常量池中的地址
System.out.println(s1.intern()==s2);//true
}
}
二.String类的常见方法
1.equals 区分大小写,判断内容是否相等
2.equalslgnoreCase 忽略大小写的判断内容是否相等
3.length 获取字符的个数,字符串的长度
4.indexOf 获取字符在字符串中第1次出现的索引,索引从0开始,如果找不到,返回-1
5.lastlndexOf 获取字符在字符串中最后1次
出现的索引,索引从0开始,如找不到,返回-1
6.substring 截取指定范围的子串
7.trim 去前后空格
8.charAt:获取某索引处的字符,注意不能使用Str[index] 这种方式
9.toUpperCase将字符串中的字符大写
10.toLowerCase将字符串中的内容小写
11.concat字符串后面连接一个字符串
12.replace 替换字符串中的字符
13.split 分割字符串,对于某些分割字符
14.compareTo 比比较两个字符串的大小
15.toCharArray 转换成字符数组
16.format 格式字符串, %s 字符串 %c 字符 %d 整型 %.2f 浮点型
public class Main {
public static void main(String[] args) {
//equals和equalsIgnoreCase
String s1="abc";
String s2="aBc";
System.out.println(s1.equals(s2));//false
System.out.println(s1.equalsIgnoreCase(s2));//true
//length
System.out.println(s1.length());//3
//indexOf和lastindexOf
String s3="abcdacd";
System.out.println(s3.indexOf('a'));//0
System.out.println(s3.lastIndexOf('a'));//4
//substring
System.out.println(s3.substring(2,4));//cd
//trim
String s4=" abcde ";
System.out.println(s4.trim());//abcde
//charAt()
String s5="123abc";
System.out.println(s5.charAt(2));//3
//toUpperCase和toLowerCase
String s6="aBc";
System.out.println(s6.toUpperCase());//ABC
System.out.println(s6.toLowerCase());//abc
//concat
System.out.println(s6.concat("def"));//aBcdef
//replace
System.out.println(s6.replace('B','b'));//abc
//compareTo
String s7="abc";
System.out.println(s6.compareTo(s7));//-32('b'-'B'的差值)
//toCharArry
char a[]=s7.toCharArray();
//format
System.out.println();
String s8="学生%s的成绩为%d分";
System.out.println(String.format(s8, "小明",100));//学生小明的成绩为100分
}
}