共计 1312 个字符,预计需要花费 4 分钟才能阅读完成。
String, 根本数据类型和汇合
一.String 和 Stringbuffer 类
1.String 的申明
string s1="abc";
string s2 = new String("abc");
2.String 内容的比拟
在 String 中,比拟两个字符串是否雷同,不能应用 ==,应应用 equals()办法。
1.“==”办法:比拟的是变量 (栈) 内存中寄存的对象的 (堆) 内存地址,用来判断两个对象的地址是否雷同
String str1 = "zjd";// 间接赋值
String str2 = new String ("zjd");// 通过 new 赋值
String str3 = str2;
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3));
起因:
- 每一个 String 对象的内存存储其实都是在堆内存中。
- “==” 是进行数值比拟的,因为 str1 和 str2 的在堆内存的地址不一样所以:str1 和 str2 不相等–>false
2.“equals()” 办法:比拟的是两个对象的内容是否相等
String str1 = "zjd";// 间接赋值
String str2 = new String ("zjd");// 通过 new 赋值
String str3 = str2;
System.out.println("str1 equals str2-->"+(str1.equals(str2)));
System.out.println("str1 equals str3-->"+(str1.equals(str3)));
System.out.println("str2 equals str3-->"+(str2.equals(str3)));
起因:因为 equals()办法的作用是将内容进行比拟,所以此处返回的后果都为 true。
3. 两种实例化对象的区别
一个字符串就是一个 String 类中的匿名对象,匿名对象就是曾经开拓了堆内存空间能够间接应用的对象。
1. 间接赋值
String str1 = "zjd";// 间接赋值
String str2 = "zjd";
String str3 = "zjd";
System.out.println("str1 == str2-->"+(str1 == str2));
System.out.println("str1 == str3-->"+(str1 == str3));
System.out.println("str2 == str3-->"+(str2 == str3);
起因:实际上就是把一个在堆内存中开拓好的空间使用权给 str1,并且如果一个字符串曾经被一个名称所援用,则当前再有雷同的名称的字符串申明时,就不会从新开拓新地址了
2. 通过 new 的形式实例化
String str1 = new String("zjd");
4. 一旦被初始化,字符串内容便不能够被扭转
String str1 = "zjd";
str1 =str1+"zka";
System.out.println(str1);
后果:zjdzka
正文完