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?"