Javase--变量

package s1;/*
 *@描述:
 *@author:Wugq
 *@date:2023/2/1 19:29
 */
//===============变量=================

/**
 * 变量---与常量相比,在运行过程中可以对变量的值进行修改,没有final来修饰
 * (1)全局变量:定义在方法之外的变量,整个类都可以使用
 * (2)局部变量:定义在方法内的变量,只有在当前方法中才可以使用
 */

//(1)全局变量
public class BianLiang {
    int a=100;//非静态全局变量
    static int b=88;//静态全局变量

    public static void main1(String[] args) {
        //a=11; error
        b=99;
        System.out.println(b);
        /**
         * a.非静态全局变量--静态方法:
         * 静态方法中不可以使用非静态全局变量。非静态全局变量在类被创建成对象实例化时才初始化并且存放在堆内存中,
         * (类创建对象:BianLiang **=new BianLiang()),而静态方法在类加载到方法区的时候就可以直接调用,
         * 此时的非静态全局变量还没初始化,二者时间线不一样,所以非静态全局变量不可以在静态方法中使用。
         * b.静态全局变量--静态方法:
         * 静态方法中可以使用静态全局变量。和静态方法一样,在类加载到方法区的时候就可以使用静态全局变量了,
         * 二者时间线一样,所以可以在静态方法中使用静态全局变量。
         */
    }

    //(2)局部变量
    public static void main2(String[] args) {
        int m=32; //非静态局部变量
        int k=100;
        System.out.println(k);
       // static int n=33; //静态局部变量(error)
        /**
         * a.非静态局部变量:
         * 非静态局部变量在方法执行时有效,方法执行完则没有意义,所以非静态局部变量存放在栈内存中。
         * b.静态局部变量:
         * 静态变量存放在方法区中,而局部变量存放在栈内存中,二者冲突,所以会报错。
         */
    }

    static int k=999;
    public static void main3(String[] args) {
        int k=99;
        System.out.println(k);
        /**
         * 当全局变量和局部变量重名时,就近原则对变量进行使用。
         * 能重名定义是因为全局变量存放在方法区中,而局部变量存放在栈内存中,互不影响。
         */
    }

    //应用
    public static void main(String[] args) {
        int a=99;
        a=100;
        //变量在使用过程中可以改变值
        System.out.println(a);
        {int k=9;}
        {int k=0;}
        //在一个方法当中如果要重名定义变量,需要将它们放到不同的代码块中。(存储位置不同)
    }

}

猜你喜欢

转载自blog.csdn.net/qq_46693336/article/details/128840716