Java基础面试题答疑

1、使用length属性获取数组长度,public、private、protected、friendly区别

public,protected,friendly,private的访问权限如下:
 
    关键字       当前类      包内      子孙类      包外 
 
    public         √                 √            √                √ 
 
    protected   √                 √             √               × 
 
    friendly       √                 √             ×               × 
 
    private        √                 ×             ×               × 
 
 不写时默认为friendly
 不使用关键字默认为包内使用。

2、最有效率的方法算2*8等于几

2 << 3,

因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,

而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

3、两个对象值相同,x.equal(y)==true,但是却可有不同的hashcode,这句话对不对。

答:不对,有相同的 hash code  这是java语言的定义:1) 对象相等则hashCode一定相等;2) hashCode相等对象未必相等

4、Collection和Collections区别

Collection是集合类的上级接口,继承与他有关的接口主要有List和Set

Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作

5、Set里面的元素不能重复,用什么方法区分重复与否

应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是

对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,

也就出现了重复元素。所以应该用equals()来判断。

6、给出一个常见的runtime exception

常见的几种如下:
NullPointerException - 空指针引用异常
ClassCastException - 类型强制转换异常。
IllegalArgumentException - 传递非法参数异常。
ArithmeticException - 算术运算异常
ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
IndexOutOfBoundsException - 下标越界异常
NegativeArraySizeException - 创建一个大小为负数的数组错误异常
NumberFormatException - 数字格式异常
SecurityException - 安全异常
UnsupportedOperationException - 不支持的操作异常
7、try{}里有一个return语句,紧跟在try后的finally里的code会不会被执行,什么时候执行,return前执行还是return后执行

会在return中间执行!

try 中的 return 语句调用的函数先于 finally 中调用的函数执行,也就是说 return 语句先执行,finally 语句后执行, return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回!但此时会出现两种情况:

①、如果finally中也有return,则会直接返回并终止程序,函数栈中的return不会被完成!;

②、如果finally中没有return,则在执行完finally中的代码之后,会将函数栈中的try中的return的内容返回并终止程序;

8、short s1=1;s1=s1+1;是否有错?

报错,因为s1+1结果是int类型,等号左边是short类型,所以要强转  

9、Java中的异常处理机制的简单原理和应用

Java中的异常处理机制的简单原理和应用 :

 java中Throwable这个类可以被作为异常抛出的类,继承它的分为异常Exception和错误Error.

Exception表示程序需要捕捉和处理的的异常;

Error表示系统级别的错误和程序无需处理的。

 我们所需要关心的是Exception. Execption可以分为java标准定义的异常和程序员自定义异常2种.

 1)一种是当程序违反了java语规则的时候,JAVA虚拟机就会将发生的错误表示为一个异常.这里语法规则指的是JAVA类库内置的语义检查。

2)另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是Thowable的子类。

猜你喜欢

转载自www.cnblogs.com/chenxiaoxu/p/9183841.html