各自努力,最高处见!加油!
一、字符串的特点
- 字符串的内容永远不可变。 (非常重要)
- 正是因为字符串不可变,所以字符串是可以共享使用的。
- 字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组。
二、创建字符串的常见3+1种方式
三种构造方法
- public String();创建一个空白字符串,不含有任何内容。
- public String(char[ ] array);根据字符数组的内容,创建对应的字符串。
- public String(byte[ ] array);根据字节数组的内容,创建对应的字符串。
一种直接创建
String str4="ABCabc";
示例代码:
public class StringLearn {
public static void main(String[] args) {
String str1=new String();
System.out.println("第一个字符串:"+str1);
char[] charString={'A','B','C'};
String str2=new String(charString);
System.out.println("第二个字符串:"+str2);
byte[] byteString={97,98,99};
String str3=new String(byteString);
System.out.println("第三个字符串:"+str3);
String str4="ABCabc";
System.out.println("第四个字符串:"+str4);
}
}
运行结果: 
三、字符串的常量池
程序中直接写上的双引号字符串,就在字符串常量池中。
对于基本类型来说,==是进行数值的比较。 对于基本引用类型来说,==是进行地址值的比较
示例代码:
public class StringPool {
public static void main(String[] args) {
String str1="abc";
String str2="abc";
char[] charString={'a','b','c'};
String str3=new String(charString);
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str3==str2);
}
}
分析: 
四、字符串内容比较
==比较的是字符串的地址值,如需比较字符串的内容需要使用以下方法
public boolean equals(Object obj);
public boolean eaualsIgnoreCase(Object obj);
参数可以是任何对象,参数是一个字符串并且内容相同返回true,否则返回false。 注意事项:
- 任何对象都能用Object进行接收
- equals方法具有对称性,即:
a.equals(b) 和b.equals(a) 效果一样 - 如果比较的两者一个为常量字符串,一个为变量字符串,通常把常量字符串写在前面。如:
"abc".equals(str1) 好处:
String str4=null;
System.out.println("Hello".equals(str4));
System.out.println(str4.equals("Hello"));
示例代码:
public class StringEquals {
public static void main(String[] args) {
String str1="Hello";
String str2="Hello";
char[] charArray={'H','e','l','l','o'};
String str3=new String(charArray);
System.out.println(str1.equals(str2));
System.out.println(str2.equals(str1));
System.out.println(str1.equals(str3));
System.out.println("***********************");
String str5="hello";
System.out.println(str1.equals(str5));
System.out.println(str2.equalsIgnoreCase(str5));
System.out.println("***********************");
System.out.println("Hello".equals(str1));
String str4=null;
System.out.println("Hello".equals(str4));
System.out.println(str4.equals("Hello"));
}
}
五、字符串获取相关方法
1、public int length();
获取字符串当中含有的字符个数,即字符串长度。
2、public String concat(String str);
将当前字符串和参数字符串拼接成为新的字符串并返回。
3、public char charAt(int index);
获取指定索引位置的单个字符(索引从0开始)。
4、public int indexOf(String str);
查找参数字符串在本字符串当中首次出现的索引位置,没有返回-1。
六、字符串的截取方法
1、 public String substring(int index);
截取从参数位置一直到字符串末尾,返回新字符串。
2、public String substring(int begin,int end);
截取从begin开始,一直到end结束,中间的字符串。[begin,end)包括左边,不包括右边。
示例代码:
public class Substring {
public static void main(String[] args) {
String str1="HelloWorld";
String str2=str1.substring(5);
System.out.println(str1);
System.out.println(str2);
String str3=str1.substring(4,7);
System.out.println(str3);
}
}
分析: 
七、字符串转换相关方法
1、public char[ ] toCharArray();
将当前字符串拆分成字符数组作为返回值。
2、public byte[ ] getByte();
获得当前字符串底层的字节数组。
3、public String replace(CharSequence OldString,CharSequence newString);
将所有出现的老字符串替换成新的字符串,返回替换之后的结果新字符串。
示例代码:
public class StringConvert {
public static void main(String[] args) {
char[] chars="Hello".toCharArray();
System.out.println(chars[2]);
System.out.println(chars.length);
System.out.println("***********************");
byte[] bytes="abc".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
System.out.println("***********************");
String str1="How do you do?";
String str2=str1.replace("do","**");
System.out.println(str1);
System.out.println(str2);
}
}
运行结果: 
八、字符串的分割
public String[] split(String regex);
按照参数的规则,将字符串切分成为若干部分。
示例代码:
public class StringSplit {
public static void main(String[] args) {
String str1="aaa,bbbb,cccccccccc";
String[] array1=str1.split(",");
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
}
}
注意:用英文句点(.)作为分割符号时,在split()方法中的参数应为\\. (正则表达式)。
九、练习题
1、定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串。格式参照如下:[word1#word2#word3]
import java.util.ArrayList;
public class StringPractise1 {
public static String arrayToString(int[] ArrayInt){
String str=new String();
str=str.concat("[");
for (int i = 0; i < ArrayInt.length; i++) {
str=str.concat("word");
str=str+ArrayInt[i];
if(i==ArrayInt.length-1){
str=str.concat("]");
}else{
str=str.concat("#");
}
}
return str;
}
public static void main(String[] args) {
int[] ArrayInt={1,2,3};
System.out.println(arrayToString(ArrayInt));
}
}
2、输入一个字符串,统计其中字符出现的个数。种类有:大写字母,小写字母,数字,其他
import java.util.Scanner;
public class StringCount {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int countUpper=0;
int countLower=0;
int countNumber=0;
int countOther=0;
System.out.print("请输入字符串:");
String input=sc.next();
char[] arrayChar=input.toCharArray();
for (int i = 0; i < arrayChar.length; i++) {
if('A'<=arrayChar[i]&&arrayChar[i]<='Z'){
countUpper++;
}else if('a'<=arrayChar[i]&&arrayChar[i]<='z'){
countLower++;
}else if('0'<=arrayChar[i]&&arrayChar[i]<='9'){
countNumber++;
}else{
countOther++;
}
}
System.out.println("大写字母"+countUpper);
System.out.println("小写字母"+countLower);
System.out.println("数字"+countNumber);
System.out.println("其他字符"+countOther);
}
}
|