1、String类使用
java.lang.String 类代表字符串,此类不需要导入。
创建字符串的常见3+1种方式:
public class demo01 {
public static void main(String[] args) {
//三种构造方法:
//1.使用空参构造:创建一个空白的字符串,不含任何内容
//初始化String对象,表示空字符序列
String str1 = new String();
System.out.println("第一个字符:" + str1);
//2.根据字符数组创建字符串
char [] charArray = {'A','B','C'};
String str2 = new String(charArray);
System.out.println("第二个字符:" + str2);
//3.根据字节数组创建字符串
byte [] byteArray = {105,100,116};
String str3 = new String(byteArray);
System.out.println("第三个字符:" + str3);
// 直接创建
String str4 = "Hello";
System.out.println("第四个字符:" + str4);
}
}
执行结果:
2、常用方法
1.比较方法
public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。
代码演示:
public class demo02 {
public static void main(String[] args) {
// 1.equals:字符比较,区分字母大小写
String str1 = "Hello";
String str2 = "Hello";
char[] charArray = {'H','e','l','l','o'};
String str3 = new String(charArray);
System.out.println(str1.equals(str2));//true
System.out.println(str2.equals(str3));//true
System.out.println(str3.equals("Hello"));//true
//equal方法是区分大小写的
String str4 = "hello";
System.out.println(str1.equals(str4));//false
//空字符的时候建议放后面
String str5 = null;
System.out.println("abc".equals(str5));//推荐:false
// System.out.println(str5.equals("abc"));//空指针异常
// 2.equalsIgnoreCase:字符比较,不区分大小写
String strA = "Java";
String strB = "java";
System.out.println(strA.equals(strB));//false
System.out.println(strA.equalsIgnoreCase(strB));//true
}
}
2.获取方法
public int length() :获取字符串中含有的字符个数,即字符串长度;
public String concat (String str) :将指定的字符串连接到该字符串的末尾。
public char charAt (int index) :获取指定索引位置的单个字符。(索引从0开始)
public int indexOf (String str) :查找指定字符串在本字符串中首次出现的索引位置,如果没有返回-1值。
代码演示:
public class demo03 {
public static void main(String[] args) {
//1.获取字符串的长度
int length = "jjsdsdcfdsfdfdcsdffcssa".length();
System.out.println("该段字符串长度为:" + length);
//2.拼接字符串
String str1 = "Hello, ";
String str2 = "World !";
String str3 = str1.concat(str2);
System.out.println(str3);
//3.获取指定索引位置的单个字符
char ch = "lsjndhdnsjkemd".charAt(9);
System.out.println("该段字符串的第9号索引位置的字符是:" + ch);
//4.查找指定字符串在本字符串中首次出现的索引位置,若无则返回:-1
String original = "jknndhdsmbjsthdsmtool";
int index = original.indexOf("hdsm");
System.out.println("'hasm'在该段字符串中首次出现的为索引值:" + index);
System.out.println(original.indexOf("nihao"));//-1
}
}
执行结果:
3.截取方法
public String substring (int index):截取从参数位置一直到字符串末尾的一段,返回新的字符串;
public String substring(int begin, int end): 截取从begin开始,一直到end结束,中间的字符串;
备注:[begin,end),包含左边,不包含右边。
public class demo04 {
public static void main(String[] args) {
//截取到末尾
String str1 = "HelloWorld!";
String str2 = str1.substring(5);
System.out.println(str2);//World
//截取中间部分
String str3 = str1.substring(4,7);
System.out.println(str3);//oWo
}
}
4.转换方法
public char[] toCharArray () :将此字符串转换为字符数组。
public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为字节数组。
public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使
用replacement字符串替换。
代码演示:
public class demo05 {
public static void main(String[] args) {
//1.转换为字符数组
char[] chars = "Hello".toCharArray();
System.out.println(chars[1]);//e
System.out.println(chars.length);
//2.转换为字节数组
byte[] bytes = "Hello".getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.println(bytes[i]);
}
//3.字符串的内容替换
String str1 = "H0w d0 y0u d0?";
String str2 = str1.replace("0","o");
System.out.println(str1);
System.out.println(str2);
}
}
执行结果:
5.分割字符串的方法
public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
代码演示:
public class demo06 {
public static void main(String[] args) {
//逗号
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split("," );
for (int i = 0; i < array1.length; i++) {
System.out.println(array1[i]);
}
//空格
String str2 = "ddd eee fff";
String[] array2 = str2.split(" " );
for (int i = 0; i < array2.length; i++) {
System.out.println(array2[i]);
}
//英文句点“.”进行切分,必须写“\\.”(两个反斜杠)
String str3 = "ggg.hhh.iii";
String[] array3 = str3.split("\\." );
for (int i = 0; i < array3.length; i++) {
System.out.println(array3[i]);
}
}
}
执行结果:
6.练习
题目:
键盘输入一个字符串,并且统计其中各种字符出现的次数。
种类:大写字母、小写字母、数字、其他;
代码实现:
import java.util.Scanner;
public class demo07 {
public static void main(String[] args) {
//1.获取键盘输入的一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = sc.next();
//2.定义与初始化统计变量
int countUpper = 0;
int countLower = 0;
int countNumber = 0;
int countOther = 0;
//3.遍历字符串,进行统计
//字符串转换为字符数组
char[] charArray = input.toCharArray();
for (int i = 0; i < charArray.length; i++) {
//读取当前的单个字符
char ch = charArray[i];
if ('A' <= ch && ch <= 'Z' ){
countUpper ++;
}else if('a' <= ch && ch <='z'){
countLower ++;
}else if('0' <= ch && ch <='9'){
countNumber ++;
}else {
countOther ++;
}
}
//4.打印
System.out.println("大写字母有:" + countUpper +"个");
System.out.println("小写字母有:" + countLower +"个");
System.out.println("数字有:" + countNumber +"个");
System.out.println("其他字符有:" + countOther +"个");
}
}
运行结果: