WEB开发网
开发学院软件开发Java 200道公司java面试题 阅读

200道公司java面试题

 2010-10-05 01:50:57 来源:WEB开发网   
核心提示:11.interface Playable { void play();}interface Bounceable { void play();}interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPan
11.
interface Playable {
   void play();
}
interface Bounceable {
   void play();
}
interface Rollable extends Playable, Bounceable {
   Ball ball = new Ball("PingPang");
}
class Ball implements Rollable {
   private String name;
   public String getName() {
     return name;
   }
   public Ball(String name) {
     this.name = name;    
   }
  public void play() {
     ball = new Ball("Football");        //错在这儿
     System.out.println(ball.getName());
   }
}
这个错误不容易发现。
答案: 错。"interface Rollable extends Playable, Bounceable"没有问题。interface可继承多个interfaces,所以这里没错。问题出在interface Rollable里的"Ball ball = new Ball("PingPang");"。任何在interface里声明的interface variable (接口变量,也可称成员变量),默认为public static final。也就是说"Ball ball = new Ball("PingPang");"实际上是"public static final Ball ball = new Ball("PingPang");"。在Ball类的Play()方法中,"ball = new Ball("Football");"改变了ball的reference,而这里的ball来自Rollable interface,Rollable interface里的ball是public static final的,final的object是不能被改变reference的。因此编译器将在"ball = new Ball("Football");"这里显示有错。
JAVA编程题
1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
import java.util.*;
public class bycomma{
 public static String[] splitStringByComma(String source){
  if(source==null||source.trim().equals(""))
   return null;
  StringTokenizer commaToker = new StringTokenizer(source,",");
  String[] result = new String[commaToker.countTokens()];
  int i=0;
  while(commaToker.hasMoreTokens()){
   result[i] = commaToker.nextToken();
   i++;
  }
  return result;
 }
 public static void main(String args[]){
 String[] s = splitStringByComma("5,8,7,4,3,9,1");
 int[] ii = new int[s.length];
 for(int i = 0;i<s.length;i++){
 ii[i] =Integer.parseInt(s[i]);
 }
   Arrays.sort(ii);
   //asc
   for(int i=0;i<s.length;i++){
   System.out.println(ii[i]);
   }
   //desc
   for(int i=(s.length-1);i>=0;i--){
   System.out.println(ii[i]);
   }
 }
}

答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference(比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable(成员变量),而o的reference并没有改变。

上一页  18 19 20 21 22 23 

Tags:java 面试

编辑录入:coldstar [复制链接] [打 印]
赞助商链接