您的位置:首页 > 其它

2016年1月16日 关于String类的学习

2016-03-15 21:29 274 查看
关于String的知识
public class StringDemo02 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 == str2
-->"+(str1==str2));//false
System.out.println("str2 == str3
-->"+(str2==str3));//true
System.out.println("str1 == str3
-->"+(str1==str3));//false
}
}
通过以上代码的比较,结果发现str1和str2所存储的字一样时,==却显示false是因为
==比较的是内存的地址,str1与str2开辟不同的空间,所以地址不同。
所以使用String的方法equals(equal 相等)
public class StringDemo03 {
public static void main(String args[]){
String str1="hello";//通过直接复制的方式
String str2=new String("hello");//通过构造方法
String str3=str2;
System.out.println("str1 equals str2
-->"+str1.equals(str2));
System.out.println("str2 equals str3
-->"+str2.equals(str3));
System.out.println("str1 equals str3
-->"+str1.equals(str3));
}
}
运行结果如下:
str1 equals str2 -->true
str2 equals str3 -->true
str1 equals str3 -->true
此时才真正的比较字符串的内容

public class StringDemo04 {
public static void main(String args[]){
String str1="hello";//通过直接赋值的方式
String str2="hello";//通过直接赋值的方式
String str3="hello";//通过直接赋值的方式
System.out.println("str1 == str2 -->"+(str1==str2));
System.out.println("str2 == str3 -->"+(str2==str3));
System.out.println("str1 == str3 -->"+(str1==str3));
}
}
运行结果:
str1 == str2 -->true
str2 == str3 -->true
str1 == str3 -->true
直接赋值的方法,会把字符保存在字符池中,当出现重复的字符时,不用申请新的堆内存空间。

public class StringDemo06 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
str +=" world";
System.out.println(str);
}
}
运行结果:
hello world

public class StringDemo07 {
public static void main(String args[]){
String str="hello";//通过直接赋值的方式
for(int i=0;i<100;i++){
str +=i;
}
System.out.println(str);
}
}
以上操作会不断断开已有的连接,并指向新链接100次。不要使用此种方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: