在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难题相关推荐

  1. java oca_OCA第6部分中的Java难题

    java oca 即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构 ...

  2. java 难题_您可以避免的6种组织成长难题

    java 难题 一切都有一个季节,随着组织的发展(社区,慈善机构,公司,教堂等等),它们将面临类似的时间疾病. 这些都是失败的新兴模式,其原因不是错误,而是早期成功的结果. 在开源中,我们看到了相同的 ...

  3. OCA第2部分中的Java难题

    欢迎使用OCA的Java Puzzlers的第二部分. 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符. 在下面的类中,您可以在十进制文字中看到分隔符下划线. ...

  4. oca认证_OCA第2部分中的Java难题

    oca认证 欢迎使用OCA的Java Puzzlers的第二部分. 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符. 在下面的类中,您可以在十进制文字中看到分隔 ...

  5. oca认证_OCA第6部分中的Java难题

    oca认证 即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构造函数 ...

  6. OCA第1部分中的Java难题

    我在业余时间正在阅读Mala Gupta的Oracle认证Java SE程序员助理书,我对所学到的一些新知识感到惊讶. 有时候他们真的没有任何意义,有时候他们虽然有道理,但确实令人惊讶. 因此,在本系 ...

  7. OCA第5部分中的Java难题

    在Java Puzzlers系列的第五部分中,我们将看到与X.parseX(String s)方法相关的内容. 您可以看到我们对X.parseX()方法的期望. public class Puzzle ...

  8. OCA第4部分中的Java难题

    在Java Puzzlers的第四部分中,我们有一些与char类型有关的东西. public class Puzzler { public static void main(String[] args ...

  9. OCA第6部分中的Java难题

    即使对于新的Java开发人员,构造函数也可能不是什么大谜. 本质上,当您创建一个类的实例时,该类的构造函数就会启动. 在Java Puzzlers系列的第6部分中,我们将看到一个与构造函数有关的案例. ...

最新文章

  1. 使用Pytorch实现手写数字识别
  2. 从主数据的角度看一个零售ERP系统
  3. 理解MVC—从实例出发:基于MVC模式的简易算术计算器
  4. Linux发布环境,linux发布环境初始化脚本
  5. CentOS 7 - 最小化安装后,解决无法使用yum命令问题!!
  6. 谷歌开源下一代推荐系统模拟器:RecSim NG
  7. Fastify 2.2.0 和 1.14.5 发布,极速 Node.js Web 框架
  8. mac地址和ip地址的区别(转)
  9. android so文件不混淆_Android studio 混淆打包时如何忽略依赖库中的第三方.so文件...
  10. 僵尸矩阵 · Zombie in Matrix
  11. CentOS 7 - Securing OpenSSH(二)
  12. E盾网络验证企业版个人版离线版加密防破解易语言源码加密对接好的自绘界面3
  13. 微软全球副总裁洪小文:微软未来的三大战略
  14. mac已安装flash控件_如何在Mac上安装和更新Flash
  15. 炼数成金CUDA视频教程——第三课1——学习笔记
  16. 家常炖菜,拌海带丝,炝土豆丝
  17. 小米mini路由小米3 PandoraBox下载地址
  18. 根据人民币大写规则写的java工具类
  19. Java中的枚举类是什么?enum关键字怎么使用?
  20. python中的一个好用的文件名操作模块glob

热门文章

  1. 【LCT】洞穴勘测(luogu 2147/金牌导航 LCT-1)
  2. Java 证书pem转KeyStore、jks文件
  3. Java_io体系之CharArrayReader、CharArrayWriter简介、走进源码及示例——13
  4. Maven精选系列--私库搭建及使用
  5. Hadoop入门(一)概念与单机安装
  6. 班级日常 | 一天一瞬间!
  7. Java标识符与命名规则
  8. 遍历HashMap的四种方法
  9. 转:使用 Tkprof 分析 ORACLE 跟踪文件
  10. leetcode初级算法4.两个数组的交集 II