您的位置:首页 > 职场人生

每日二道java基础面试知识点(一)

2018-03-06 14:48 513 查看
1、Java中==和equals的区别,equals和hashcode的区别
==:是比较栈中的值是否相同,所以Java的基本数据类型相同和同一对象new出来的两个变量使用==会返回true。
tip:Java8种基本数据类型:int,short,long,double,float,byte,boolean,char
tip:Java栈和堆内存简单概念:
        基本数据类型和对象的引用放在栈,但栈中的变量超过其作用域,变量会被马上回收。
        对象和数组存放在堆内存,当对象和数组没有变量指向它时,没有被指向对象和数组会成为垃圾,在未来不确定的时间里被回收。

equals:equals默认情况下和==的效果相同。因为equals是Object的方法,Object.equals的源码如下: public boolean equals(Object obj) {
return (this == obj);
} 所以默认情况下,equals就是调用了==去判断两个值是否相同。
而特殊情况下,我们更多的是使用像String类的equals,它重写了Object的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;
}hashCode:hashcode()也是Object类的一个方法,返回一个离散型的int整数,在集合类操作中使用,在集合中为了元素不重复,当插入一个新的元素时,会先判断其hashcode是否已经存在,不存在的话直接插入,如果存在的话再调用equal进行判断。这样提高了插入的效率。
hash和equal关系:
两个对象equals为true,hashcode一定相同。
两个对象equals为false,hashcode可能相同。

2、List和set的区别:List元素有序且可重复;set元素无序且不可重复。

3、Java8中基本数据类型,各占多少字节。
int:4个字节
short:2个字节
long:8个字节
double:8个字节
float:4个字节

byte:1个字节
boolean:1个字节
char:2个字节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: