09 Java相等判断方法

JavaSE 基础之九

09 Java相等判断方法

1. ( == )

  ( == )比较的是对象值,如果是地址,比较两个地址是否相等。

2. equals()方法

  equals()也默认与( == )一样比较地址,但是每个类都继承了object,每个类都可以重写equals(), 你可以自己实现比较的逻辑,比如比较对象的所有属性和方法是否相等。
  String类重写equals(),比较两者的每个字符是否相同。

3. equals()方法 与hashcode方法比较

  • 效率对比 
      1. 两者都是java设计用来判断两个对象是否相等的方法,但是equals()在进行比较的时候,逻辑是比较对象的所有属性是否相等,如果属性全部相等,当前两个对象就相等,但是这种验证方法效率比较低。
      2. 如果用hashcode来比较,hashcode方法用到的hash值来比较(hash算法),效率非常高。
  • 可靠性对比
      1. hashcode并不是完全可靠的,有时候不同对象生成的hashcode一样。
      2. equals()相等的两个对象,他们的hashcode值一定相等,也就是说equals()来判断绝对是可靠的。
      3. hashcode相等的两个对象,使用equals()进行比较并不一定相等。也就是hashcode并不绝对可靠。
  • 解决方案
    1. 对于大量或者快速的对比,如果全部使用equals()方法,效率比较低耗时比较多。
    2. 每当要对比的时候,先拿hashcode看hash值是否一样,如果hash值不一样的直接表示当前对象不相等;如果hashcode相等,再用equals()去对比,都相等,则表示当前对象相等。

原文地址:https://www.cnblogs.com/Gavin520/p/10506828.html

时间: 2024-08-08 23:41:50

09 Java相等判断方法的相关文章

Java中判断字符串是否为数字的五种方法

推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 方法二: Java代码   /* * 判断是否为整数 * @param str 传入的字符串 * @return

java中判断字符串是否为数字的方法的几种方法

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

Java中判断字符串是否为数字的五种方法 (转)

推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public static boolean isNumeric(String str){ for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } public static boolean isNumeric(String str){ for (int i

JS和Java数组判断是否包含某个项的方法

JS 对于JS数组判断是否包含可以使用数据的方法indexOf,如果包含返回检验项在数组中的位置,例如 var testArray = [1,2,3,4,5,7]; testArray.indexOf(6)将返回-1,表明不包含6这个检测项. Java 仔细研究了一下关于Java的包含问题,可以采取下面几种方式,例如 String[] testArray = new String[]{"a","b","c"}; testArray.toStrin

Java-Runoob-高级教程-实例-方法:09. Java 实例 – continue 关键字用法-un

ylbtech-Java-Runoob-高级教程-实例-方法:09. Java 实例 – continue 关键字用法 1.返回顶部 1. Java 实例 - continue 关键字用法  Java 实例 Java continue 语句语句用来结束当前循环,并进入下一次循环,即仅仅这一次循环结束了,不是所有循环结束了,后边的循环依旧进行. 以下实例使用了 continue 关键字来跳过当前循环并开始下一次循环: Main.java 文件 public class Main { public

java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断方法,如下: // 判断一个字符串是否都为数字 public boolean isDigit(String strNum) { return strNum.matches("[0-9]{1,}"); } // 判断一个字符串是否都为数字 public boolean isDigit(Str

JAVA入门之方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用 2. 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void :如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值 3. 方法名:定义的方法的名字,必须

在Java中判断数组中包含某个元素的几种方式的比较

闲来无事,将java中判断数组中包含某个元素的几种方式的速度进行对比,直接上代码 talk is cheap, show you the code package test.contain.lishaojie; import java.util.Arrays;import java.util.HashSet;import java.util.Set; public class TestContain { /** * @param args */ public static void main(S

java的命名方法

1. JAVA源文件的命名 JAVA源文件名必须和源文件中所定义的类的类名相同. 2. Package的命名 Package名的第一部分应是小写ASCII字符,并且是顶级域名之一,通常是com.edu.gov.mil.net.org或由ISO标准3166.1981定义的国家唯一标志码.Package名的后续部分由各组织内部命名规则决定,内部命名规则指定了各组件的目录名,所属部门名.项目名等. 3. Class/Interface的命名 Class名应是首字母大写的名词.命名时应该使其简洁而又具有