【Java从零开始再学习 05】java字符串

129 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。

java字符串

java字符串就是Unicode字符序列,java没有内置字符串类型但是在标准java类型库中提供了一个预定义类,叫做String。--《java核心技术卷》

字符串的储存

在java中java的设计者对字符串的储存采取的是一种共享的思维,就好像是把一些字符串放到一个池子里来去共同使用,也就是说如果复制一个字符串变量,那么他们指向的是同一个地址。注意是字符串变量

有的人可能会错误的以为使用‘+’运算符或者substring方法显现出来的字符串也是会和原来的字符共享地址。这是一个十分容易犯的错误。在java中字符串是‘不可变’的。就是说无法改变字符串中的字符。这样的话字符串如果进行变换操作的话,哪怕是变成一样的字符串副本也可能存放在字符串池中的不同位置。

字符串的变换

拼接

在java中字符串是可以进行拼接的,可以使用‘+’运算符进行字符串的拼接。值得注意的是拼接所使用的字符串和拼接后形成的字符串都要占不同的内存空间。比较浪费内存

子串

String类提供了一个方法可以可以提取出子字符串。就是substring方法。

比如:

String a = "HEllO";
String b = a.substring(0,3);

值得注意的是,在上面substring方法取出的子串是HEL。可见括号内的取值是前闭后开的,也就是0~2。我们从日常的使用一些语言的函数中可以发现,外国的程序员所设计的取值大多都是前闭后开的。所以我们在使用的时候可以通过这个方式来记忆一些函数括号的取值方式。

字符串的比较

前面说了,在java中字符串是‘不可变’的。一样的字符串副本也可能存放在字符串池中的不同位置。所以要避免‘==’运算符使用与字符串的比较。因为‘==’运算符只会比较字符串的存放地址。这样的话就会在程序的运行中大大增加了出错的可能性,切可能是间歇性出错的

可以使用equals方法来比较两个字符串是否内容相等。这样的话就避免了出现上面的错误。