2 hb960429 hb960429 于 2017.09.12 14:49 提问

关于string创建多少个对象问题

该方程式创建了多少个对象实例,不明白怎么计算,有朋友说是创建了7个

8个回答

hb960429
hb960429   2017.09.12 15:03

方程式是:string s = "a"+"b"+"c"+"d"

bingyan_wxl
bingyan_wxl   2017.09.12 15:06

在java里面是创建了1个

u014034934
u014034934   2017.09.12 15:12

和string s = "abcd"一样

qq_38014429
qq_38014429   2017.09.12 15:14

创建了一个
String s = "a" + "b" + "c" + "d" + "e";
赋值符号右边的"a"、"b"、"c"、"d"、"e"都是常量
对于常量,编译时就直接存储它们的字面值而不是它们的引用
在编译时就直接讲它们连接的结果提取出来变成了"abcde"
该语句在class文件中就相当于String s = "abcde"
然后当JVM执行到这一句的时候, 就在String pool里找
如果没有这个字符串,就会产生一个

QMNHHH
QMNHHH   2017.09.12 15:21

String s = "a" + "b" + "c" + "d" ;
执行这一句时会生成一个字符串为:“abcd”

liu1823612484
liu1823612484   2017.09.12 15:46

创建了一个,一个对象S;

hb960429
hb960429 不是创建一个对象
4 个月之前 回复
quanwairen1
quanwairen1   2017.09.12 16:52

一个;
个人理解为它相当于字符串合并成一个字符串相当于(String s1= "abc");
如下例子看到它hashCode码值一样的
public class T {
static String s= "a"+"b"+"c";
static String s1= "abc";

public static void main(String[] args){
System.out.println(s.hashCode());
System.out.println(s1.hashCode());
}

}

hb960429
hb960429 这个运行的结果是什么
4 个月之前 回复
m0_37872098
m0_37872098   2017.10.02 22:41

String s = "a"+"b"+"c"+"d" ;是java下的用法。
在执行过程中:**会有2个**,一个是s ,另一个是 "abcd" 。因为a b c d 均在常量池,会优化为"abcd"。

在C/C++中,语法错误。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
String 创建几个对象问题(详解-不容错过)
String 创建几个对象问题(详解)
String 拼接时对象创建的个数
无聊,想看看java基础源码.因为很多知识大都限制怎么样使用.很少看源码算是人云亦云  1.hello一样的代码如:  public class Test1{ public static void main(String[] args) { String name=new String("adc"); } }  哈哈,简单(无数个cnm略
关于String创建了多少个对象
String创建对象时系统会自动创建一个字符串缓冲池,在你进行如String str = "a";之类的操作时,系统会先在缓冲池中寻找有没有,如果没有就会创建一个。String s1 = "abc"; String s2 = "abc";创建了一个对象 由于s1创建时”abc”字符串已经被放入缓冲池,所以当s2创建的时候是不会产生一个新的对象,他们的引用都会是同一个。String s1 = "ab
String str=new String("abc")到底创建了几个对象
String到底创建了几个对象的自己的理解。(字节码层面上)
String s="a"+"b"+"c"+"d";一共创建了几个对象
只创建了一个String对象 String s1 = "a"; String s2 = s1 + "b"; String s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab"); 第一条语句打印的结果为false,第二条语句打印的结果为true 这说明javac编译可以对字符串常
String a="123"创建对象个数问题
String类型对象创建个数,我总结为一下几种情况(均不考虑字符串在常量池中已存在的情况): 1 String a="123"; 创建了1个对象 jvm在编译阶段会判断常量池中是否有 "123" 这个常量对象如果有,a直接指向这个常量的引用,如果没有会在常量池里创建这个常量对象。 2  String a=new String("123"); 创建了2个对象 同情况1,jvm编译阶段判断
String s=new String("abc")产生了几个对象?[权威面试版]
以下总结是我逛论坛 将零零碎碎的知识整理起来,方便自己记忆和阅读,顺便分享出来给大家学习。 若 String s=new String("abc"); 为第一句代码 则会产生两个对象 一个在对象池中 一个在堆中 若 String s=new String("abc"); 或 String s = "abc"; 出现过 则只产生一个对象 此对象在堆中 管他
java中String到底创建了几个对象
<br />1.String a = new String("1"+"2")共建了几个对象<br />我相信,绝对是个经典兼考倒一堆人的题目。经典,Java的面、笔试上都会有,可又总是有人会犯晕。呵呵!<br />看构造器里面("1"+"2"),这个是在编译期就已经做了处理,即代表一个字符串:"12"。<br />当使用new的方法创建字符串时,注意这个”new“,就表示直接开辟了内存空间,VM在对其对象的值”12“;然后再把值放到VM的常量池中,并引用其本身。所以就创建了两个对象。<br /><br />
这条语句一共创建了多少个对象 String s = "a"+"b"+"c"+"d";
javac 编译可以对 字符串常量直接相加的表达式进行优化, 不必要等到运行期去进行加法运算处理, 而是在编 译时去掉其中的加号, 直接将其编译成一个这些常量相连的结果。 题目中的第一行代码被编译器在编译时优化后, 相当于直接定义了一个”abcd”的字符串, 所以, 上面的代码应该只创建了一个 String 对象。
String对象创建问题
String对象的创建问题,分为:编译期和执行期 详细的讲解String对象创建问题