在java中,String a="a";String b="a";产生了几个对象???
2个回答
展开全部
String a="a" 可能创建一个对象或者不创建对象,如果"a"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("a").如果已经存在,a直接reference to 这个String池里的对象。
String str1 = new String("ABC") 至少创建一个对象,也可能两个。因为用到new 关键字,会在heap创建一个 str1 的String 对象,它的value 是 "ABC".同时,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").
String 有一个intern() 方法,native,用来检测在String pool是否已经有这个String存在。
希望对你有用!
String str1 = new String("ABC") 至少创建一个对象,也可能两个。因为用到new 关键字,会在heap创建一个 str1 的String 对象,它的value 是 "ABC".同时,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").
String 有一个intern() 方法,native,用来检测在String pool是否已经有这个String存在。
希望对你有用!
追问
我觉得吧就创建了a和b两个引用对象,“a"是字符串常量,创不创建都不算是对象,欢迎指点..
追答
以你这条语句来看!是两个对象!只是它们都指向同一实例,因为你首先创建的对象a中的字符串是a ,b中的字符串也是a,java虚拟机为了提高效率并节约内存,对具有相同字符串序列的字符串直接量使用同一实例。
他们的指向同一对象。
String变量储存的是对String对象的引用,Stirng对象里储存的才是字符串的值。严格的讲,术语String对象和字符串值是不同的。但是在大多数情况下,他们之间的区别可以忽略。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询