前言
大家在学习Java语言时,String字符串类是一块不能缺失的学习内容,所以String是什么?该怎么用?以及它为什么是不可变的?接下来的内容将对以上问题一一解答!
一、String是什么?
String是JAVA数据类型中的一种“引用数据类型”,本身也是一个class类,可以用来定义字符串以及字符串数组。
二、使用方法
1.定义字符串
代码如下(示例):
直接通过String定义字符串,其中内容可以通过" "存入变量,也可以通过char数组将每一个字存入字符串。
public static void main(String[] args) {
String s1 = "无人扶我青云志";
String s2 = new String(
new char[]{'我','自','踏','雪','至','山','巅'},0,4
);
System.out.println(s1);
System.out.println(s2);
}
运行结果如下:
2.定义字符串数组
代码如下(示例):
通过String[ ]来定义一个字符串数组
public class Test2 {
public static void main(String[] args) {
String[] arry1 = {"泰罗","迪迦","赛文","初代","赛罗","戴拿"};
System.out.println(arry1);
System.out.println(Arrays.toString(arry1));
}
}
运行结果:
字符串数组若直接使用System.out.println(arry1)输出,最终的输出结果为:[Ljava.lang.String;@1b6d3586即String类所在的路径,以及一串由该数组地址计算出的哈希值。所以当我们输出字符数组时需借助Arrays工具类的.toString()方法,将字符串数组的内容输出。
三、不可变性
代码如下(示例):
当对字符经行修改操作后,原字符串不做更改,若要显示更改后的内容,需有一个新的字符串来重新接收修改后的值,或者重新指向自己,进行值的更改。
public static void main(String[] args) {
String s = "Hello";
System.out.println("原字符串:" + s);
// s未指向新的字符串
s.toUpperCase();//将字符串中的内容转为大写
System.out.println("s未指向新的字符串时:" + s);
//s重新指向s
s = s.toUpperCase();
System.out.println("s重新指向自己:" + s);
//s指向s1
String s1 = s.toUpperCase();
System.out.println("显示s指向的新字符串:" + s1);
}
运行结果:
根据Sting的核心代码块可以看出String类,内部的数据结构也是一个私有的char类型的数组,且有着final关键字定义,而final有着最终的意思,用final定义的“基本数据类型”无法在被修改,故而正是因为有着final关键字的存在,所以内部数组无法在修改。
总结
总的来说String是一个JAVA定义好的字符串类,其内部为一个char数组,且该数组使用private final定义的,故而在使用时无法在原字符串上修改,所有的操作都将返回一个新的字符串!
标签:String,System,println,数组,字符串,可变性,out From: https://blog.csdn.net/cyf123__/article/details/145145017