Java API:就是Java提供给我们使用的类,这些类将底层的实现封装了起来,
*String类
1、特点:字符串对象一旦被初始化就不会被改变。
String s = "abc";//创建一个字符串对象在常量池中。
String s1 = new String("abc");//创建两个对象一个new 一个字符串对象"abc"在堆内存中。
String s2 = "abc"
System.out.println(s1==s2);//true,"abc"在常,量池中,s1和s2都指向它;如果常量池中没有这个字符串,就创建一个,有就直接用即可
System.out.println(s==s1);//false,s记录的是常量池中的地址值,s1记录的是堆内存对象的地址值
System.out.println(s.equals(s1));//true
//string类中的equals复写Object中的equals建立了string类自己的判断字符串对象是否相同的依据。其实就是比较字符串内容。
2、构造函数
第一种:
char[] arr = {'w','a','p','q','x'};
String s = new String(arr,1,3);
System.out.println("s="+s);//S=apq
第二种:
String s = new String();//等效于String s = ""; 不等效String s = null;
byte[] arr = {97,66,67,68};
String s1 = new String(arr);
System.out.println("s1="+s1);//s1=aBCD
第三种:将字符数组转换成字符串
char[] arr3 = {'a','b','c','d','e'};
String s = new String(arr3);
System.out.println(s);//s=abcde
常见问题或方法:
1、String s1 = "ab";
String s2 = "abc";
String s3= s1+"c";
System.out.println(s3==s2);//false;s3指向的是堆内存中的新地址值,s2记录的是常量池中的地址值
2、equals方法(比较字符串的内容是否相同,能区分大小写)
3、判断方法:
(1)、equalsIgnoreCase(String anotherString)
将此String
与另一个 String
比较,不区分大小写。
(2)、contains(String str)
判断字符串是否包含指定的字符串str
(3)、startsWith(String prefix)
测试此字符串是否以指定的字符串开始。
(4)、endsWith(String suffix)
测试此字符串是否以指定的字符串结束
(5)、isEmpty()
判断字符串是否为空
""和null的区别:""是字符串常量,同时也是一个string类的对象,既然是对象,当然可以调用String类中的方法。
null是空常量,不能调用任何的方法,否则会出现空指针异常。但是null常量可以给任意引用数据类型赋值
4、获取功能
(1)、length():
在数组中int []arr = {1,2,3};
System.out.println(arr.length);length是属性
而String s1 = "haha";
System.out.println(s1.length());//4//length()是一个方法,获取的是字符的个数
(2)char charAt(int index)
返回指定索引处的字符 这个方法会容易发生字符串索引越界异常
char c = s1.charAt(1);
System.out.println(c);//a
(3)int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引,如果不存在,返回-1
s1.indexOf(97)//1
上一个语句与s1.indexOf('a')结果相同因为参数接收的是int类型的,传递char类型的会自动提升
(4)int indexOf(String str)
返回指定字符串在此字符串中第一次出现处的索引
(5)indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索
(6)indexOf(String str, int fromIndex)
返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
(7)lastIndexOf(int ch)
返回指定字符在此字符串中最后一次出现处的索引,也就是从后向前找,第一次出现该字符的位置
但是索引还是从左往右的数字
(8)substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串(默认到末尾)
(9)substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串(从指定位置到指定位置)
String replace(char old,char new)
String replace(String old,String new)
String trim()去除字符串两端空格
7、字符串反转(例子)