面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest { public static void main(String[] args ...
几个概念: 堆 heap :对象存放在堆中 当子程序结束运行时,对应的堆空间不会释放。栈 stack :基本类型和对象的应用存放在栈中 当子程序结束运行时,对应的栈空间会释放。方法区:与java堆一样,是各个线程共享的内存区域,被描述为java堆的一个逻辑部分。运行时常量池:是方法区的一部分。当常量池无法再申请到内存时会抛出OutOfMemoryError异常。String常量池就是一个运行时常量 ...
2017-03-15 19:08 0 1285 推荐指数:
面试官Q1:请问String s = new String("xyz");产生了几个对象? 对于这个Java面试题,老套路先上代码: public class StringTest { public static void main(String[] args ...
String str=new String("abc"); 我们可以把上面这行代码分成String str、=、"abc"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,因此它并没有创建对象;=是对变量str进行初始化 ...
String str = new String(“abc”) 到底创建了几个对象? 首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String("abc")了。把它拆分成"abc"和new String(),首先在字符串常量池去寻找有没有 ...
String 对象可谓再熟悉不过了,与此相关的面试题经常会引出内存性能优化的问题,本篇主要以 new String("123") 创建了几个对象为例记录。 一、你能回答正确吗 如上定义的为常量; 如上 b 为变量,为啥? 难道常量拼接常量得到的是变量 ...
String str = new String(“abc”) 到底创建了几个对象? 首先String str是定义了一个字符串变量,并未产生对象,=不产生对象,那么只有后面的new String("abc")了。把它拆分成"abc"和new String(),首先在字符串常量池去寻找有没有 ...
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识 ...
引用自这位朋友:http://blog.sina.com.cn/s/blog_6a6b14100100zn6r.html 你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以 "xyz "在java中它是一个String对象.对于string类对象来说他的对象值是不能修改 ...
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 答案应该是1个或者2个。 1个的情况:如果字符串池中已经存在了"abc"这个对象,那么直接在创建一个对象放入堆中,返回str引用。 2个的情况 ...