题目

1.Java中的==与equals区别

对于 == :
作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
作用于引用类型的变量,则比较的是所指向的对象的地址;

对于 equals:  
equals方法不能作用于基本数据类型的变量;
如果没有对Object中equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址,反之则比较的是内容(看具体如何重写的);

2.Java中transient关键字

其实这个关键字的作用很好理解,就是简单的一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。

3.equals和hashcode关系

equals的本意是比较两个对象的值是否相等,hashcode的常规协定也是说两个值的对象相等时,他们的hashcode也要相等。但是hashcode来自有Object类,值相同的2个对象它们的hashcode却不相等,这就和常规协定冲突了。
如果使用map,key是一个对象的话,那么需要保证hashcode和equals方法都能够判定两个值相等的对象他们的hashcode和equals都能相等。

4.字符串比较

静态字符串会存入字符串常量池。如String a = "a";String bc = "b"+"c";
带变量的字符串不会放入字符串常量池。如String a="a";String ab = a+"c";
对象字符串不会放入字符串常量池。如String a = new String("a");
调用字符串的intern()方法,会去字符串常量池查找,有的话返回引用,没有的话创建并返回引用。
所以比较地址时注意每种方式的引用地址位置。

你可能感兴趣的:(题目)