文档章节

String相等判断之分析(整理别人的文章)

WAZXG
 WAZXG
发布于 2016/07/04 10:26
字数 494
阅读 4
收藏 0

一、相等判断之说明

概念准备:

java基本数据类型就8种,记住就好了。除了这些都是引用型的了。

java四类八种基本数据类型

第一类:整型 byte short int long

第二类:浮点型 float double

第三类:逻辑型 boolean(它只有两个值可取true false)

第四类:字符型 char

 

1 . 用“==”进行两个操作数判断时,如果两个操作数是基本数据类型时,比较值是否相等;当两个操作数操作数为引用类型时,比较是否指向同一对象。

2 . 用“.equals”做判断时是比较两个对象的是否相等

 

通过两道题目理解两种判断方法:

题一:

String a="a1";

String b="a" +1;

System.out.println(a==b);

打印结果为 true;

当两个字面量进行连接时,实际上在java编译器的编译器已经进行了字面量的拼接。也就是说编译生成的Class文件中并不存在String b="a"+1对应的字节码指令,已经被优为            String b="a1" 对应的字节码指令。这不优化可以理解,在编译期间能够确定结果并进行计算,这样能够减少Class文件中的字节码指令,减少运行时指令,提高效率。由于编译时进行了拼接,这样局部变量a和b都指向了常量池中的“a1”对象,因此a==b输出为true;

 

题二:

String hw=" Hello World";

String h="Hello";

h=h+" World";

System.out.println(h==hw);

打印结果为false;

因为 h=h+" World"经过编译之后会被替换成h=new StringBuilder(String.valueOf(h)).append("world").toString.查看下StringBuilder的toString方法,可以看到该方法实际上是return new String(value,0,count),也就是说h将这项java堆上的对象,而hw指向常量池中的对象,也就是指向不同的对象。

 

 

 

© 著作权归作者所有

WAZXG
粉丝 0
博文 12
码字总数 2318
作品 0
闸北
程序员
私信 提问
[]==false为什么为true分析,扩展null==0是什么结果

还是时间啊,这个问题3年前,甚至更早,就有人分析过了,现在我只是在追赶别人。。。转行晚啊,少壮不努力,老大徒伤悲啊,真是深有感触 现在把自己弄懂得,记录下来,放在这里,网站不倒,至...

liuchao1987330
2017/12/13
0
0
Java的final关键字与String的内部比较方法

最近抽了点时间温故,一些零零散散的问题还是整理了起来。我决定把一些曾经坑过自己的问题写成博客文章,给学弟学妹们一个警示吧。 今天的故事从一个例子开始: @Testpublic void testFinal...

HappyBKs
2015/08/18
0
0
hashCode与equals的区别与联系

一、equals方法的作用 1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对...

期待变强的菜鸟
2014/04/09
0
1
重写equal 的同时为什么必须重写hashcode?

hashCode是编译器为不同对象产生的不同整数,根据equal方法的定义:如果两个对象是相等(equal)的,那么两个对象调用hashCode必须产生相同的整数结果,即:equal为true,hashCode必须为tru...

未明儿
2014/03/30
0
1
算法题解题记录——Longest Substring Without Repeating Characters(leetCode#3-medium)

改进版solution提交结果.png 题目 Problem Description: Given a string, find the length of the longest substring without repeating characters. Examples: Given , the answer is , wh......

三汪
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 吾不好梦中插人

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @鱼豆腐233 :#今日歌曲分享# 分享My Chemical Romance的单曲《I Don't Love You》: 《I Don't Love You》- My Chemical Romance 手机党少年们...

小小编辑
今天
320
12
ss5 vpn 安装(linux版本)

1. 创建一个文件夹 /ss5 你也可以自定义,不过后续的地方需要注意自己的地址 2. 下载ss5文件(如果你的服务器没有安装wget请使用 yum -y install wget 命令安装 如果连yum都没安装自己查去)(下...

太黑_thj
今天
2
0
八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
9
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
3
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部