重识String

public class TestString {

public static void main(String[] args) {
/**
*  Java运行环境有一个字符串池,由String类维护。
*  执行语句String str="abc"时,首先查看字符串池中是否存在字符串"abc",
*  假如存在则直接将"abc"赋给str,
*  假如不存在则先在字符串池中新建一个字符串"abc",然后再将其赋给str。
*  执行语句String str=new String("abc")时,
*  不管字符串池中是否存在字符串"abc",
*  直接新建一个字符串"abc"(注意:新建的字符串"abc"不是在字符串池中),然后将其付给str。
*  前一语句的效率高,后一语句的效率低,因为新建字符串占用内存空间。
*  String str = new String()创建了一个空字符串,和String str=new String("")相同
*  intern()method返回字符串对象的规范化表示形式
*/


  String a = new String();
  String aa =
"";
  String aaa = new String(
"");
  String b = new String(
"asdf");
  String c = new String(
"asdf");
  String d =
"asdf";
  
  System.out.println(a == aa);
//false
  System.out.println(a == aaa);
//false
  System.out.println(a.intern() == aa.intern());
  System.out.println(a.intern() == aaa.intern());
  System.out.println(d ==
"asdf");
  System.out.println(b == c);
//false
  System.out.println(b == d);
//false
  System.out.println(b.equals(c));
//true
  System.out.println(b.equals(d));
//true
  
  b = b.intern();
  System.out.println(b == c);
//false
  System.out.println(b == d);
//true
  c = c.intern();
  System.out.println(b == c);
//true
  
  
//abc 栈
  String str1 = new String(
"abc");
  String str2 = new String(
"abc");
  
  String s1 =
"abc" ;
  String s2 =
"abc" ;
  if( s1 == s2 )
       System.out.println(
"s1,s2 refer to the same object");
  else
       System.out.println(
"trouble");
  
  String str = new String(
"jf"); // jf是接分
  str = 1+2+str+3+4;
  System.out.println(str);

}

}

lunzi   2008-11-30 00:07:32 评论:1   阅读:424   引用:0
无题 @2008-12-17 22:41:16  
谢了!  我是初学者

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog