05_动手动脑之String.equals()方法的实现代码
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()方法的实现代码的更多相关文章
- 动手动脑之查看String.equals()方法的实现代码及解释
动手动脑 请查看String.equals()方法的实现代码,注意学习其实现方法. 第一个是false,后三个是true. package stringtest; public class Strin ...
- String.equals()方法的实现代码,
通常对String的比较有两种情况,一个是使用==,另一个是使用equals()方法,注意==是对对象的地址进行比较的,而String中的equals()方法是覆盖了Object类的方法,并且实现为对 ...
- 动手动脑:String.equals()的使用方法
public class StringEquals { /** * @param args the command line arguments */ public static void main( ...
- 动手动脑 4 String 类
动手动脑1: 请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 在Java中,内容相同的字串常量(“Hello”)只保存一份以 ...
- JAVA String作业——动手动脑以及课后实验性问题
一:如何解释这样的输出结果?从中你能总结出什么?1.源码 //mao2015.10.20 //==的两个分辨 //对原始数据而言 //对引用类型变量 public class StringPool { ...
- JAVA动手动脑及课后作业
1.查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 运行结果 true true false 原因 1)在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0, ...
- java课堂_动手动脑4
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? 答:在Java中,内容相同的字串常量(“Hello”)只保存一份以节约内存,所以s0 ...
- 04-String——课后动手动脑
1.请运行以下示例代码StringPool.java,查看输出结果.如何解释这样的输出结果?从中你能总结出什么? public class StringPool { public static voi ...
- java动手动脑和课后实验型问题String类型
1.请运行以下示例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? true true false 总结: 使用new关键字创建字符串对象时, 每次申请 ...
随机推荐
- 在iis7上如何配置来看到asp报错
今天网站改版时碰到一个问题,客户要求老网站的地图等功能要保持,但是老网站是用asp开发的.我们可以直接利用老的数据库以及老的代码,但是部署到新的服务器上一直报错. 刚开始是404,后来是500...今 ...
- 杭电ACM1003
原题: Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- silverlight导出excel
开发导出excel,首先需要添加项目引用. Microsoft.CSharp 这个是应用dynamic的前提. 在代码页,需要添加引用 using System.Runtime.InteropServ ...
- Meta http-equiv属性与HTTP头的Expires中(Cache-control)详解
一.概述 A.http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就 ...
- Android开源框架:Universal-Image-Loader解析(二)MemoryCache
- 操作系统和程序设计语言的API使用的字符编码分析
1.Java的运行环境中,String是什么编码? 使用java做程序设计语言,字符编码是和jvm相关的,和操作系统无关. java默认的编码是jvm在安装的时候就确定了的,它是根据你的系统的环境确 ...
- 把crosswalk打包到cordova项目中
(1)从Crosswalk官网下载Cordova Android (ARM) 点击下载 (2)解压压缩包到任意目录 (3)创建工程 cordova工程 cordova create Crosswalk ...
- ASP.NET 学习记录之一
(放着期末考试不复习,我每天废寝忘食地阅读从图书馆借来的ASP.NET相关专业书籍,到现在快一个星期,终于掌握了点东西,但是一拿到真刀真枪就做不出来什么了:老师把实验室打开,我就在这码码代码咯) As ...
- 服务器三大体系SMP、NUMA、MPP介绍
从系统架构来看,目前的商用服务器大体可以分为三类,即: 对称多处理器结构(SMP:Symmetric Multi-Processor) 非一致存储访问结构(NUMA:Non-Uniform Memor ...
- 用户管理-------userManage
mysql的登录用户密码修改 step1: kill 系统了的mysql进程 step2: 用以下命令启动mysql,以不检查权限的方式启动 #mysqld_safe -skip-grant-ta ...