文档章节

String生成几个对象

anlen_gzz
 anlen_gzz
发布于 2015/11/04 11:55
字数 539
阅读 107
收藏 2
String s = new String("xyz");

创建了几个String Object?答案:两个(一个是“xyz”,一个是指向“xyz”的引用对象s)

在运行时涉及几个String实例?两个,一个是字符串字面量"xyz"所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,另一个是通过new String(String)创建并初始化的、内容与"xyz"相同的实例

涉及用户声明的几个String类型的变量?一个,就是String s。

在Java语言里,“new”表达式是负责创建实例的,其中会调用构造器去对实例做初始化;构造器自身的返回值类型是void,并不是“构造器返回了新创建的对象的引用”,而是new表达式的值是新创建的对象的引用。

对应的,在JVM里,“new”字节码指令只负责把实例创建出来(包括分配空间、设定类型、所有字段设置默认值等工作),并且把指向新创建对象的引用压到操作数栈顶。此时该引用还不能直接使用,处于未初始化状态(uninitialized);如果某方法a含有代码试图通过未初始化状态的引用来调用任何实例方法,那么方法a会通不过JVM的字节码校验,从而被JVM拒绝执行。
能对未初始化状态的引用做的唯一一种事情就是通过它调用实例构造器,在Class文件层面表现为特殊初始化方法“<init>”。实际调用的指令是invokespecial,而在实际调用前要把需要的参数按顺序压到操作数栈上。在上面的字节码例子中,压参数的指令包括dup和ldc两条,分别把隐藏参数(新创建的实例的引用,对于实例构造器来说就是“this”)与显式声明的第一个实际参数("xyz"常量的引用)压到操作数栈上。
在构造器返回之后,新创建的实例的引用就可以正常使用了。

本文转载自:http://blog.csdn.net/lonelyroamer/article/details/7899129

anlen_gzz
粉丝 3
博文 63
码字总数 13345
作品 0
广州
程序员
私信 提问
项目补丁生成工具--ibird-patch

ibird-patch,补丁工具 这是一个为了方便生成项目补丁的工具模块,主要的工作就是复制指定文件或文件夹到目标目录,复制后可以选择是否压缩打包。 安装模块 npm i ibird-patch -D 使用步骤 ...

yinfxs
2017/04/18
274
0
java基础---浅谈Java中的String、StringBuilder以及StringBuffer

浅谈Java中的String、StringBuilder以及StringBuffer 一.你了解String类吗? 想要了解一个类,最好的办法就是看这个类的实现源代码,String类的实现在 jdkxxxxxxsrcjavalangString.java 文件...

android-key
2016/12/11
11
0
Dubbo Adaptive机制详解

Dubbo提供了一种SPI的机制用于动态的加载扩展类,但是如何在运行时动态的选用哪一种扩展类来提供服务,这就需要一种机制来进行动态的匹配。Dubbo SPI中提供的Adaptive机制就为解决这个问题提...

爱宝贝丶
06/03
644
0
Java中常用的类

1.java类都是Object类的子类,所有任何Java对象都可以调用Object类的方法。 Object类提供如下常用的方法。boolean equals(Object obj):判断指定对象与该对象是否相等,此处相等时标准的两...

西红柿的眼泪
2016/07/12
31
0
Weilin Shi/svg-captcha

在node.js中生成svg格式的验证码 Translations English 什么情况下使用SVG验证码? 无法使用 google recaptcha 无法安装 c++ 模块 安装 npm install --save svg-captcha 使用方法 var svgCap...

Weilin Shi
2017/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何有效地计算JavaScript中对象的键/属性数量?

计算对象的键/属性数的最快方法是什么? 是否可以在不迭代对象的情况下执行此操作? 即不做 var count = 0;for (k in myobj) if (myobj.hasOwnProperty(k)) count++; (Firefox确实提供了一...

技术盛宴
18分钟前
2
0
百度网址安全中心拦截解除的办法分享

临近2019年底,客户的公司网站被百度网址安全中心拦截了,公司网站彻底打不开了,影响范围很大,于是通过朋友介绍找到我们SINE安全公司寻求帮忙解封,关于如何解除百度的安全拦截提示,下面就...

网站安全
29分钟前
3
0
Tomcat8源码分析-启动流程-start方法

上一篇:Tomcat8源码分析-启动流程-load方法 前面讲了启动流程中的Catalina.load,进一步调用绝大部分组建的init操作,主要完成对server.xml解析,并根据解析的结果结合设置的Rule(规则)构造...

特拉仔
38分钟前
6
0
Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍

Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示。它是对应用程序介绍的页面。 该页面源自Views文件夹中的AboutPage.x...

大学霸
44分钟前
3
0
一步一步理解Impala query profile(一)

很多Impala用户不知道如何阅读Impala query profile来了解一个查询背后正在执行的操作,从而在此基础上对查询进行调优以充分发挥查询的性能。因此我想写一篇简单的文章来分享我的经验,并希望...

九州暮云
45分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部