String是一个很普通的类 - Java那些事儿
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了String是一个很普通的类 - Java那些事儿,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1573字,纯文字阅读大概需要3分钟。
内容图文
![String是一个很普通的类 - Java那些事儿](/upload/InfoBanner/zyjiaocheng/620/71005a6b5e1746eca15e579de91665b5.jpg)
上一篇我们讲了Java中的数组,其实是为本章的内容做准备的,String这个类是我们在写Java代码中用得最多的一个类,没有之一,今天我们就讲讲它,我们打开String这个类的源码:
声明了一个char[]数组,变量名value,声明了一个int类型的变量hash(hash的作用我们后续会讲),话不多说,上代码:
我们点开构造函数看一下:
多年以前,我看到这段代码时我是懵逼的,没错,我现正在准备构造一个String的对象,那original这个对象又是从何而来?是什么时候构造的呢?
在Java中,当值被双引号引起来(如本示例中的"abc"),JVM会去先检查看一看常量池里有没有abc这个对象,如果没有,把abc初始化为对象放入常量池,如果有,直接返回常量池内容。下图是预先处理String str = new String("abc")的参数"abc"
接下来处理new关键字,在堆内存中开辟空间,由于hash这个字段是int类型的,成员变量初始化默认值为0。
处理构造函数逻辑,hash是值类型,直接赋值,数组为引用类型,直接指向地址。
?继续上图
最后执行String str2 = new String("abc"),结果如下图:
利用IDE的debug功能看一下,char数组里已经有了'a','b','c'这些值。
下面我们来看一下String这个类下面这些常用的API是如何实现的:
很简单对吧,可怕的不是源码难读,而是不想,害怕去读源码的心。如果文章得到了你的认可,请为我的文章点赞,你的赞同是我继续下去的动力。
注:文中的图,只是画对象在JVM中大致的样子,以方便大家理解。如果大家想更深层次的研究JVM,推荐大家看深入理解java虚拟机一书。
如果喜欢本系列文章,请为我点赞或顺手分享,您的支持是我继续下去的动力,您也可以在评论区留言想了解的内容,有机会本专栏会做讲解,最后别忘了关注一下我。
内容总结
以上是互联网集市为您收集整理的String是一个很普通的类 - Java那些事儿全部内容,希望文章能够帮你解决String是一个很普通的类 - Java那些事儿所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。