String[] arr = null;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//上面这段程序在运行的时候会抛异常,因为arr==null ,现在我的想法是 重写一下这个for循环,
//让它在循环之前先判断arr数组是否为null

/**
 * 我不希望大家给我说
 * if(arr!=null){
 *  for(int i = 0; i < arr.length; i++){
 *  .......
 *  }
 * }
 * 
 *顺便问下: jdk里面的类或方法我可以去修改吗?
 *谢谢大家了
 */

解决方案 »

  1.   

            String[] arr = null;
            if(arr == null)
            {
               return; 
            }
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
    这样。楼主看看可以不,
      

  2.   


      *顺便问下: jdk里面的类或方法我可以去修改吗?
       *谢谢大家了如果是类是final的,你不可以修改,比如String,等等,你不可以修改,其他的可以
      

  3.   

    final类不能被继承,final方法不能被修改
    只能重写jdk中非final类中的protected / public 方法
      

  4.   

    JDK 中的类可以改,但不建议这么做。如果一定要这么做的话,可以这样:1,找到 java.lang.String 的源代码,增加你需要的代码,就把这个类编译打包成 jar 文件(比如叫做 string.jar),这个类编译后应该有两个 .class 文件;
    2,使用 javac -Xbootclasspath/p:string.jar Test.java 进行编译;
    3,使用 java -Xbootclasspath/p:string.jar Test 运行。PS:如果 string.jar 不在当前路径下时,需要使用完整的路径,如带有空格需要使用双引号引起来。 
      

  5.   

    final只能被初始化一次
    JDK里的方法 你可以继承 然后重写  这是没有问题的另外 你就是想判断是不是null 那就if判断好了  干嘛不那么做?
      

  6.   

    for (int i = 0; arr != null && i < arr.length; i++) {
                System.out.println(arr[i]);
            }
      

  7.   


    String[] arr = null;
            for (int i = 0; arr!= null && i < arr.length; i++) {
                System.out.println(arr[i]);
            }
      

  8.   

    String[] arr = null;
    int i = 0;
    while(arr!=null && i<arr.length) {
    System.out.println(arr[i]);
    i++;
    }
      

  9.   

    完全不知所云。你那个循环除了引发异常意以外,没有任何存在的意义。聪明一点的编译器都可以拒绝编译你的代码了。自己修改JDK源码也是很蠢的作法,除非你想每次分发你的程序时都不得不附带一份你修改过的JDK怪胎。又除非你以后再也不想升级你的JDK了。
      

  10.   

    首先,你的所谓需求基本是没有必要的。在java中适当抛出异常是有利于程序有效运行的。不要认为把异常都给避免了是什么好事,可能会致使一些bug无法或很难被发现。另外,改JDK的源代码?这完全不是技术问题。
    即使JDK源代码里有语法错误,都只能Sun自己改,否则各个java编译器都要支持它,不能想象一个java编译器连JDK的源代码都不能编译。
      

  11.   

        String[] arr = null;
            for (int i = 0; arr!= null && i < arr.length; i++) {
                System.out.println(arr[i]);
            }最好不要去修改,除非你能驾驭JDK
      

  12.   

    JDK 1.5吧可以用另外一种写法  for(string str in arr){}这个循环就不换有异常了
      

  13.   

    我刚开始学c语言,有没有qq群收留小弟,646397629.希望能得到各位高手的指点
      

  14.   

     String s=null;
           
      if(s==null){
          return ;
      }
      for(int i=0;i<s.length();i++)
          System.out.println(s.charAt(i));     这个方法 以及 你的方法 都可以,下面的方法 你不妨试一下:
     
    String s=null;
           
        try{
           for(int i=0;i<s.length();i++)
           System.out.println(s.charAt(i));
        }catch(Exception ex){
           ex.getMessage();
        }以上方法,只是进行 异常处理