首先声明,有晕车经历的司机请自备药物,String也可能让你怀疑人生!

第一道 开胃菜

请听题!第一道题:

        String hello="hello world!";String hello1=new String("hello world!");System.out.println(hello==hello1);System.out.println(hello.equals(hello1));

提示: ==是比较两个对象引用是否正好引用到了相同的对象。

那么公布答案吧

falsetrue

旁白:

  1. new String是新建对象,和字符串常量对象不是同一个。
  2. equal是比较值

肯定不过瘾吧,那就再来。

第二道 汤

        String hello="hello world!";String hello2="hello world!";System.out.println(hello==hello2);System.out.println(hello.equals(hello2));

扫地僧看不下去了

truetrue

旁边:

两个String类型的常量表达式,如果标明的是相同的字符序列,那么它们就用相同的对象引用来表示。

第三道 副菜

        String hello="hello world!";    String append="hello"+" world!";System.out.println(hello==append);System.out.println(hello.equals(append));

那就公布答案

truetrue

旁边:

两个String类型的常量表达式,如果标明的是相同的字符序列,那么它们就用相同的对象引用来表示。

第四道 主菜

        final String pig = "length: 10";final String dog = "length: " + pig.length();System.out.println(pig==dog);System.out.println(pig.equals(dog));

不敢说了,还是公布答案吧

falsetrue

官方资料中有这么一段话:

Strings concatenated from constant expressions (§15.28) are computed at compile time and then treated as if they were literals.Strings computed by concatenation at run time are newly created and therefore distinct.

翻译一下:

>通过常量表达式运算得到的字符串是在编译时计算得出的,并且之后会将其当作字符串常量对待.

>在运行时通过连接运算得到的字符串是新创建的,因此要区别对待。

看黑色重点标注。

第五道 蔬菜类菜肴

        final String pig = "length: 10";final String dog = ("length: " + pig.length()).intern();System.out.println(pig==dog);System.out.println(pig.equals(dog));

先看答案吧

truetrue

旁边:

可以通过显示的限定运算得到的字符串为字符串常量,String.intern方法可以"限定"

第六道 甜品

        final String pig = "length: 10";final String dog = "length: " + pig.length();System.out. println("Animals are equal: "+ pig == dog);System.out.println("Animals are equal: "+ pig .equals(dog));

大家已经迫不及待了,先看答案

falseAnimals are equal: true

如果你想一下操作符的优先级就明白了,“+”优先级高于“==”

第七道 咖啡、茶

看大家晕车严重,那就不出题目了

通过上面的教训,在比较对象引用时,应该优先使用equals 方法而不是 == 操作符,除非需要比较的是对象的标识而不是对象的值。

参考资料

【1】https://docs.oracle.com/javase/specs/jls/se12/html/jls-3.html#jls-3.10.5

【2】https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

转载于:https://www.cnblogs.com/davidwang456/p/11459740.html

老司机也晕车--java字符串String晕车之旅相关推荐

  1. java字符串String

    前言 String类代表字符串. Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例. 字符串不变; 它们的值在创建后不能被更改. 字符串缓冲区支持可变字符串. ...

  2. Java字符串String比较不要用==原因

    简述 其实Java的String不是 char [],而是char *. 这么说来,如果使用 ==来做比较,其实是比较两个指针的值.而我们清楚指针的值就是表示对应的数据的逻辑地址.那么这里的相等的含义 ...

  3. 二嗨租车java,1嗨租车重磅福利来袭,免异地还车全新升级

    近日,1嗨租车重磅福利来袭,免异地还车全新升级,让用户租车出行更具性价比了.现在正是错峰出行的最好时机,驾车去看看各地的风景,适当的放松放松,给自己的生活增添一些乐趣. 据了解,此次1嗨租车免异地还车 ...

  4. Java字符串String相关

    String常用 1. char charAt(int index) 返回给定位置的字符 2. int indexOf(String str) 返回给定字符串的位置 3. int length() 返 ...

  5. Java 字符串 String 与整数型 int 之间的转换

    1.如何将字串 String 转换成整数 int?   A. 有两个方法:   1). int i = Integer.parseInt([String]); 或   i = Integer.pars ...

  6. Java字符串String相关2

    先在定义字符串: 1 String str="字符串常量"; 2 String str1=new String("字符串常量"); 3 String str2= ...

  7. 二嗨租车java,1嗨租车,租的放心用的更舒心

    好不容易遇到了五一小长假,趁着这个时间带着父母孩子去看看中国的大好河山.如果你嫌自驾游麻烦,不好停车或者路途不便.建议你选择租车,租车就租1嗨租车.不仅让你租的放心,用的也舒心. 目前,1嗨租车拥有各 ...

  8. java字符串string_Java字符串String方法总结

    Java字符串创建与初始化实例.Java字符串String方法总结,包括字符串的大小写替转换,获取字符串长度的方法.截取字符串,去除字符串中的空格.StringBuffer类转换成String类等: ...

  9. Java中String接受的最大字符串的长度

    java字符串String的最大长度,要分两个阶段,编译阶段及运行时阶段 编译阶段: 我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字符串, ...

最新文章

  1. python取中间值的函数_tensorflow实现在函数中用tf.Print输出中间值
  2. 记一次对某企业的渗透测试实战
  3. 密歇根州立大学联合字节提出AutoEmb用于流式推荐
  4. 你们的2016年前端学习计划是什么?
  5. Linux驱动(6)--关于uboot
  6. 语言运算顺序题目_我的Python学习笔记:今天我学了关于Python里的运算符及运算顺序...
  7. 常用概率论矩阵论公式
  8. 7006.vue电商实战项目2-登录退出功能
  9. mysql show db_mysql show操作
  10. 活动报名 | DEF CON之后,最令人期待的网络安全盛会(内附赠票)
  11. .NET开发中你可能会用到的常用方法总结(添加ing...)
  12. 静态电子购物网站设计回忆
  13. 服务器上删掉的数据如何找回,在服务器数据丢失情况下如何恢复数据
  14. python正则表达式匹配数字或者逗号_将数字与正则表达式相匹配-只有数字和逗号...
  15. #9733;关于人类体质弱化的分析
  16. java邮件数据库_javamail-demo(完整源码+数据库)
  17. NTL密码算法开源库--综述
  18. lisp边长注记_小程序cad批量注记建筑物边长
  19. 无法定位程序输入点_except1于动态链接库
  20. Linux查看系统温度

热门文章

  1. 吴恩达机器学习Ex3作业
  2. 台湾国立大学郭彦甫Matlab教程笔记(14)polynomial differentiation多项式微分
  3. 远程服务器返回了意外响应400,远程服务器返回400
  4. 服务器拒绝接收office文件,Ghost Win7系统下Outlook设置拒绝接收垃圾文件的方法
  5. 二值信号量解决任务间资源共享问题
  6. wp转shp_【收藏】空间数据格式转换方法
  7. 公务员要过英语六级吗计算机,报考2020年国家公务员考试,必须要过英语四六级吗?...
  8. linux 内核参数 杨,Linux 内核参数
  9. linux tomcat连接mysql步骤_linux系统下tomcat的安装步骤
  10. linux安装软件命令1003无标题,linux系统安装OFED(infiniband)