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。

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制