对于如下代码: package reviewTest; /** * @ClassName: StringTest * @Description: 测试String的字符串相加优化 * @author Kingram * @date 2018年7月27日 * */ public class StringTest { public static void main(String[] args) { String s1 = "a"; String s2 = s1 + "b"…
String str=new String("aaa"); 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个.由于 new String("aaa")相当于"aaa"与一个就是创建出来的放在堆时原实例对象,而另一个就是放在常量池中的 "aaa" 对象,当然这里的str本身只是一个引用,放在栈里,用来指向堆中创建出来的对象. 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class…
今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了..网上的争论不少,有的说是两个,答案应该是:两个或一个理由解释如下:都了解java 的字符串常量缓冲区(字符串池,字符串常量池),如果代码是这样的: String str2 = new String("abc"); 并且 abc 字符串之前没有用过,这毫无疑问创建了两个对象,一个是new  String 创建的一个新的对…
1 最近几个同学面试的时候出现了这样一个问题 刚听到这个题目的时候的确是不知所措: 经过网上的查找和自己的理解来解释一下这个题目的答案 答案是: 为什么呢??? 1 实现我们都知道创建实例有两种方法 (1)一是用new来创建 (2)二是同过放射实例来创建,(classs.newInstances) 所以这就很好的解释了一种情况了 第二 对于String 类型的还有一种文本创建方式,就是下面我所说的这种 String a="abc"; 因为String 是一个final类,JVM虚拟机在…
答案是两个,现在我们具体的说一下: String s = new String("abc");一.我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,s只是一个引用变量.所有的字符串都是String对象,由于字符串文字的大量使用,java中为了节省时间,在编译阶段,会把字符串文字放在文字池中,文字池的一个好处就是可以把相同的字符串合并,占用一个空间,我们可以用==判断一下两个引用变量是否指向了一个地址即一个对象. public class Demo02 { public…
原文链接点这里,感谢博主分享 答案是两个,现在我们具体的说一下: String s = new String("abc"); 首先我们要明白两个概念,引用变量和对象,对象一般通过new在堆中创建,s只是一个引用变量. 所有的字符串都是String对象,由于字符串文字的大量使用,java中为了节省时间,在编译阶段,会把字符串文字放在文字池中,文字池的一个好处就是可以把相同的字符串合并,占用一个空间,我们可以用==判断一下两个引用变量是否指向了一个地址即一个对象 public class …
数组没有length()这个方法,有length的属性.String有有length()这个方法. int a[]; a.length;//返回a的长度 String s; s.length();//返回s的长度 java中数组没有length()方法,求数组的长度可以使用数组的length属性. int[] arr={1,2,3,4,5};int length1=arr.length;//求数组的长度 String 有length()方法,用来求字符串的长度 String str="Hello…
两个或一个都有可能 . ”xyz”对应一个对象,这个对象放在字符串常量池,常量”xyz”不管出现多少遍,都是常量池中的那一个. new String每写一遍,就创建一个新的对象,它使用常量”xyz”对象的内容来创建出一个新String对象. 如果常量池中已经存在’xyz’,那么这里就不会创建”xyz”了,直接从常量池拿,这时创建了一个对象: 如果常量池中不存在"xyz",那么此时就会创建一个对象并放入常量池,这种情况它创建两个对象.…
String 对象可谓再熟悉不过了,与此相关的面试题经常会引出内存性能优化的问题,本篇主要以 new String("123") 创建了几个对象为例记录. 一.你能回答正确吗 String a = "123"; 如上定义的为常量: String b = a +"456"; 如上 b 为变量,为啥? 难道常量拼接常量得到的是变量吗? 不是,常量拼接常量得到的依旧是常量. 但是此时将 a 作为引用,a 已经不再是常量了,是变量了,所以得到的 b 自然…
  String str=new String("aaa"); <span style="font-size:14px;">String str=new String("aaa");</span> 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个.由于new String("aaa")相当于"aaa"与一个就是创建出来的放在堆时原实例对象,而另一个就是放在常量池中的…