java 面试题 string 创建几个对象

VIP免费
2024-12-10 0 0 144.5KB 10 页 5.9玖币
侵权投诉
关键字: java 面试题 string 创建几个对象
作者:臧圩人(zangweiren
网址:http://zangweiren.javaeye.com
>>>转载请注明出处!<<<
我们首先来看一段代码:
Java 代码
1. String str=new String("abc");
紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个 String 对象呢?相信大家对这道题并
不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建 String 对象相关的一
JAVA 知识。
我们可以把上面这行代码分成 String str="abc"new String()四部分来看待。String str 只是定义了一个名为 str
String 类型的变量,因此它并没有创建对象;=是对变量 str 进行初始化,将某个对象的引用(或者叫句柄)
赋值给它,显然也没有创建对象;现在只剩下 new String("abc")了。那么,new String("abc")为什么又能被看
"abc"new String()呢?我们来看一下被我们调用了的 String 的构造器:
Java 代码
1. public String(String original) {
2. //other code ...
3. }
大家都知道,我们常用的创建一个类的实例(对象)的方法有以下两种:
1. 使用 new 创建对象。
2. 调用 Class 类的 newInstance 方法,利用反射机制创建对象。
我们正是使用 new 调用了 String 类的上面那个构造器方法创建了一个对象,并将它的引用赋值给了 str 变量。
时我们注意到,被调用的构造器方法接受的参数也是一个 String 对象,这个对象正是"abc"由此我们又要引入
另外一种创建 String 对象的方式的讨论——引号内包含文本。
这种方式是 String 特有的,并且它与 new 的方式存在很大区别。
Java 代码
1. String str="abc";
毫无疑问,这行代码创建了一个 String 对象。
Java 代码
1. String a="abc";
2. String b="abc";
那这里呢?答案还是一个。
Java 代码
1. String a="ab"+"cd";
再看看这里呢?答案仍是一个。有点奇怪吗?说到这里,我们就需要引入对字符串池相关知识的回顾了。
JAVA 虚拟机(JVM)中存在着一个字符串池,其中保存着很多 String 对象,并且可以被共享使用,因此它
提高了效率。由于 String 类是 final 的,它的值一经创建就不可改变,因此我们不用担心 String 对象共享而带来
程序的混乱。字符串池由 String 类维护,我们可以调用 intern()方法来访问字符串池。
我们再回头看看 String a="abc";,这行代码被执行的时候,JAVA 虚拟机首先在字符串池中查找是否已经存在
摘要:

关键字:java面试题string创建几个对象作者:臧圩人(zangweiren)网址:http://zangweiren.javaeye.com>>>转载请注明出处!

收起<<
java 面试题 string 创建几个对象.doc

共10页,预览1页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!

相关推荐

分类:计算机 价格:5.9玖币 属性:10 页 大小:144.5KB 格式:DOC 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 10
客服
关注