String 中equals()源码
来源:互联网 发布:域名ip地址url 编辑:程序博客网 时间:2024/06/05 06:48
面试官问道相关equal()复写的问题,这里小叙一下String的equals();
在String源码中,String结构是:
{private **final** char value[]; //用于存放string字符的数组private int hash; //表示string字符的哈希值,默认为0}
并且其类继承了
public final class String implements java.io.Serializable, Comparable<String>, CharSequence;
这是String的几个构造函数源码:
“`
//默认构造方法,一般不用,因为String字符串是不可改变的
public String() {
this.value = new char[0];
}
//有参构造方法,使用已存在的一个字符串创建一个相同字符序列的字符串
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
//使用一个字符数组创建一个字符串
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
//使用Arrays类复制字符数组并赋值给String类声明的value
}
//返回字符串的长度
public int length() {
return value.length;
}
//判断字符串长度是否为0
public boolean isEmpty{
retutn value.length==0
}
//根据下标获取字符
public char charAt(int index) {
if ((index < 0) || (index >= value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
面的代码,可以引出equal()的源码:
public boolean equals(Object anObject) {
if (this == anObject) {//如果是同一个对象,返回true
return true;
}
if (anObject instanceof String) { //判断是否是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;
}
- String 中equals()源码
- String中equals的源码片段
- String equals源码分析
- String.equals()源码分析
- 源码阅读—String equals()
- 源码分析—String equals方法
- Java String类的equals方法源码
- Java中Object.equals与String.equals的区别
- String 中equals方法和hashcode方法
- Java:String与StringBuffer中equals
- java中关于String的equals()比较
- java 通过源码看String的Equals与==
- Java源码学习-String类的equals方法
- String源码分析之equals和hashcode方法
- Java源码之String.equals方法的实现
- 看源码,加深理解---(零)String#equals(Object)
- java的String、StringBuilder的equals源码解读
- 以String为例详解“==”与equals()区别,以及String中重写equals()方法
- Qt自定义窗体系统按钮
- js 获取当前页面路径
- Android 系统添加输入法并设置为默认输入法
- android 自定义相机自由缩放(通过seekbar按钮控制缩放)
- Android混淆入门
- String 中equals()源码
- 真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法
- 双节有惊喜,思维导图优惠乐翻天
- elasticsearch
- jpa SQL Error: 17006, SQLState: null,登陆提示列名无效
- GreenDao3.2数据库使用教程
- Linux
- ros空间中只编译特定软件包的方法
- 规模机器学习系统中的No Free Lunch | CCTC 2017 AI专场干货分享