zoukankan      html  css  js  c++  java
  • static关键字;变量;代码块

    部分参考自  关于 static 关键字的一篇很好的文章:https://www.cnblogs.com/dolphin0520/p/3799052.html

    1)变量:

    public class ValiablesDesc {
        
        /*
         *     定义类变量,又称静态变量:
         * 1)在类中用static关键字声明,但是它在方法、构造器或者块之外;
         * 2)静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化
         * 3)不能在方法、构造器内成名静态变量;(static是不允许用来修饰局部变量。不要问为什么,这是Java语法的规定)
         * 4)static成员变量的初始化顺序按照定义的顺序进行初始化。
         */
        public static String name = "郭晓锋";
        
        /*
         *     定义实例变量,又称成员变量(instance valiable):
         * 1)在类中声明,但是它在方法、构造器或者块外;
         * 2)实例变量可以用访问描述符;
         * 3)实例变量有默认值。数字的默认为0,boolean的默认为false,对象引用默认值为NULL
         * 4)非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
         */
        public String password;
        
        /*
         * Mutator Methods:调用方法后对象发生改变,例如StringBuilder,最常见的是字段的set方法
         * Accessor Methods:调用方法后对象没有改变,例如String,最常见的是字段的get方法
         */
        public void fuck(String password) {
            /*
             *     定义本地变量,又称局部变量(local valiable)
             * 1)在方法、构造器或者块中使用,在方法、构造器或者块进入时被创建,一旦退出该变量就会被销毁
             * 2)局部变量没有默认值,因此本地变量必须被声明并且在第一次使用前要给它赋值
             */
            String youA = "叼";
            
            /*
             * password:显式参数(explicit parameter)
             * youA:隐式参数(implicit parameter)
             *     或者:this.password
             *     其实,想想就知道,这个东东最常用于构造器
             */
            String concat = this.password + youA;
            
        }
    
        // Accessor Methods
        public String getPassword() {
            return password;
        }
        // Mutator Methods
        public void setPassword(String password) {
            this.password = password;
        }
        
        public ValiablesDesc(String password) {
            super();
            //左边的password:implicit parameter;右边的password:explicit parameter
            this.password = password;
        }
        
    }

     2)代码块

    /*
     * 代码块:在Java中,使用{}括起来的代码成为代码块 
     * 
     * 普通代码块:类中方法的方法体
     * 局部代码块:局部位置,用于限定变量的生命周期 
     * 构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。
     * 静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰 (注意,不在任何方法体内)
     * 同步代码块:使用synchronized(){}包裹起来的代码块
     * 
     * 静态代码块、构造代码块、构造方法的执行顺序:静态-》构造代码块-》构造方法
     * 静态代码块:只执行一次
     * 构造方法:每次调用构造方法都执行 
     */
    public class Main2 {
    
        public static void main(String[] args) {
            
            // 局部代码块
            {
                int x = 10;
                System.out.println(x);
            }
            
            {
                int y = 20;
                System.out.println(y);
            }
            
            System.out.println("---------------");
    
            Code c = new Code();
            System.out.println("---------------");
            
            Code c2 = new Code();// 静态只执行一次
            System.out.println("---------------");
            
            Code c3 = new Code(10000);
        }
    
    }
    
    class Code {
        // 静态代码块
        static {
            int a = 1000;
            System.out.println(a);
        }
        
        // 构造代码块
        {
            int x = 100;
            System.out.println(x);
        }
    
        // 构造方法
        public Code() {
    
            System.out.println("code");
        }
    
        // 构造方法
        public Code(int a) {
            System.out.println(a);
        }
    
        // 构造代码块
        {
            int x = 200;
            System.out.println(x);
        }
    
        // 静态代码块
        static {
            int b = 2000;
            System.out.println(b);
        }
    }

    END!

  • 相关阅读:
    c语言判断最大数
    c语言复制字符
    C语言简单小问题
    c语言实现用指针遍历二维数组
    C语言有趣小程序
    C语言实现输入一个数,输出这个数的立方根
    C语言实现输入一个数,输出这个数的sin值
    c语言实现输出10000内所有素数,5个换一行
    输出10000内所有素数
    判断素数
  • 原文地址:https://www.cnblogs.com/ericguoxiaofeng/p/9037880.html
Copyright © 2011-2022 走看看