String 的 equals 和 ==
来源:互联网 发布:mlily床垫怎么样知乎 编辑:程序博客网 时间:2024/06/02 19:28
String 在 Java 中并非9种基本类型之一
判断2个 Object 是否相等时通常用 == 或者 equals 来判断,== 判断的是内存地址,equals 判断的是内部的值
String 的 equals 实现时先判断是不是 ==,如果是同一个地址的 Object 直接返回相等,如果地址不同时,会先判断被比较的对象是否是一个String,如果不是直接返回不等,如果是就判断字符串长度,不同长度的直接返回不等,然后逐位比较字符,出现不等的返回不等,全部相等返回相等。
String 的 equals 源码:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false;}
实例:
package com.zsoft.test;public class StringEqualsTest {public static void main(String[] args) {String a = "abcde";String b = "abcde";String c = "abcd";System.out.println(a.hashCode());System.out.println(b.hashCode());System.out.println(c.hashCode());System.out.println(a.equals(b));System.out.println(a == b);System.out.println(a.equals(c));System.out.println(a == c);}}
输出:
92599395
92599395
2987074
true
true
false
false
此例还同时证明了初始化相同内容的 String 时候,实际只分配了同一个内存区域,两个变量指向的都是同一个内存地址。
0 0
- String 里的==和equals
- String,“==”和“equals”的用法
- 关于String的==和equals
- String类的equals和==
- String的equals和==
- String的==和equals()
- String的== 和equals 比较
- String 的 equals 和 ==
- String的equals 和 ==
- String 的==和equals()方法
- string.Equals(string)和==的原理
- String ==和equals
- String"=="和equals
- 区别==和equals和String创建的区别
- String 和Integer中 == 和 equals的使用
- java Object equals 和 == String equals 和 == 的异同
- C# string 的==和Equals的比较
- String的 == 和 equals方法的比较
- 队列(Queue)-- 数组实现(C++ )
- 7.3图的遍历(广度优先)-理论
- Oracle instant client + sqlplus/navicat/PLsql 连接数据库
- 剑指Offer:替换空格
- myeclipse项目转到eclipse上
- String 的 equals 和 ==
- seq2seq解释
- ios数组求和(简单粗暴有效)
- 使用Python实现子区域数据分类统计
- 51nod1117【贪心】
- 王道机试指南读后总结-3
- 【排序算法-2】冒泡排序详解
- python通过SMTP协议发送邮件失败,报错505或535
- 图示如何创建tomcat服务器,运行项目