面试题
1.栈的空间小,但是操作速度很快,new的对象进入的是堆
String str = new String("hello"); str,进入的是栈,但是hello进入的是静态区
2.构造器不能被继承,不能被重写,但是能被重载
3.a.equals(b) == true 但是他们却又相同的hashCode对不对?
不对,如果两个对象相同,HashCode一定要相同,如果HashCode相同则这两个对象不一定相同
4.String类能被继承吗
不能,String类被final修饰,不能被继承
5.当一个对象被当做一个参数传递之后,是值传递,还是引用传递
值传递,java中调用参数只支持值传递
6.StringBuild和StringBuffer的区别
StringBuild是java 5中引入的和StringBuffer方法完全相同,并且没有被synchronized所修饰,所以要快一些
7.关于抽象类和接口的问题
抽象类和接口都不能实例化,但是可以定义抽象类和接口的引用
如果一个类定义了抽象类和接口就要实现其方法
接口的成员必须全是public,
有抽象方法必须有抽象类,但是有抽象类不一定有抽象方法
8.java中会有内存泄露吗
理论上不会出现类存泄露但是,在开发中会出现无内存可用的情况
例如hibernate的session如果开启不关闭的还gc是不会回收的需要手动的close和flush
9.String str = new String("xyz") 会创建几个对象,会创建2个对象1个new的对象在堆上,另一个对象在静态区中是xyz
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}