luke003 2016-01-30 18:40 采纳率: 100%
浏览 1295

java小白试着分析了一下这个代码。求大神帮忙看一下正不正确;代码如下:

public class Test{

private static int i = 0;
private static int j = 0;

public static void main(String[] args) {


    int i = 2;//i之所以是2 而不是0  是因为 就近原则
    int k = 3;
    {
        int j = 3;
        System.out.println("i+j is\t"+i+"\t"+j);
    }

    k = i+j;
    System.out.println("k is "+k);
    System.out.println("j is "+j);//这里的j之所以是0  是因为程序里方法块的首先执行,之后
    //是静态变量最后才是 常量。
}

}

  • 写回答

3条回答

  • 毕小宝 博客专家认证 2016-01-30 21:57
    关注

    这其实就是局部变量和类的成员变量的作用域问题,不是什么就近原则问题 。首先main方法里面定义的局部变量i的作用域是整个方法,所以main 中用的都是局部变量i;其次,局部变量j是在循环操作中定义的,作用域是循环体,所以循环体外面的j用的是成员变量j。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!