java面试题之第二回

1、如下代码的输出是 

package test;
import java.util.Date; 
public class SuperTest extends Date{ 
    private static final long serialVersionUID = 1L; 
    private void test(){ 
       System.out.println(super.getClass().getName()); 
    } 
      
    public static void main(String[]args){ 
       new SuperTest().test(); 
    } 
}

答:test.SuperTest

   Object里的getClass(),它是final修饰的,不可被重写。所以调用的是Object中的方法。返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 也就是当前类。Class.getName()  以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

  如果要得到父类的name,则super.getClass().getSuperclass().getName()

2、ArrayList list = new ArrayList(20);中的list扩充几次 

答:0次 初始化时就指定了空间大小,会直接创建。如果没有指定,ArrayList list = new ArrayList();每次扩容会增加1.5倍加1

3、有如下一段代码,其运行结果是

public class StringDemo{
  private static final String MESSAGE="taobao";
  public static void main(String [] args) {
    String a ="tao"+"bao";
    String b="tao";
    String c="bao";
    System.out.println(a==MESSAGE);
    System.out.println((b+c)==MESSAGE);
  }
}

答: true false

4、以下代码将打印出

 public static void main (String[] args) { 
    String classFile = "com. jd. ". replaceA11(".", "/") + "MyClass.class";
    System.out.println(classFile);
}

答:正则表达式中.代表任意字符

5、观察以下代码输出是:

class Car extends Vehicle
{
    public static void main (String[] args)
    {
        new  Car(). run();
    }
    private final void run()
    {
        System. out. println ("Car");
    }
}
class Vehicle
{
    private final void run()
    {
        System. out. println("Vehicle");
    }
}

答:car  父类方法有private修饰,对于子类不可见。所以和子类中的方法是两个方法

 

posted on 2016-11-23 23:02  wantcrazy  阅读(636)  评论(0编辑  收藏  举报

导航