- java中==和equals和hashCode的区别
“==” 就比值。如果两个变量是基本数据类型,可以直接使用“==”运算符来比较其对应的值是否相等。
equals是Object类提供的方法之一。可以自己实现来使用,在需要排序的时候有奇效。
hashCode()方法是从Object类中继承过来的,它也用来鉴定两个对象是否相等。Object类中的hashCode()方法返回对象在内存中地址转换成的一个int值,所以如果没有重写hashCode()方法,任何对象的hashCode()方法都是不相等的。
- int、char、long各占多少字节数
Java基本类型占用的字节数:
1字节: byte , boolean
2字节: short , char
4字节: int , float
8字节: long , double
注:1字节(byte)=8位(bits)
1.编码与中文:
Unicode/GBK: 中文2字节
UTF-8: 中文通常3字节,在拓展B区之后的是4字节
综上,中文字符在编码中占用的字节数一般是2-4个字节。
2.char在Java中的字节数:
char在Java中占用2字节。
Java编译器默认使用Unicode编码,因此2字节可以表示所有字符。
- int与integer的区别
1、Integer是int的包装类,int则是java的一种基本数据类型
2、Integer变量必须实例化后才能使用,而int变量不需要
3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值
4、Integer的默认值是null,int的默认值是0
- java多态(略,没意思。天天用。)
- String、StringBuffer、StringBuilder区别
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)
**平时String的变化不频繁随便用,量大的时候(比如拼装HTML)还是用Buffer。
- 什么是内部类?内部类的作用
XXX.innerClass.class 常见的是RV的Adapter的ViewHolder,藏起来自己用的意思。
有些东西其他地方用不到,但是必须是个单独的Obj,就得用内部类。
- 抽象类和接口区别
抽象类可以实现方法。接口只能留空。
**在项目构建的过程中,共用代码和私有代码的区分一定要清晰,某些可以抽象出来的方法、逻辑,整理成一套然后抽象出来,对于后面的工作会有很大的帮助,而且能够降低维护成本。简单例子:Android中的MainActivity,几乎所有项目都会抽象一个BaseActivity来存放所有的页面公有的东西。
**接口就是另一回事了,很多时候用接口纯粹是为了方便,以及回传调用。而层层的Callback这样的结构还是需要避免比较好。