`
elvajxw
  • 浏览: 107129 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

String a = "abc"与String a = new String("abc")的区别

 
阅读更多
测试代码为:
       String str = "ab"; /*在常量池中看是否有ab这个值,要是有str就指向ab,如果没有就在常量池中创建ab,并且指向它*/
    String str1 = new String ("ab");/*这里"ab"本身就是常量池中的一个对象,而在运行时执行new String()时,将常量池中的对象复制一份放到堆中,并且把堆中的这个对象的引用交给s持有。所以这条语句就创建了2个String对象。。*/
String s1 = "a";
String s2 = "b";
String s = s1 + s2;/*因为s1,s2在编绎时无法知道确定的值所以在运行时才执行故在内存的堆中。
// 等价于 StringBuffer s = new StringBuffer();  
//       s.append(s1).append(s2);  
//     String s = s.toString();*/ String s3 = "a"+"b";/*在编译时就确定了s3=ab,所以s3指向常量池中的ab而不是指向堆。*/
System.out.println(s == str);//false
System.out.println(s.intern() == str); //true /*而当调用s.intern()方法,却可以返回s在常量池中的地址值*/
                     System.out.println(s == str1);//false//false
System.out.println(s.intern() == str1); //false
分享到:
评论
1 楼 菜鸟小光子 2012-08-06  
不知道你在讲什么~

相关推荐

    String.txt

    String a="abc";//创建字符串方式1 String b =new String("abc"); //创建字符串方式2 System.out.println(a==b); //false,内存地址不相等 String c =new String("abc"); String d =new String...

    浅析为什么a=”abc” 不等于 a=new String(“abc”)

    b=new String("abc") typeof b // object a==b //true a===b //false 但是为什么呢?看了很多书,问了好几个大神,其实自己还是稀里糊涂的。这里记录一下,备查。 在js中,区分原始资料类型和包装类型。数字、字符串...

    浅析为什么a="abc" 不等于 a=new String("abc")

    主要介绍了为什么a="abc" 不等于 a=new String("abc"),需要的朋友可以参考下

    java面试题122道基础题

    String s=new String("abc"); System.out.println(s); String s1="abc"; String s2=new String("abc"); System.out.println(s==s1);//false System.out.println(s==s2);//false System.out.println(s1==s2);...

    equals问题经典

    我想问stu1的String name="hck",这个"hck"存在常量池中,它和String s=new String("hck")有什么区别! String s1=new String("abc"); String s2=new String("abc"); s1.equals(s2);结果为true Student stu1=new ...

    跟我学Java-day13-String和StringBuilder.pdf

    String s1 = new String(chs); String s2 = new String(chs); //直接赋值的方式得到对象 String s3 = "abc"; String s4 = "abc"; //比较字符串对象地址是否相同 System.out.println(s1 == s2); System.out....

    java语言程序设计课后习题答案解析.doc

    答:首先创建一个字符串变量有两种方式: String str = new String<"abc">; String str = "abc"; 使用"= ="会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out....

    完整版Java全套入门培训课件 Java基础 06-集合(共24页).pptx

    String str1 = new String(“abc”); 有什么区别 ? String类部分方法 char charAt(int index) int length() char[] toCharArray(); int indexOf(String str); boolean endsWith(String str); String[] split...

    Java测试题2答案

     Dog d=a.new Dog("Tom",3);  d.step=25;  d.run(d);  System.out.println(d.step);  } } <br>答案::填空第1题 x=10,a=3,b=4,c=5 填空第2题 java.util 填空第3题 ...

    用C#.net编写导入导出EXCEL文件的代码

    string MyFileName = @"C:\\abc.XLS"; string MyTableName = "Sheet1"; try { string MyConnectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\abc.XLS;Extended Properties='Excel 8.0;HDR...

    new String(\"abc\")创建几个对象的解释

    java面试的疑惑剪辑 博文链接:https://z-jq1015.iteye.com/blog/248599

    C#中string用法实例详解

    在进行C#程序设计时,用的最多的莫过于string了,但有些时候由于不仔细...string strB=abc; string strC=de; Console.WriteLine(strA == (strB+strC));//true Console.WriteLine((object)strA == (object)(strB+strC

    通过查询数据库里的方法名称,来调用方法

    利用影射,通过查询数据库里的方法名称,来调用方法 SqlConnection conn = new ... asac.abc c = new asac.abc(); TextBox1.Text = c.abcd(dr); conn.Close(); // str1 = str1.Substring(0, str1.Length - 1);

    底层的技术-----反射技术

    通过new对象 String str = new String(“abc”); String不可变特性:长度、内容 Private final char value[]; 内容不是真的不可变,可以通过反射的技术进行修改 反射 reflect 类是用来描述一组对象 反射机制...

    超强JS(javascript)正则类第三版

    '/>aaaa< /a ><img src='abc.jpg' name='myimg' id='abcd' alt='abc你好' /><a href='index.php'>你好</a></body></html>"; * var reg=new RegExps(); * var img=reg.GetTag(str,'img'); * var imgObj=...

    java题目(试卷)和答案

    A、 ArrayList myList=new Object(); B、 List myList=new ArrayList(); C、 ArrayList myList=new List(); D、 List myList=new List(); 2.paint()方法使用哪种类型的参数? A、 Graphics B、 ...

    String对象的创建与比较

    对象的创建方式  1、new创建  堆;至少创建一个对象,也可能两...  String str1 = new String("ABC");  String str2 = new String("ABC");  System.out.println(str1 == str2); // 比较对象的指针,false  

    java字符串操作大全

    String a = "53c015"; //Integer.parseInt(s, radix) radix设置为10,表示10进制,16表示16进制啦 int i = Integer.parseInt(a, 16); 1、length() 字符串的长度  例:char chars[]={'a','b'.'c'};  String s=...

    超强JS(javascript)正则类

    */ //=================================// /* GetTagName(str,new Array(),0)*/ //=================================// /* getElememtById(string,id); */ //=================================//...

    authorware登录

    SQLstring12:="select 选项A from ceshi where 题号="^no^";" SQLstring13:="select 选项B from ceshi where 题号="^no^";" SQLstring14:="select 选项C from ceshi where 题号="^no^";" SQLstring15:="select 选项D...

Global site tag (gtag.js) - Google Analytics