创建了几个对象 StringBuffer a = "";a+="this"一共创建了几个对象关于这样的问题怎么做呢怎么理解呢请各位给我指点迷津 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 StringBuffer a = ""; 创建了一个对象,a+="this" 对这个对象进行了修改。 啊???????????????StringBuffer,你问错问题了吧?StringBuffer不是String,上面那两行都是错的,根本无法编译。 StringBuffer 楼主得好好看看了 StringBuffer a = ""; 创建了一个对象 a+="this" 错误了 不能这样写a.append("this") 我错了StringBuffer a = new StringBuffer(); 这才创建了一个对象 a+="this" 错误了 不能这样写 a.append("this") StringBuffer只能通过append(String str)方法追加字符串.而不能用"+"而且要创建StringBuffer对象只有new一个实例,而不能像定义String那样直接赋值 String a = "";a+="this";应该是这样的那么这个是创建了几个对象呢 两个。 都在常量池里,一个是"",一个是"this".a+="this"之后,值是还是"this",指向常量池中的"this", 不会增加新的对象。 答:一个老问题了。那就再回答一次吧。String a = ""; a+="this"; 在编译时,编译程序其实是按如下代码来编译的:String s = ""; s = (new StringBuilder()).append(s).append( "this" ).toString();看上边三个红色的部分,因而是三个对象。 哈,果然有玄机,14楼正解。 我误导了。见字节码:0 ldc <String "abc"> [16]2 astore_1 [a]3 new java.lang.StringBuilder [18]6 dup7 aload_1 [a]8 invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [20]11 invokespecial java.lang.StringBuilder(java.lang.String) [26]14 ldc <String "this"> [29]16 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [30]19 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [34]22 astore_1 [a] 大哥new StringBuffer()不是对象么?? 还是多看看StringBuffer和String的区别吧。什么是类,什么是属性 编译时,创建“”和“this”两个对象。运行时,创建一个对象。总共3个。 StringBuffer现在可以看成是一个工具类,里面提供了你想要的一些对字符串的基本操作String可以简单理解成是个复杂数据类型当你想声明一个类的实例时必须要初始化变量这就是为什么8种基本数据类型也要有自己的对应类了!你所需要明白的就是,什么是一个类,类中都可以写什么,什么是类属性,什么是对象属性,什么是类方法,什么是对象方法。类方法与对象方法的区别。用最最最简单的话来说你没有OOP思想! 答:兄弟,我们只是回答:这两句话中关于String的对象有几个?(三个),若算上StringBuffer,(按这种说法,那就多了去了),因为还有JVM启动运行时所创建的至少有几十个对象吧。。这些都算吗? 看样子 以后 该 研究研究 think in java 了 apache.commons.io.FileUtils怎么获得目录及所有子目录列表 问几个常见的面试问题,大家发表一下意见! 如何验证jTextField里面是不是数字 vector 与 ArrayList 新手学J2EE较好的切入点? 关于FILE类 线程的问题,请各位帮助 关于this的简单的问题!!!!!!!!! jbuilder问题 求助帖。 求教java高手! 问个GUI的问题
a+="this" 错误了 不能这样写
a.append("this")
我错了
StringBuffer a = new StringBuffer(); 这才创建了一个对象
a+="this" 错误了 不能这样写
a.append("this")
而不能用"+"
而且要创建StringBuffer对象只有new一个实例,而不能像定义String那样直接赋值
a+="this";
应该是这样的那么这个是创建了几个对象呢
两个。 都在常量池里,一个是"",一个是"this".
a+="this"之后,值是还是"this",指向常量池中的"this", 不会增加新的对象。
a+="this"; 在编译时,编译程序其实是按如下代码来编译的:String s = "";
s = (new StringBuilder()).append(s).append( "this" ).toString();看上边三个红色的部分,因而是三个对象。
2 astore_1 [a]
3 new java.lang.StringBuilder [18]
6 dup
7 aload_1 [a]
8 invokestatic java.lang.String.valueOf(java.lang.Object) : java.lang.String [20]
11 invokespecial java.lang.StringBuilder(java.lang.String) [26]
14 ldc <String "this"> [29]
16 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [30]
19 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [34]
22 astore_1 [a]
大哥
new StringBuffer()不是对象么??
运行时,创建一个对象。总共3个。
String可以简单理解成是个复杂数据类型
当你想声明一个类的实例时必须要初始化变量
这就是为什么8种基本数据类型也要有自己的对应类了!
你所需要明白的就是,什么是一个类,类中都可以写什么,什么是类属性,什么是对象属性,什么是类方法,什么是对象方法。
类方法与对象方法的区别。用最最最简单的话来说你没有OOP思想!