• 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;
            }
        }


    欢迎加入学习交流群569772982,大家一起学习交流。
  • 相关阅读:
    POJ 2054 Color a Tree
    UVA12113-Overlapping Squares(二进制枚举)
    UVA690-Pipeline Scheduling(dfs+二进制压缩状态)
    UVA818-Cutting Chains(二进制枚举+dfs判环)
    UVA211-The Domino Effect(dfs)
    UVA225-Golygons(dfs)
    UVA208-Firetruck(并查集+dfs)
    UVA1374-Power Calculus(迭代加深搜索)
    UVA1374-Power Calculus(迭代加深搜索)
    UVA1434-The Rotation Game(迭代加深搜索)
  • 原文地址:https://www.cnblogs.com/z335/p/8283173.html
Copyright © 2020-2023  润新知