有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在main()中访问私有静态实例变量

public class test
{
    private static int a;
    public static void main(string[] args)
    {
        modify(a);
        system.out.print(a);
    }
    public static void modify(int a)
    {
        a++;
    }
}

我想知道如何在main()方法中直接访问私有静态变量。 虽然可以直接从静态方法访问静态变量,但该变量是私有的,方法是main()。。请解释


共 (6) 个答案

  1. # 1 楼答案

    私有成员变量对该类的任何方法都是可见的,无论是静态的还是非静态的。静态方法的功能有限制,但这些限制与可见性规则是分开的

  2. # 2 楼答案

    因为main在同一个类中,所以可以访问私有变量

  3. # 3 楼答案

    但是 公开课考试 { 私人INTA; 公共静态void main(字符串[]args) { 系统出来印刷品(a); }

    }

    无法直接在main()中访问实例变量“a”。。。它会显示它是私人的。。。。。。但它如何访问私有静态

  4. # 4 楼答案

    你不介意modif()可以访问属性a?那么main()就完全一样了

    关于main()唯一特别的一点是,这个方法被用作应用程序的入口点。这种特殊性与main()是静态的这一事实并不冲突


    顺便说一句,你的modif()方法并没有真正访问静态a字段,因为它被参数a隐藏

    另一件事,a++不会做任何事情,因为您只是在修改方法内参数a的值int是一个原语,是按值传递的,因此代码不会在方法范围之外更改a的值

    我想你想要这样的东西:

    public class test{
        private static int a;
        public static void main(string[] args){
            modify(); //<--- No parameters needed here !
            system.out.print(a);
        }
    
        public static void modify(){ //<--- No parameters needed here !
            a++;
        }
    }
    
  5. # 5 楼答案

    是的,它是静态的,但由于它与main方法位于同一个类中,所以可以通过类(包括main)中的静态方法访问它。。。实际上也是通过同一类中的常规方法

  6. # 6 楼答案

    如果将成员变量声明为private,这意味着只能从同一类中的方法访问它。您的main()方法实际上是同一类中的静态方法,因此它可以访问任何私有变量