java程序员面试金典--i++

下列程序的输出结果是什么

public class program2 {
    static {
        int x = 5;
    }
    static int x,y;
    public static void main(String[] args) {
        x--;
        myMethod();
        System.out.println(x + y++ + x);
    }

    private static void myMethod() {
        y=x++ + ++x;
    }
}
结果是2。这道题如果不懂以下知识点很难做对啊,不信可以运行试试
static变量(全局变量)的特性
各种属性的加载顺序
i++,++i的区别
static变量的特性
一.静态成员变量

    1.属于整个类而不是某个对象实例,所以可以直接通过类名和对象名去调用。

  2.静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收

二.属性加载顺序
一般的,执行顺序如下:
父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造方法、
子类非静态变量、子类非静态代码块、子类构造方法。

三.i++,++i的区别
这个就百度吧

接下来说说代码流程
 public class program2 {
        static {
            int x = 5;//声明一个局部变量,对后面没有影响
        }
        static int x,y;//默认0
        public static void main(String[] args) {
            x--;//x=-1
            myMethod();
            System.out.println(x + y++ + x);//1+0+1
        }
    
        private static void myMethod() {
            y=x++ + ++x;//等价于y=(x++)+(++x)从右向左y = 0+ 0 x = 1;
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,154评论 0 62
  • title : zy **简书**
    markzy阅读 124评论 0 1
  • 我记得太阳 似乎每天都一样 我记得月亮 好像时圆时半弯 我也记得你 一直在为事业忙碌 我也没忘记 每天翻你的日志 ...
    象天之性阅读 256评论 0 2
  • 猜忌或套(三) 三娘宋云裳就这样简单扼要地进了叶氏家族的大门。在一九四零年的初春,这件事轰动了整个芜城,令许许多多...
    轻尘滴露阅读 596评论 1 3