java基础

来源:互联网 发布:c语言中最小公倍数 编辑:程序博客网 时间:2024/06/07 11:32
1、抽象类(abstract class)和接口(interface)有什么区别?
  答:简单来说,接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
  另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。


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


   答:当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况:一种是Java类库内置的语义检查。例如数组下标越界时会引发IndexOutOfBoundsException,访问null的对象时会引发NullPointerException。另一种情况是Java允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是Java.lang.Thowable的子类。 


3、sleep()和wait()有什么区别?
   答:sleep()是线程类Thread的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep不会释放对象锁。
   wait()是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 


4、String是最基本的数据类型吗?
   答:String不是基本数据类型,基本数据类型包括byte、int、char、long、float、double、boolean和short。 Java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。 


5、String和StringBuffer的区别。
   答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当知道字符数据要改变的时候就可以使用StringBuffer。典型地,可以使用StringBuffers来动态构造字符数据。 

6、运行时异常与一般异常有何异同?
   答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 

7、多线程的实现方法分别是什么?同步的实现方法分别是什么? 
   答:多线程有两种实现方法,分别是继承Thread类与实现Runnable。
接口同步的实现方面有两种,分别是synchronized、wait与notify。


8、说出重写和重载的区别,重写方法是否可以改变返回值的类型?
   答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。
   如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。子类的对象使用 这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。
   重载的方法是可以改变返回值的类型。 


9、面向对象的特征有哪些方面
   答:(1)抽象:抽象就是忽略一个主题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面:一个是过程抽象,另外一个是数据抽象。
   (2)继承:继承是一种联结类的层次模型,并且允许类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合殊


的需要。
   (3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
   (4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,同时很好地解决了应用程序函数同名问题。


10、List、Map、Set三个接口,存取元素时,各有什么特点?
   答:List无序,可有重复元素。Set 无法拥有重复元素,有排序。Map 保存key-value值,value可多值。 


    HashTable和HashMap有什么不同?

HashTable是线程安全的,HashMap是线程不安全的,HashMap的Key值,可以有多个,但是HashTable不能.
 
stringbuffer与stringbuilder的区别?


1.  在执行速度方面的比较:StringBuilder >  StringBuffer   
2.  StringBuilder:线程不安全,StringBuffer线程安全


11、如何实现Java序列化?
   答:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,它只是为了标注该对象是可被序列化的,然后需要使用一个输出流来构造一个ObjectOutputStream对象,接着使用ObjectOutput
Stream对象的writeObject()方法就可以将参数为obj的对象写出,要恢复的话则需要使用输入流。

    JDK是什么?
JDK(Java Development Kit)Java开发工具包。包括了JRE,是开发Java的人员必备的开发运行Java程序的工具。

   JRE是什么?
JRE(Java Runtime Environment)Java运行环境,运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。

  JVM是什么?
JVM (Java Virtual Machine) Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。


   HashTable和HashMap有什么不同?

HashTable是线程安全的,HashMap是线程不安全的,HashMap的Key值,可以有多个,但是HashTable不能.

1)HashMap允许key和value为null,而HashTable不允许。


  (2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。


 
25.ArrayList和LinkedList有何区别?

    ArrayList和LinkedList两者都实现了List接口,但是它们之间有些不同。

  (1)ArrayList是由Array所支持的基于一个索引的数据结构,所以它提供对元素的随机访问,复杂度为O(1),但LinkedList存储一系列的节点数据,每个节点都与前一个和下一个节点相连接。所以,尽管有使用索引获取元素的方法,内部实现是从起始点开始遍历,遍历到索引的节点然后返回元素,时间复杂度为O(n),比ArrayList要慢。

  (2)与ArrayList相比,在LinkedList中插入、添加和删除一个元素会更快,因为在一个元素被插入到中间的时候,不会涉及改变数组的大小,或更新索引。

  (3)LinkedList比ArrayList消耗更多的内存,因为LinkedList中的每个节点存储了前后节点的引用。

dk7相比jdk6增加了一些功能、优化了性能以及简化了语法,比如:
   1.更简单的异常处理语句
   2.字符串支持switch
   3.二进制值定义
   4.泛型类型推断
0 0
原创粉丝点击