1、字符串概述
(1)字符串的特点:
- 字符串的内容永不可变;【重点】
- 字符串是可以共享的;
- 字符串效果上相当于char[]字符数组,但底层原理是byte[]字节数组。
(2)创建字符串的常见方式:
- 三种构造方法
//创建一个空白字符串,不包含任何内容:public String()
String str1 = new String();
//根据字符数组的内容,创建对应的字符串:public String(char[] array)
char[] charArray = {A,B,C};
String str2 = new String(charArray);
//根据字节数组的内容,创建对应的字符串:public String(byte[] array)
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray);
- 一种直接创建
String str4 = "hello";
2、字符串常量池
字符串常量池存在于堆内存中。程序当中直接写上的双引号字符串,就在字符串常量池当中。
- 对于基本类型,==是进行数值的比较;
- 对于引用类型,==是进行地址值的比较;
3、字符串的比较
String str1 = "hello";
String str2 = "hello";
char[] charArray = {'h','e','l','l','o'};
String str3 =new String(charArray);
//public boolean equals(Object obj):参数可以是任何对象,当且仅当参数为字符串类型且内容相同时结果为true,否则返回false
boolean eql1 = str1.equals(str2);
//public boolean equalsIgnoreCase(String str):忽略大小写对内容进行比较
String str3 = "HELLO"
boolean eql2 = str3.equalsIgnoreCase(str1);
4、字符串的获取
(1)获取字符串长度:length()方法
(2)字符串拼接:concat()方法
(3)获取指定索引单个字符:charAt()方法
(4)查找参数字符串首次出现的位置:indexOf()方法
String str1= "Hello";
String str2= "World";
//获取字符串长度(字符串中字符的个数)
int length = str1.length();
//拼接字符串
String str3 = str1.concat(str2);//str3="HelloWorld"
//获取指定位置单个字符
char c = str3.charAt(4)//c='o'
//查找字符串中指定参数字符首串次出现的位置。若字符串不包含该字符串,返回-1
int index1 = str3.indexOf("llo");//index=2
int index2 = str3.indexOf("abc");//index=-1
5、字符串的截取
(1)public String substring(int index):从参数位置开始截取,至字符串末尾结束,返回新字符串;
String str1 = "helloworld";
String str2 = str1.substring(5);
System.out.println(str1);//helloworld
System.out.println(str2);//world
(2)public String substring(int begin,int end):从begin开始截取,至end结束,返回新字符串;
String str1 = "helloworld";
//左闭右开[4,7)
String str2 = str1.substring(4,7);
System.out.println(str1);//helloworld
System.out.println(str2);//owo
6、字符串分割
- public String[] split(String regex):按照参数规则,将字符串切分为若干部分;
String str1 = "aaa bbb ccc";
String str2= "XXX.YYY.ZZZ";
//按空格切分
String[] array1 = str1.split(" ");//array1=[aaa,bbb,ccc]
//split方法的参数必须是正则化表达式
String[] array2 = str2.split(".");//无法正确切分
String[] array3 = str2.split("\\.");//array3=[XXX,YYY,ZZZ]
7、字符串的转换
(1)public char[] toCharArray():将当前字符串拆分为字符数组作为返回值;
String str1 = "hello";
char[] chars = str1.toCharArray();//chars=['h','e','l','l','0']
(2)public byte[] getBytes():获得当前字符串底层的字节数组;
String str1 = "abc";
byte[] bytes = str1.getBytes();//bytes=[97,98,99]
(3)public String replace(CharSequence oldString,CharSequence newString):将所有出现的老字符串替换为新字符串;
String str1 = "How are you?";
String str2 = str1.replace("o","*");//str2="H*w are y*u?"