Question:

请查看String.equals()方法的实现代码,注意学习其实现方法。

Answer:

java中的String.equals()方法的实现代码:

equals()法是根类Object中的方法。源代码如下:

public boolean equals(Object obj)
{return (this == obj);}

可见默认的equals方法,直接调用==,比较对象地址。

不同的子类,可以重写此方法,进行两个对象的equals的判断。
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; //若比较过程中出现不等,则俩字符串不等,返回false
i++;
}

return true;//直至比较完两个字符串长度,跳出while循环,此时说明俩字符串相等,返回true

}
}

return false;//两个字符串长度不一样,俩字符串不等,不必一个个比较内容,直接返回false
}

注释:instanceof是Java、php的一个二元操作符(运算符),和==,>,<是
同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用
是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来
判断继承中的子类的实例是否为父类的实现。

从上面的代码可以得知:
(1) String类中的equals首先比较地址,如果是同一个对象的引用,可知对象相等,返回true。
(2)如果不是同有一个对象,equals方法则继续挨个比较两个字符串对象内的字符,只有完全
相等才返回true,否则返回false。

05_动手动脑之String.equals()方法的实现代码的更多相关文章

  1. 动手动脑之查看String.equals()方法的实现代码及解释

    动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...

  2. String.equals()方法的实现代码,

    通常对String的比较有两种情况,一个是使用==,另一个是使用equals()方法,注意==是对对象的地址进行比较的,而String中的equals()方法是覆盖了Object类的方法,并且实现为对 ...

  3. 动手动脑:String.equals()的使用方法

    public class StringEquals { /** * @param args the command line arguments */ public static void main( ...

  4. 动手动脑 4 String 类

    动手动脑1: 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么?       在Java中,内容相同的字串常量(“Hello”)只保存一份以 ...

  5. JAVA String作业——动手动脑以及课后实验性问题

    一:如何解释这样的输出结果?从中你能总结出什么?1.源码 //mao2015.10.20 //==的两个分辨 //对原始数据而言 //对引用类型变量 public class StringPool { ...

  6. JAVA动手动脑及课后作业

    1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...

  7. java课堂_动手动脑4

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 答:在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0 ...

  8. 04-String——课后动手动脑

    1.请运行以下示例代码StringPool.java,查看输出结果.如何解释这样的输出结果?从中你能总结出什么? public class StringPool { public static voi ...

  9. java动手动脑和课后实验型问题String类型

    1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...

随机推荐

  1. VisualSVN 4.0.12补丁原创发布

    VisualSVN 4.0.12补丁原创发布

  2. marquee 实现首尾相连循环滚动效果

    <marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标签不仅可以滚动文字,也可以滚动图片,表格等  marquee标签不是HTML3.2 ...

  3. Mvc api HelpPage 与注释

    一.添加包Microsoft.AspNet.WebApi.HelpPage可以自动给api生成帮助页面,url:/help 二.help加注释: 1. 2. public static class H ...

  4. jquery 如何去除select 控件重复的option

    这个去重不是很好用,如果id值不同,text是一样的,也会被去掉 <input type="button" class="btn" id="bt ...

  5. Darlington Pair

    今天注意到在PWM输出电路中有个器件叫ULN2003,它是达林顿管阵列,该型号应该是通用型号,因为我看到ST和TI都有对应型号的产品. 达林顿管以前没听过,赶紧补一补,而所谓的阵列也就是八个达林顿管封 ...

  6. sis9280触摸ic 基于rk3288 的安卓4.4的 多点触摸

    前言:sis提供的驱动ic.基于rk3288的安卓系统.亲眼看到人家完成一次移植.很激动的记下一些东西..虽然我看不懂.其实现在的工作也不需要看懂.叫人协助就好,只需要知道有这个东西. 1linux下 ...

  7. MySQL与Oracle的主要区别

    Mysql与Oracle区别 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. ...

  8. HTML标签整理

    第一次接触动态网站的相关代码,对程序里HTML的标签不理解.在这里会把碰到的HTML标签整理出来,持续更新. 1.<form></form>:用于声明表单,定义采集数据的范围, ...

  9. Configure the Windows Firewall to Allow SQL Server Access

    参考微软链接: https://msdn.microsoft.com/zh-tw/library/cc646023.aspx

  10. HANA学习笔记1-搭建HANA学习环境

    一 硬件环境     两台电脑,一台为服务器装跑HANA虚拟机,一台为客户端运行HANA_STUDIO     服务器:内存至少需要16G     windows server 2003 64位    ...