Java字符串
如何定义一个字符串
String类位于“java.lang”包中,具有丰富的方法。
定义一个字符串,通常为以下二种:
String s1 = "hello word!";
String s2 = new String("Hello !");
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
第一种,s1直接指向“hello word!”常量实例中。
当使用String s1=“hello word!”,这种方式时,先去内存的Heap中找是否存在"hello word!“这个字符串,若存在,则将地址引用。若不存在则创建。
第二种,新建一个String实例化,s2指向String实例化(new String(“Hello !”))
当使用String s2=new String(“Hello !”);时,不管事先是否存在"Hello !”,每次都会创建其新的对象。
关于String类
1、创建一个字符串对象之后,将不能构成字符串的字符。可以理解为字符串被创建后,内存不会改变,更改字符串只会将其从一个地址引入另一个地址,原始字符串将会变为垃圾,等待自动回收。
2、引用相同的变量赋值,不会创建新的内存地址,而是将两个字符串的地址指向同一个内存地址。
3、创建两个相同的字符串也不会在堆中创建多个内存空间,而是指向同一片内存空间。
字符串的比较
注意==与equals的区别。==用于比较两个字符串的地址是否一致,而equal用于比较两个字符串的内容是否一致。
同时,当使用Stirng类进行字符串的声明时,两个相同的字符串将指向不同的内存地址,不占用同一个内存空间。
String str3 = new String("HELLO");
String str4 = new String("HELLO");
if (str3 == str4) {
System.out.println("str3和str4指向同一字符串"); }
else {
System.out.println("str3和str4分别指向不同字符串"); }
if (str3.equals(str4)) {
System.out.println("str3和str4的内容完全相同");}
else {
System.out.println("str3和str4的内容不相同"); }
String类的构造方法
String类的构造方法共有13种重载方式,以下是常用的几个:
方法 | 说明 |
---|---|
String() | 创建一个空的字符串 |
String(String value) | 将新建一个字符串作为指定字符串的副本 |
String(char[] value) | 将根据字符数组构造一个新的字符串 |
String(byte[] tytes) | 将通过转换指定的字节数组新建一个字符串 |
String str1 = "咩都有";
//利用一个字符串常量值创建新的字符串
String str2 = new String("有钱,就任性");
//利用一个字符型数组创建新的字符串
char[] aryChar = {'a','b','c','d'};
String str3 = new String(aryChar);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
String类的方法
常用的String方法为:
方法 | 说明 |
---|---|
length | 返回字符串长度 |
equals(object) | 比较字符串内容是否相等 |
equalsIgnoreCase() | 比较字符串内容是否相等,忽略大小写 |
toLowerCase() | 创建新串,并将原串改为小写 |
toUpperCase() | 创建新串,并将原串改为大写 |
concat(String) | 字符串连接 |
split() | 拆分字符串 |
indexOf(int ch),indexOf(String value) | 搜索第一个出现的字符ch或字符串value |
lastIndexOf(int ch),lastIndexOf(String value) | 搜索最后一个出现的字符ch或字符串value |
substring(int index) | 提取从位置索引开始的字符串部分 |
substring(int start,int end) | 提前从start和end直接的字符串部分 |
trim() | 返回一个前后不含任何空格的调用字符串的副本 |
关于StringBuffer
StringBuffer类是String类的对等类,它可以改变字符串的值,表示可以增加和可编写字符的可变序列,是String的增加版,通常用于需要频繁操作的字符串。主要的方法为:
方法 | 说明 |
---|---|
toString() | 转换为String类型 |
append() | 连接两个字符串 |
insert | 插入字符串 |