首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个很BT的简单有关问题,来解决!hoho

2012-01-02 
一个很BT的简单问题,来解决!hohopublicclassA{publicstaticinttest(){inti9try{returni}finally{i10}

一个很BT的简单问题,来解决!hoho
public   class   A   {
  public   static   int   test(){
      int   i=9;
      try{
        return   i;
      }finally{
        i=10;
      }
  }
  public   static   StringBuffer   test1(){
      StringBuffer     i=new   StringBuffer(9);
      try{
        return   i;
      }finally{
        i.append(10);
        i=null;
      }

  }
  public   static   void   main(){
      System.out.println(test());
    System.out.println(test1());

  }
}

这个结果是多少?可能你知道原因,也可能你会猜对,不过大家知道原因不?hoho,其实我以前也不知道,最近才看到的,共享出来大家娱乐一下

这里有具体讲解:
http://blog.csdn.net/lovingprince/archive/2007/05/16/1612206.aspx

[解决办法]
java.lang.NoClassDefFoundError: Test
Exception in thread "main " !!
他说我有错误%%%%555555
[解决办法]
9,10.
why?
[解决办法]
Exception in thread "main " java.lang.NoSuchMethodError: main
[解决办法]
嗯神奇
不过看了原理,应该这样更清晰
public class Abc {

public static int test(){
int i=9;
try{
return i;
}finally{
i=10;
}
}
public static StringBuffer test1(){
StringBuffer i=new StringBuffer( "9 ");
try{
return i;
}finally{
i.append( "10 ");
i=null;
}

}
public static void main(String[] arg){
System.out.println(test());
System.out.println(test1());

}

}
[解决办法]
public class InnerBox {

public static int getI(){
int i;
try{
i=9;

}finally{
i=10;
}
return i;
}

public static StringBuffer getSb(){
StringBuffer sb=new StringBuffer( "123 ");
try{

}finally{
sb.append( "sb ");
sb=null;

}
return sb;
}



/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getI());
System.out.println(getSb());
}

}
这样效果就不一样了。
[解决办法]
参数的传递~~
这个问题好象问的很多了在csdn中
[解决办法]
这是finally代码块的执行问题~
[解决办法]
详细解答如下:
public class Abc {

public static int test(){
int i=9;
try{
return i;
}finally{
i=10;
}
}
public static StringBuffer test1(){
StringBuffer i=new StringBuffer(9);
//注意StringBuffer(int i)是构造一个指定容量的StringBuffer变量;


try{
return i;
}finally{
i.append(10);
//append(int i) 将 int 参数的字符串表示形式追加到此序列。
i=null;
}

}
public static void main(String[] arg){
System.out.println(test());
System.out.println(test1());

}

}
//答案:9,10

//Java 的异常处理模型中,
//finally 块区域中的代码都是不能够通过重新赋值的方式来改变 try 区域中 return 语句的返回值。
//所以i的返回值是不变的,当i是int型的数据时,返回值就是其本身;
//当i是类类型的变量时,返回值是对象的引用(相当于指针),所以i.append(10)能发挥作用!
//而i=null相当于改变i的引用(指针),让其指向一个空值,所在finally语句中并不被执行!
[解决办法]
//Java 的异常处理模型中,
//finally 块区域中的代码都是不能够通过重新赋值的方式来改变 try 区域中 return 语句的返回值。
//所以i的返回值是不变的,当i是int型的数据时,返回值就是其本身;
//当i是类类型的变量时,返回值是对象的引用(相当于指针),所以i.append(10)能发挥作用!
//而i=null相当于改变i的引用(指针),让其指向一个空值,所在finally语句中并不被执行!


=======================================================
以前还真没注意过

受益
[解决办法]
想要弄清的話,還是仔細看看異常吧

热点排行