String str = new String("abc"),这段代码一共生成了几个String对象?为什么?

String str = new String("abc")创建了俩个对象,首先为创建一个String对象"abc",然后在调用String类的构造方法时

1 public String(String original) {
2   //other code ...
3   }

再次创建了一个对象original,并把"abc"这个对象传给original,进而赋值给str。

所以一共创建了2个对象

时间: 2024-10-12 16:23:27

String str = new String("abc"),这段代码一共生成了几个String对象?为什么?的相关文章

Algs4-1.2.5以下这段代码会打印出什么?

1.2.5以下这段代码会打印出什么?String s="Hello World";s.toUpperCase();s.subString(6,11);StdOut.println(s);答:"Hello World".String对象是不可变的--所有字符串方法都会返回一个新的String对 象(但它们不会改变参数对象的值).这段代码忽略了返回的对象并直接打印了原字符串. 要打印出"WORD",请用s=s.toUpperCase()和s=s.su

堆与栈(JAVA)——以String str="abc"的深度含义解释

栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈数据在多个线程或者多个栈之间是不可以共享的,但是在栈内部多个值相等的变量是可以指向一个地址的.堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据.但缺点是,由于要在运

String str=new String("abc")到底创建了几个对象

这句代码到底创建了几个对象?研究了好一阵,现在才能说清楚. package com.sun.test; public class Test<T> { T a; /** * @param args */ public static void main(String[] args) { String str=new String("abc"); } } 我们来看下这段简单代码的字节码: <pre name="code" class="java

经典String str = new String(&quot;abc&quot;)内存分配问题

出自:http://blog.csdn.net/ycwload/article/details/2650059 今天要找和存储管理相关的一些知识,网上搜了半天也没有找到完善的(30%的程度都不到),没办法,下载了曾经大学里的一本pdf格式的教学书,看了整整一天才算是搞明白存储管理中的一部分知识.曾几何时,我曾写过大学无用的一些小论题,觉得大学里教的东西不切合实际,理论化偏严重,总认为用理论教出来的人,总是说着牛逼,做事掉渣的人.所以,在大学里,我的学习只能说是应付考试,太多的东西都没有去深入了解

【转】String str = new String(&quot;abc&quot;)创建了多少个对象?

原帖地址:http://www.cnblogs.com/dolphin0520/p/3778589.html 这个问题在很多书籍上都有说到比如<Java程序员面试宝典>,包括很多国内大公司笔试面试题都会遇到,大部分网上流传的以及一些面试书籍上都说是2个对象,这种说法是片面的. 如果有不懂得地方可以参考这篇帖子: http://rednaxelafx.iteye.com/blog/774673/ 首先必须弄清楚创建对象的含义,创建是什么时候创建的?这段代码在运行期间会创建2个对象么?毫无疑问不可

由String str=new String(&quot;abc&quot;);引起的

话题是由如下的事情引出的: public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = "abc"; if (str1 == str2) { System.out.println("str1 == str2"); } else { System.out.println("

关于String str =new String(&quot;abc&quot;)和 String str = &quot;abc&quot;的比较

String是一个非常常用的类,应该深入的去了解String 如: String str =new String("abc") String str1 = "abc" System.out.println(str == str1) System.out.println(str.equal(str1)) 结果: false true 原因解析: Java运行环境有一个字符串池,由String类维护,执行语句String str="abc"时 1.

String str=&quot;abc&quot; 与 String str = new String(&quot;abc&quot;)

1.java运行环境有一个字符串池,由String类维护,执行语句String str="abc"时: 1.首先查看字符串池中是否存在字符串"abc",如果存在则直接将"abc"赋给str,如果不存在则先在  字 符串池中新建一个字符串"abc",然后再将其赋给str. 2.执行语句String str = new String("abc");时.不管字符串池中是否存在字符串"abc",

【Java】String str = new String(&quot;abc&quot;);问题

String str = new String("abc"); 构造方法说明:java.lang.String.String(String original) 解释:Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a cop