目录
简单了解一下字符串
字符串在java中, 是非常常用的一个引用的数据类型, 在java中没有专门提供一个字符串类型, 而是提供一个与之对应的类, 这个类可以和基本数据类型所对应的包装类进行横向对比. 例如, String类和Integer类里面都提供了可以供我们管理这些数据的方法, 例如String类里面有toString, toUppercase. toCharArray, 等等方法, Integer里面有parseInt, intValue, 等方法
今天我们主要了解一下String类的情况.
String类里面是如何存放字符串的?
private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0
原来里面是有一个value的字符数组, 一个字符串被分为一个一个字母, 存放在这个字符数组里面.
String的不可变性
为什么String类是不可变的?? 因为存放这个字符串的字符数字是使用private修饰的, 也就是说, 在这个包外面, 无法对这个value进行直接的访问(外界是看不到这个value字符数组的), 同时这个value数组被final修饰, 代表他不能被修改指向, 同时包里面也没有提供方法来修改这个字符数组里面的内容, 所以说无论怎么样这个字符数组都是不可变的. 一旦创建, 就不能改变.
这样子设计有很多好处, 比如可以缓存hashcode, 也可以使用更加安全和便利.
下面来介绍一下字符串拼接的四种常用方法
字符串拼接的方法
1.使用+拼接字符串
public class Test {
public static void main(String[] args) {
String a = "hello";
String b = "world";
String c = a + b;
System.out.println(c);
}
}
这里需要特别说明的一点事, 这里的加法 是java中提供的一个语法糖, 这个语法糖就例如基础类型对应的包装类的自动装拆箱一样.
什么是语法糖? 语法糖, 也被翻译成为糖衣语法, 是由英国计算机科学家, 彼得兰丁发明的一个术语, 这种语法对语言的功能没有影响, 但是更方便程序员使用, 语法糖让程序更加简洁, 有更高的可读性.
此外, +号除了可以拼接字符串和字符串, 还可以拼接其他基本数据类型, 例如Boolean类型, 如下:
public class Test {
public static void main(String[] args) {
String a = "hello ";
boolean b = false;
String c = a + b;
System.out.println(c);
}
}
2. 使用concat
除了使用+号之外, 还可以使用String类中提供的方法, concat来拼接字符串, 例如
public class Test {
public static void main(String[] args) {
String a = "hello ";
String b = "world";
String c = a.concat(b);
System.out.println(c);
}
}