欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java,

来源: javaer 分享于  点击 40499 次 点评:27

java,


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

2  说出Servlet的生命周期,并说出Servlet和CGI的区别。
      (1)Servlet被服务器实例化后,容器运行其init方法

      (2)请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,

      (3)当服务器决定将实例销毁的时候调用其destroy方法。
      与cgi的区别在于servlet处于服务器进程中,它通过

       (1)多线程方式运行其service方法,一个实例可以服务于多个请求 而CGI对每个请求都产生新的进程,

       (2)servlet其实例一般不会销毁,CGI服务完成后就销毁,所以效率上低于servlet。

3 HashMap和HashTable区别

      (1)HashMap允许一个null键,多个null值; HashTable的键和值均不允许为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断
      (2)都实现Map接口,HashTable是Dictionary的子类。

      (3)HashTable是同步的;HashMap通过Collections的同步方法得到同步。Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。

4 线程状态(http://lavasoft.blog.51cto.com/62575/27069)

   1、新建状态(New):新创建了一个线程对象。
   2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。
   3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
   4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:
    (一)、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。
    (二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。
    (三)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
   5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

 

 

5  Overload和Override的区别

(1)Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

(2)如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

6  抽象类和接口的区别

      1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

  2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

  3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

  4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

  5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

  6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

  7.接口中的方法默认都是 public,abstract 类型的。

7  Static Nested Class 和 Inner Class的区别?

 

8  switch (exp) exp的类型可以是 byte, short, char,int 和枚举类型,long 和 String 不可以。

9   short s1 = 1; s1 = s1 + 1;有什么错?

      short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;

     (s1+1运算结果是int型,需要强制转换类型) 

      short s1 = 1; s1 += 1;(可以正确编译)

10 float型float f=3.4是否正确? 答:不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

11 方法名是否可以与构造器的名字相同?  答案:可以。
public class Test {
 public Test(String iceboy) {
  System.out.println(iceboy);
 }

 public void Test(String iceboy) {
  System.out.println(iceboy);
 }

 public static void main(String[] args) {
  Test a = new Test("abc");// 输出“abc”
  a.Test("iceboy");// 输出“iceboy”
 }
}

 12  选择语句case中,允许使用的值有哪些?  答案:int,short,char,byte(都在int范围之内,且是整数)

13  if(-0.0 == 0.0)是相等还是不等? 答案:相等。

      if (new Float(-0.0).equals(new Float(0.0)))  // 不相等

      if (new Float(0.0).equals(new Float(0.0)))  // 相等
14  一个抽象类是否可以没有抽象方法? 答案:可以。

15

 

相关文章

    暂无相关文章
相关栏目:

用户点评