Java⾯试题(⼋股⽂)
11.Integer和int的区别?
1. Integer是int的包装类,int是Java的基本数据类型
2. Integer变量必须实例话后才能使⽤,int不需要
3. Integer实际上是对象的使⽤,当new⼀个Integer时,实际上是⽣成⼀个指针指向新⽣成的对象,int是数据的存储
4. Integer的默认值是null,int的默认值是0
Integer a = 1
java valueofInteger 变量指向的是常量池中的对象
new Integer (1)
new Integer ()变量指向的是堆中新建的对象,两者的内存地址不同
13.Integer a=128 b=128 system.out.print(a==b)的结果为false为什么?
直接使⽤Integer包装类它的范围在[-128,127]之间不会⽣成新的对象,通过查看源码可以得知调⽤的是Integer.valueof⽅法,就相当于直接int赋值,直接使⽤Java常量池中的对象,超过过了这个范围就会在堆中new⼀个对象
14.Java中操作字符串的类有哪些,他们之间有什么区别?
Java中操作字符串的类有string,stringBuffer,stringBuilder ,string和stringBuffer,stringBuilder的区别在于String⽣成的是不可变的对象,每次操作string都会⽣成⼀个新的对象,然后指向新的对象,stringBuffer,stringBuilder是在原有的基础上进⾏操作的,所以在经常改动的情况下不使⽤string。
stringBuffer,stringBuilder的区别在于stringBuffer是线程安全的,stringBuilder是⾮线程安全的,stringBuilder的性能⾼于stringBuffer,单线程情况下推荐使⽤stringBuilder多线程情况下推荐使⽤stringBuffer。
15.String str="i"与 String str=new String("i")⼀样吗?
不⼀样,内存的分配⽅式不⼀样,String str="i"会被java虚拟机分配到常量池中,String str=new String("i")会被分配到堆内存中
16.如何将字符串反转?
先将数据转换成stringBuffer或stringBuilder的类型然后使⽤reverse⽅法
17.字符串的常⽤⽅法?
1. indexOf 获取指定字符处索引
2. charAt 返回指定索引的字符
3. equals 字符串的⽐较
4. trim 去除字符串两端的空⽩
5. substring 截取字符串
6. replace 字符串替换
7. tolowercase 将字符串转成⼩写
8. touppercase 将字符串转成⼤写
9. split 分割字符串,并返回分割后的字符串数组
10. length 返回字符串长度
11. getBytes 返回字串中byte类型的数组
18.普通类和抽象类的区别?
普通类没有抽象⽅法,抽象类有抽象⽅法
抽象类并不能直接实例化,普通类可以直接实例化
19.抽象类中必须要有抽象⽅法吗?
不需要,抽象类中可以没有抽象⽅法
20.抽象类可以使⽤final修饰吗?
不可以,定义抽象类就是为了⽅便别的类进⾏继承的,final修饰就不能再被继承,两者相互冲突会产⽣⽭盾,所以抽象类不可以使⽤final修饰