String 类的概述和使用
一,String 类的概念
-
java.lang.String类用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象加以描述,如: “abc”。
-
·该类由 final 关键字修饰,表示该类不能被继承。
-
.从 jdk1.9 开始该类的底层不使用char[] 来存储数据,而是改成 byte[] 加上编码标记,从而节约了一些空间。
-
该类描述的字符串内容是个常量不可更改,因此可以被共享使用。如︰
String str1 = “abc”; — 其中"abc"这个字符串是个常量不可改变。str1 = “123”; — 将“123" 字符串的地址赋值给变量str1。改变str1的指向并没有改变指向的内容.
二,常量池的概念
由于 String 类型描述的字符串内容是常量不可改变,因此 Java虚拟机 将首次出现的字符串放入常量池中,若后续代码中出现了相同字符串内容则直接使用池中已有的字符串对象而无需申请内存及创建对象,从而提高了性能。
三,常用的构造方法
四,常用的成员方法
- 案例题目:判断字符串"上海自来水来自海上"是否为回文并打印,所谓回文是指一个字符序列无论从左向右读还是从右向左读都是相同的句子。
程序代码如下:
public class StringJudgeTest {
public static void main(String[] args) {
// 1.创建字符串对象并打印
String str1 = new String("上海自来水来自海上");
System.out.println("str1 = " + str1); // 上海自来水来自海上
// 2.判断该字符串内容是否为回文并打印
for (int i = 0; i < str1.length()/2; i++) {
if (str1.charAt(i) != str1.charAt(str1.length()-i-1)) { // 0和8 1和7 2和6 3和5
System.out.println(str1 + "不是回文!");
return; // 仅仅是用于实现方法的结束
}
}
System.out.println(str1 + "是回文!");
}
}
- 案例题目2: 编程统计字符串"ABCD123!@#$%ab"中大写字母、小写字母、数字、其它字符的个数并打印出来
程序代码如下:
public class CountStringTest {
public static void main(String[] args) {
// 1.构造String类型的对象并初始化
String str1 = new String("ABCD123!@#$%ab");
// 2.准备一个长度为4元素类型为int类型的一维数组
int[] arr = new int[4];
// 3.拆分字符串中的每个字符并进行判断和统计
for(int i = 0; i < str1.length(); i++) {
char cv = str1.charAt(i);
// 若是大写字母,则将数组中下标为0的元素加1
if(cv >= 'A' && cv <= 'Z') {
arr[0]++;
}
// 若是小写字母,则将数组中下标为1的元素加1
else if(cv >= 'a' && cv <= 'z') {
arr[1]++;
}
// 若是数字字符,则将数组中下标为2的元素加1
else if(cv >= '0' && cv <= '9') {
arr[2]++;
}
// 若是其它字符,则将数组中下标为3的元素加1
else {
arr[3]++;
}
}
// 4.打印最终的统计结果 4 2 3 5
System.out.println("其中大写字母出现了" + arr[0]
+ "次,其中小写字母出现了" + arr[1] + "次,"
+ "其中数字字符出现了" + arr[2] + "次,"
+ "其它字符出现了" + arr[3] + "次!");
}
}
上面列举的方法我们也不必全都记住,放在上面是希望帮助大家在需要用到的时候方便查阅,至于应用实在是太多了,大家也可以根据上面提供的方法自己去想几个案例玩玩哦!