OCA第7部分的Java难题
在OCA系列的Java Puzzlers的这一部分中,我将展示定义字符串的多种方法以及与此相关的潜在惊喜。 创建字符串的两种基本类型是使用new关键字和仅使用字符串文字来创建。
String strWithNew = new String( "hey" ); String strWithLiteral = "ho" ;
由于经常使用字符串,因此JVM使用字符串池并使用其中的值,因此不必一次又一次为相同的值创建新对象。 因此,看到相同字符串文字的对象地址相同就不足为奇了。
public class Puzzler { public static void main(String[] args) { String s1 = "myString" ; String s2 = "myString" ; System.out.println(s1 == s2); // true } }
好吧,这应该也一样吧?
public class Puzzler { public static void main(String[] args) { String s1 = new String( "myString" ); String s2 = new String( "myString" ); System.out.println(s1 == s2); } }
并不是的。 这将打印“ false”。 因此,如果我使用文字“ myString”创建一个新字符串,则将其放置在字符串池中。 如果我使用new关键字创建它,则不会在池中搜索它,并且在创建它时,也不会将其放在字符串池中。
public class Puzzler { public static void main(String[] args) { String s1 = new String( "myString" ); String s2 = new String( "myString" ); String s3 = "myString" ; String s4 = "myString" ; System.out.println(s1 == s2); System.out.println(s2 == s3); System.out.println(s3 == s4); System.out.println(s1 == s4); } }
我希望你能猜出上面发生了什么。 s1创建一个新字符串,并且不将其放入池中,s2执行相同的操作。 s3看一看字符串池,看不到myString并将其创建并放置在池中。 s4说:“好吧,它在游泳池里”。 因此,如果我们计算创建的字符串数,则为3,如果计算池中放置的内容,则为1(myString)。 false,false,true,false是打印到控制台的内容。
翻译自: https://www.javacodegeeks.com/2020/05/java-puzzlers-from-oca-part-7.html
OCA第7部分的Java难题相关推荐
- java oca_OCA第6部分中的Java难题
java oca 即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构 ...
- java 难题_您可以避免的6种组织成长难题
java 难题 一切都有一个季节,随着组织的发展(社区,慈善机构,公司,教堂等等),它们将面临类似的时间疾病. 这些都是失败的新兴模式,其原因不是错误,而是早期成功的结果. 在开源中,我们看到了相同的 ...
- OCA第2部分中的Java难题
欢迎使用OCA的Java Puzzlers的第二部分. 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符. 在下面的类中,您可以在十进制文字中看到分隔符下划线. ...
- oca认证_OCA第2部分中的Java难题
oca认证 欢迎使用OCA的Java Puzzlers的第二部分. 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符. 在下面的类中,您可以在十进制文字中看到分隔 ...
- oca认证_OCA第6部分中的Java难题
oca认证 即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构造函数 ...
- OCA第1部分中的Java难题
我在业余时间正在阅读Mala Gupta的Oracle认证Java SE程序员助理书,我对所学到的一些新知识感到惊讶. 有时候他们真的没有任何意义,有时候他们虽然有道理,但确实令人惊讶. 因此,在本系 ...
- OCA第5部分中的Java难题
在Java Puzzlers系列的第五部分中,我们将看到与X.parseX(String s)方法相关的内容. 您可以看到我们对X.parseX()方法的期望. public class Puzzle ...
- OCA第4部分中的Java难题
在Java Puzzlers的第四部分中,我们有一些与char类型有关的东西. public class Puzzler { public static void main(String[] args ...
- OCA第6部分中的Java难题
即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构造函数有关的案例. ...
最新文章
- 使用Pytorch实现手写数字识别
- 从主数据的角度看一个零售ERP系统
- 理解MVC—从实例出发:基于MVC模式的简易算术计算器
- Linux发布环境,linux发布环境初始化脚本
- CentOS 7 - 最小化安装后,解决无法使用yum命令问题!!
- 谷歌开源下一代推荐系统模拟器:RecSim NG
- Fastify 2.2.0 和 1.14.5 发布,极速 Node.js Web 框架
- mac地址和ip地址的区别(转)
- android so文件不混淆_Android studio 混淆打包时如何忽略依赖库中的第三方.so文件...
- 僵尸矩阵 · Zombie in Matrix
- CentOS 7 - Securing OpenSSH(二)
- E盾网络验证企业版个人版离线版加密防破解易语言源码加密对接好的自绘界面3
- 微软全球副总裁洪小文:微软未来的三大战略
- mac已安装flash控件_如何在Mac上安装和更新Flash
- 炼数成金CUDA视频教程——第三课1——学习笔记
- 家常炖菜,拌海带丝,炝土豆丝
- 小米mini路由小米3 PandoraBox下载地址
- 根据人民币大写规则写的java工具类
- Java中的枚举类是什么?enum关键字怎么使用?
- python中的一个好用的文件名操作模块glob