String 类的两种实例化方式
A.直接赋值
public class Stringlei { public static void main(String args[]){ String name="张三"; System.out.println("姓名:"+name); } }
public class Stringlei { public static void main(String args[]){ String name=new String("张三"); System.out.println("姓名:"+name); } }
1.使用“==”比较
public class Stringlei { 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("str1==str3?-->"+(str1==str3));//false System.out.println("str2==str3?-->"+(str2==str3));//true } }
由此可知:"=="判断的是地址空间是否相等判断的是地址,如果想要判断内容,则必须使用String中提供的equals()方法完成:
public class Stringlei { public static void main(String args[]){ String str1="hello"; String str2=new String("hello"); String str3=str2; System.out.println("str1==str2?-->"+(str1.equals(str2)));//true System.out.println("str1==str3?-->"+(str1.equals(str3)));//true System.out.println("str2==str3?-->"+(str2.equals(str3)));//true } }两种实例化方式的区别
在String中可以使用直接赋值和new调用构造方法完成。比较两种方法。
一个字符串就是String的匿名对象
public class Stringlei { public static void main(String args[]){ String str1="hello";//实际就是将一个堆内存空间的指向给了栈内存空间 String str2="hello"; String str3="hello"; System.out.println("str1==str2?-->"+(str1==str2));//true System.out.println("str1==str3?-->"+(str1==str3));//true System.out.println("str2==str3?-->"+(str2==str3));//true } }
字符串的内容不可改变
public class Stringlei { public static void main(String args[]){ String str="hello"; str=str+" world!"; System.out.println("str = " +str); } }
原文地址:http://blog.csdn.net/u013238646/article/details/46529493