11、

 

以下是代码片段:
 class Z extends A implements B,C 
  { 
  } 
  //注意这个顺序先派生类,再实现接口。

 

  12、有关内部类:当我们产生一个派生类的对象的时候,它会调用基类的构造函数,产生一个基类的对象。因此 

 

以下是代码片段:
 class Car 
  { 
  class Wheel 
  { 
  } 
  } 
  class PlaneWheel extends Car.Wheel 
  { 
  public static void main(String[] args) 
  { 
  PlaneWheel pw = new PlaneWheel(); 
  } 
  }

 

  这是不能通过编译的,因为我们要产生pw,必须先产生Car.Wheel的对象,而它是内部类,所以要产生它的对象,必须先产生外部类的对象,才能建立起内部与外部的引用关系。

  因此作出改变:

 

以下是代码片段:
  class PlaneWheel extends Car.Wheel 
  { 
  PlaneWheel(Car car) 
  { 
  car.super(); 
  } 
  public static void main(String[] args) 
  { 
  Car car = new Car(); 
  PlaneWheel pw = new PlaneWheel(car); 
  } 
  }

  

21、javac A.java可以生成B.class,前提是classB在A.java中被声明为一个类,且不是Public的。

  22、finally的问题:不是在try,catch之后的语句相当于finally,因为如果在try中有return语句,则其后的是不会被执行的。而如果放在finally中,则一定会执行。

  如果在代码中会有一个严重错误,而不想让finally中的语句执行,则写

  System.exit(-1);来避免其执行。//不是0可以。

  23、c++中允许程序员重载操作符,但java中不允许。针对String的"+"和"+=",是java中被重载的操作符。

  24、StringBuffer的应用:

  StringBuffer sb = new StringBuffer().append("a").append("bc").append("123");

  可用toString()方法,将其转化为toString();

  由于在打印时会自动调用toString方法,因此,打印时不必显示加上。

  25、java中的索引是从0开始,而且,对于一个区间的数值,是大于等于,小于的关系。即前面的数字是包含的,而后面的是不包含的。

 

  26、java中,传参时:对于基本数据类型,传递的是数据的拷贝;对于引用类型,传递的引用的拷贝。但是对于引用的拷贝,是浅拷贝,即指向了堆中同一处内存。

  因此在改变值的时结果不一样,对于基本类型,其回到传参者时没有改变其值,而对于引用,其值则改变了。