java面试第二弹

1.==和equals的区别?

== 指向的是一个地址

Equelas 指向的是地址里具体的值

2.静态变量和实例变量的区别?

  静态变量依赖于类而存在,如果类改变了,静态变量也会跟着改变

  实例变量不管其他类变不变,它自己的改变不会跟着其他东西改变

3.integer与int的区别?

 Int是java提供的八大原始数据类型之一。Java为每个原始类型都提供了一个封装了。而integer就是java为int提供的封装类。Int的默认值为0,而integer的默认值为null

4. Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

 Math类中提供了三个有关于取整的方法:cell,向上取整 floor 向下取整, Round四舍五入。其语法为Math. Floor(x+0.5) 原来的11.5+0.5=12  -11.5+0.5=11

 

5.java中public  private protected

 

当前类 当前package 子孙类 其他package

public:公有,所有类都可以访问
puotected:保护,同一类、同一包、不同包的子类可以访问
缺省:即什么都不写,同一类、同一包可以访问
private:私有,只有同一类中可访问

6 Overload和Override的区别。

Overload是重载的意思,Override是覆盖的意思,也就是重写。

重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。

因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

7.构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。

8. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?

接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类。抽象类中可以有静态的main方法

9、写clone()方法时,通常都有一行代码,是什么?

clone 有缺省行为,super.clone();因为首先要把父类中的成员复制到位,然后才是复制自己的成员。

10.面向对象的特点:

封装  把客观的实物封装成一个抽象类

继承  指可以让某个类型的对象获得另一个类型的对象的属性的方法。

多态  指一个类实例的相同方法在不同情形有不同表现形式

11.java中实现多态的机制是什么?

父类A有一个方法function(),子类B,C分别继承A并且重写function(),当创建一个对象A b = new B(); b.function()就调用B的funciotn,假如你new C(),那调用的就是C重写的function。怎么判断使用那个类的function就是动态绑定,这个现象就是多态...
 

12.abstract class和interface有什么区别?  

接口是一个特殊的抽象类。只能声明方法,但不能实现方法。接口中的所有方法都是抽象的。

  1. 抽象类可以有构造方法,接口中不能有构造方法。
  2. 抽象类中可以包含静态方法,接口中不能包含静态方法

 

13. abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

abstract的method 不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系!

native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。

14. 什么是内部类?Static Nested Class 和 Inner Class的不同。

 

 

内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对象的特性,只是为了找一个容身之处,所以需要放到一个类中而已

15.

Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?

16. String是最基本的数据类型吗?

 

基本数据类型包括byte、int、char、long、float、double、boolean和short。

java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类

17. String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?

没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个 String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。

 

18. 是否可以继承String类?

String类是final类故不可以继承。

19. 、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?

两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

20 String 和StringBuffer的区别

JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。

21. 如何把一段逗号分割的字符串转换成一个数组?

  1. 用正则表达式,代码大概为:String [] result = orgStr.split(“,”);
  2. 用 StingTokenizer ,代码为:StringTokenizer  tokener = StringTokenizer(orgStr,”,”);

String [] result = new String[tokener .countTokens()];

Int i=0;

while(tokener.hasNext(){result[i++]=toker.nextToken();}

22. 数组有没有length()这个方法? String有没有length()这个方法?

数组没有length()这个方法,有length的属性。String有有length()这个方法。

 

23. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

也许你的答案是在return之前,但往更细地说,我的答案是在return中间执行,请看下面程序代码的运行结果:

public  class Test {

  public static void main(String[] args) {

      System.out.println(new Test().test());

  }

  static int test() {

      int x = 1;

      try {

         return x;

      } finally {

         ++x;

      }

  }

}

---------执行结果 ---------

1

为什么呢?主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。

24、final, finally, finalize的区别。

final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。

内部类要访问局部变量,局部变量必须定义成final类型,例如,一段代码……

finally是异常处理语句结构的一部分,表示总是执行。

finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证此方法总被调用

 

25. error和exception有什么区别?

error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

26. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

throws是获取异常

throw是抛出异常

try是将会发生异常的语句括起来,从而进行异常的处理,也可以在try块中抛出新的异常

catch是如果有异常就会执行他里面的语句

finally不论是否有异常都会进行执行的语句

 

 

 

posted @ 2016-05-13 15:48  ahao001  阅读(246)  评论(0编辑  收藏  举报