if( ( int i = object.method() ) != 0 ){
    //code
}
不能使用int i;
if( ( i = object.method() ) != 0 ){
    //code
}
可以使用第一种写法存在什么问题呢?
变量i仅仅在if{ //code }中使用,所以想用第一种声明方式

解决方案 »

  1.   

    if()  里面不能进行变量的声明    如果你要进行  i = object.method()   还必须给i赋初值
      

  2.   

    我想可能是if里面的(int i = object.method()) 这个语句块问题 int i  属于里面括号的局部属性吧;
      

  3.   

    你可以写成 if(object.method!=0){
    int i = object.method ;
      

  4.   

    条件式中不允许初始化。if while for都不能。
    for循环的第一个参数用来初始化的,第二个是条件判断。
    也等同于
    int i = xx
    while(xx < ??)
    {
      i++;
    }
      

  5.   

    谢谢大家的热心解答 
    这样object.method就被调用了两次
    我的想法是
    假如说我预先声明了变量准备引用object.method返回的另一个object
    然后我希望在{//code}执行完后系统可以随时准备释放那个object占用的资源
    就在{//code}后把变量对那个object的强引用置空
    这样GC在扫描到这个object就可以准备回收它只是觉得如果能把变量作为一个局部变量,系统自动处理其生存期代码会更好看