今年的秋招已经过半了,在笔试与面试过程我们会经常遇到一些比较典型的问题,结合我的一些经历,整理了一部分我最近经常会问到的一些题目:
1,请简述equals与==的区别
在String中,equals对比的是内容,而==是比较地址
2.Java 重载与重写是什么?有什么区别?
重载(Overload)
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则可视为重载。
- 重载是一个类中多态性的一种表现
- 重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
- 重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
重写(Override)
重写是父类与子类之间的多态性的体现
- 发生在父类与子类之间
- 方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
- 访问修饰符的限制一定要大于被重写方法的访问修饰符
- 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
另外在面试中也会经常问到
Java 构造方法能否被重写和重载?
答:重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以 Java 的构造方法是不能被重写的。而重载是针对同一个类的,所以构造方法可以被重载。
3.创建线程有哪几种方法??
常见的创建线程的方法 :
- 继承Thread类,调用start()方法
实现Runnable接口,重写run方法,调用start方法
4.是否可以从一个static方法中调用一个非静态的方法?
不可以,因为被static修饰的方法在类初始化的时候就被加载,而非静态的方法可能在这个时候还没有完成初始化
5.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于short s1 = 1; s1 = s1 + 1: 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1;s1 += 1:由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
6.java中实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法就是引用所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。