文章目录
- java基础面试题一
- Overload 和 Override 的区别;Overloaded 的方法是否可以改变返回值的类型
- Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别
- 给我一个你最常见到的runtime exception
- error 和 exception 有什么区别
- List, Set,Map是否继承自 Collection 接口?
- abstract class 和 interface 有什么区别?
- abstract 的 method 是否可同时是static?是否可同时是native?是否可同时是synchronized?
- 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)
- 构造器 Constructor 是否可被重写(Override)
- 是否可以继承 String 类?
- try{} 里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在 return前还是后
- 用最有效率的方法算出2乘以8等於几
- 两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
- swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
- 参考博客:
java基础面试题一
Overload 和 Override 的区别;Overloaded 的方法是否可以改变返回值的类型
Overload 是重载,Override 是重写。很基础的知识点必会。
Overloaded 的方法的参数列表不一样,它们的返回类型不一定
不一样。
如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload? 这是不行的。
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别
set元素是不能重复的,可以用equals()
来判断!
第二个问题:主要看你对==
和equals
的了解。
给我一个你最常见到的runtime exception
这种题就需要背了,没啥可理解的。常写代码谁能记住,我反正是记不住。就跟你手写代码一样,不是一般人那。
空指针异常 NullPointerException
数组越界异常 IndexOutOfBoundsException
类转换异常 ClassCaseException
向数组中存放与声明类型不兼容对象异常 ArrayStoreException
Io操作异常 BufferOverFlowException
error 和 exception 有什么区别
Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型得实例才可以被抛出 throw 捕获 try-catch 。
Exception 是程序中正常运行中,可以预料的异常情况,可以被捕获,进行处理的异常。
Error 程序导致程序处于非正常的不可恢复状态。不便于捕获。
List, Set,Map是否继承自 Collection 接口?
List 与 Set 继承 Collection 接口;Map 没有继承自 Collection 接口;
abstract class 和 interface 有什么区别?
abstract class 和 interface 都不能实例化。
abstract class 拥有自己的成员变量,interface 默认 static final 修饰
abstract class 方法可以私有化,非抽象方法,必须实现;interface 不能有私有的,默认是 public abstract
实现方式不同:abstract class 需要 extends,interface 要用 implement
abstract 的 method 是否可同时是static?是否可同时是native?是否可同时是synchronized?
abstract 的方法可以同时是 static !
abstract 的方法不能同时是native的!
native本身就和abstract冲突,他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于既把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢!
abstract 的 方法可同时是 synchronized
接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)
接口: 接口是一种约束形式,其中只包括成员定义,不包含成员的实现内容。
接口可以继承(extends)接口。
抽象类可以实现(implements)接口。
抽象类可继承(extends)实体类,(但前提是实体类必须有明确的构造函数)。
构造器 Constructor 是否可被重写(Override)
构造器Constructor不能被继承,因此不能被重写(Override),在本类当中可以被重载(Overload)
如果父类自定义了有参构造函数,则子类无论定义无参,有参构造函数,都会报错。正确的做法是在子类的构造方法中添上super(参数),以表明子类构造之前先构造父类,而这句话必须放在第一句,否则报"Constructor call must be the first statement in a constructor"的错误。
是否可以继承 String 类?
不能继承 String 类
原因是 String 类 被 final 修饰的
try{} 里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在 return前还是后
Try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会执行的。
finally 语句总会执行,除非遇到一些特殊情况,如System.exit(0)
return语句并不一定就是结束一段程序,当它和finally一起使用但finally语句中无return时会先等finally语句执行完成后再返回值。
当finally语句中有return语句时会直接返回finally中return的语句
用最有效率的方法算出2乘以8等於几
2 <<3
System.out.println(2 << 3); //16 2*2^3
System.out.println(1 << 2); //4 1*2^2
两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对
不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同。
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
我先不思考题,首先 java 就属于值传递
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
switch和case语句的参数是int、short、char或者byte。
注意,对于精度比int大的类型,比如long、float、double,不会自动转换为int,如果想使用,就必须强转为int,如(int)float。
jdk1.7后,整型,枚举类型,boolean,字符串都可以。jdk1.7并没有新的指令俩处理switch String,而是通过调用switch中的String.hashCode,将String转为int从而进行判断。