Android 面试和笔试题集
应用介绍
Java 部分(一)基础知识点
### 1. <span id="java_base_1">Java中 == 和 equals 和 hashCode 的区别</span>
Java中的数据类型可分为两类,基本数据类型和引用类型。基本数据类型:byte、short、char、int、long、float、double、boolean。他们之间的比较用双等号(==),比较的是**值**。引用类型:类、接口、数组。当他们用双等号(==)进行比较的时候,比较的是他们在**内存中的存放地址**。对象是放在堆中的,栈中存放的是对象的引用(地址)。由此可见,**双等号是对栈中的值进行比较的**。如果要比较堆中对象是否相同,那么就要重写equals方法了。
默认情况下(没有覆盖equals方法)下的equals方法都是调用Object类的equals方法,而Object的equals方法主要是用于判断**对象的内存地址引用是不是同一个地址**(是不是同一个对象)。下面是Object类中的equals方法:
```java
public boolean equals(Object obj) {
return (this == obj);
}
```
定义的equals方法与==是等效的。
**但是**,要是类中覆盖了equals方法,那么就要根据具体代码来确定equals方法的作用了。**覆盖后的一般都是通过对象的内容是否相等来判断对象是否相等。**下面是String类对equals方法进行了重写:
```java
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
```
hashCode()方法返回的就是一个数值,从方法名上来看,其目的就是生成一个hash码,hash码的主要用途就是在**对对象进行散列的时候作为key输入**。
。。。。。。。了解详情请下载附件。
©版权声明:本文内容由互联网用户自发贡献,版权归原创作者所有,本站不拥有所有权,也不承担相关法律责任。如果您发现本站中有涉嫌抄袭的内容,欢迎发送邮件至: www_apollocode_net@163.com 进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
转载请注明出处: apollocode » Android 面试和笔试题集
文件列表(部分)
名称 | 大小 | 修改日期 |
---|---|---|
Android.md | 2.03 KB | 2020-09-08 |
Answer.md | 72.60 KB | 2020-09-08 |
JVM 面试题集.md | 0.35 KB | 2020-01-03 |
中断与系统调用.md | 0.78 KB | 2020-01-03 |
什么是死锁,死锁产生的条件以及处理方法.md | 2.52 KB | 2020-01-03 |
什么是虚拟内存.md | 2.70 KB | 2020-01-03 |
内存管理中分页和分段有什么区别?.md | 3.67 KB | 2020-01-03 |
缓冲区溢出.md | 0.48 KB | 2020-09-08 |
进程和线程的区别.md | 1.43 KB | 2020-09-08 |
进程有哪几种状态.md | 0.53 KB | 2020-09-08 |
进程调度策略.md | 2.24 KB | 2020-01-03 |
进程间通信的几种方式.md | 3.44 KB | 2020-01-03 |
Android | 0.00 KB | 2020-01-03 |
JVM | 0.00 KB | 2020-01-03 |
操作系统 | 0.00 KB | 2020-09-08 |
Android_QA | 0.00 KB | 2020-09-08 |
发表评论 取消回复