Java的比较运算符“==”(一)

Java的比较运算符“==”(一)

“== ”:称为“等于”比较运算符,用于判断两个变量或常量是否相等,运算的结果是一个布尔值,相等时返回true,不等时返回false。
  Java语言支持的变量或常量的类型分为两类:基本类型和引用类型。这两种类型的变量或常量在进行“==”比较运算时,是否遵循相同的规则呢?

一、基本类型变量的比较
  Java语言的基本类型有8个:byte、short、int、long、float、double、char、boolean,前7个也称为数值类型,如果进行比较的两个操作数都是数值类型,即使它们的数值类型不同,只要它们的值相等,就会返回“true”。如“5.0== 5”返回true,“97==’a’”也返回true。两个boolean进行比较,如:true== false返回false。
  也就是说,如果两个变量(或常量)是基本类型数据,“== ”比较的是它们内存中的数值,这与结构化程序设计语言,如C语言的规则相同。即:
  两个基本类型的变量的值相等时,“==”比较运算的结果会返回true。

二、引用类型变量的比较
  java语言的学习资料中,对于引用类型变量的比较运算一般会做如下定义:如果“== ”左右两端的操作数是引用类型,只有这两个引用都指向同一个对象时,才会返回true。看到这个定义,一般会简单的认为:java中比较运算符“== ”对于基本类型变量和引用类型变量会采用不同的比较方法。这个观点是否准确呢?下面我们将引用类型变量的比较运算进行分解:
  第一,引用类型变量指向堆内存中的实际对象,也就是说:引用类型的变量保存的是一个内存地址,这个内存地址指向实际对象;
  第二,当两个引用类型变量都指向“同一个对象”时,比较运算的结果会返回true。“同一个对象”在计算机中如果表示呢?内存地址相同的对象就是“同一个对象”。
  把以上两个要点结合起来,可以得出以下结论:引用类型的变量保存的是一个内存地址,当两个引用类型的变量保存的是同一个内存地址(指向同一个对象)时,比较运算的结果会返回true。简化一下,即:
  两个引用类型的变量保存的值(实际对象的堆内存地址)相等时,“==”比较运算的结果会返回true。

综合基本类型变量和引用类型变量进行“== ”比较的规则,得出以下结论:
  1、两个变量的值相等时,“== ”比较运算的结果会返回true。
  2、引用类型变量的比较与基本类型变量进行“==”比较运算的本质是相同的,都是比较两个变量在内存中的值。

在实际应用中,如果变量是字符串或者是Java的包装类,会有一些特殊的、看似不同于以上结论的结果,将会在后续博文中继续讨论,敬请关注。

发布了4 篇原创文章 · 获赞 0 · 访问量 363

猜你喜欢

转载自blog.csdn.net/weixin_37460579/article/details/103951447