1.面向对象都有哪些特性以及对这些特性的理解
- 继承
- 多态性
- 封装
- 抽象
2.访问权限修饰符public、private、protected、default的区别
- public对所有都可用
- private只能对本类中使用
- protected只能在类、子类、包中使用
- default只能在本包内被访问,子类不可访问
3.Java有没有goto语句
没有
4.&和&&的区别
对于&:无论&左边是否为false,他都会继续检验右边的boolean值。
对于&&:只要检测到左边Boolean值为false时,就会直接判断结果,不会在检验右边的值(因为"与"有一个false最后结果就是false了)
两者执行的结果是一样的
5.在Java中,如何跳出当前的多重嵌套循环
1.标号方式
2.break跳出当前循环,通过内部跳出条件控制跳出外部循环
break是跳出最接近的那一层循环,而不是全部跳出
3.抛出异常也可以跳出多重循环
这里是直接跳出应用
4.return语句
6.两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句 话对不对?
不对!
hashCode 的常规协定是:
1.在 Java 应用程序执行期间,在对同一对象多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是将对象进行 equals 比较时所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
2.如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
3.如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么对这两个对象中的任一对象上调用 hashCode 方法不要求一定生成不同的整数结果。但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。
7.重载的方法不能根据返回类型进行区分,因为编译器无法得出你要调用的是哪个方法,如下情况:
float max(int a,int b)
int max(int a,int b)
8.抽象类和接口有什么异同?
1.抽象类是“声明方法的存在而不去实现它”的类;而接口中的所有方法都是抽象的。
2.接口可以多继承,抽象类不行
3.接口定义方法而不可以实现方法;抽象类可以实现部分方法。
4.接口中基本数据类型为static,而抽象类不是。
5.当你关注一个事物的本质时,用抽象类;当你关注一个操作的时候,用接口。
9.静态变量和实例变量的区别
静态变量属于类。实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用
public class Test11 {
public static int staticVar = 0;
public int instanceVar = 0;
public Test11() {
staticVar++;
instanceVar++;
System.out.println("staticVar=" + staticVar + ",instanceVar="
+ instanceVar);
}
public static void main(String[] args) {
Test11 test = new Test11();
Test11 test1 = new Test11();
Test11 test2 = new Test11();
}
}
输出:
staticVar=1,instanceVar=1
staticVar=2,instanceVar=1
staticVar=3,instanceVar=1
10.==和equals的区别
最基本的理解:==比较的是两个对象或实例是否指向同一块内存空间,而equals是比较两个变量或者实例指向的内存空间的值是否相等
深入理解:看源码,到时再来回顾