目录

1.  定义main()方法为什么要用到static?

2.  定义变量为什么要用static

3.  如何在java中定义全局变量?

4.  静态变量和非静态变量的区别:

5.  总结static的作用


1.  定义main()方法为什么要用到static?

解析:

       static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,无须创建类的实例就可以调用静态方法,静态方法可以通过类名调用。

       因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。但是非静态方法可以访问静态变量或静态方法,因为是全局性的。

      静态方法只能访问类的静态成员(静态变量、静态方法),不能访问类中的实例成员(实例变量和实例方法)。这是因为未被static修饰的成员都是属于对象的,所以需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。

    因为定义运行main函数之前没有创建对象,所以只能通过类调用方法,即静态方法main(),如图所示,通过类调用的main();

JAVA里怎么定义全局的当前时间常量 java怎么定义一个全局变量_java

2.  定义变量为什么要用static

      使用static修饰的成员变量,称为静态变量或类变量,它被类的所有对象共享,属于整个类所有,因此可以通过类名直接来访问。而未使用static修饰的成员变量称为实例变量,它属于具体对象独有,只能通过对象引用变量访问。

3.  如何在java中定义全局变量?

        所以定义全局变量要用static int a ; 这种格式

        1)无需实例化对象就可访问

        2)静态变量只存在一个内存区

        3)main方法是静态方法,只能调用静态变量。

例子:

JAVA里怎么定义全局的当前时间常量 java怎么定义一个全局变量_java_02

  上面这些代码,由于不同对象的count是分开存储的,所以不能实现计算总创建对象个数功能。

  下面 使用static变量即可完成这个功能。

JAVA里怎么定义全局的当前时间常量 java怎么定义一个全局变量_静态方法_03

     示例中使用static关键字修饰成员变量count,这个类变量在内存中只有一份,所有的对象共享这个类变量,因此每当创建一个对象时,都会调用它的构造方法,类变量count会在原来的基础上加1,这样就可以统计出创建了多少个对象。

4.  静态变量和非静态变量的区别:

        静态变量被所有的对象所共享,在内存中只有一个副本【存放在方法区】,它当且仅当在类初次加载时会被初始化 [ 加final和不加final的static变量初始化的位置不一样 ]。而非静态变量是对象所拥有的,创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
        static成员变量的初始化顺序按照定义的顺序进行初始化。 静态成员变量的初始化顺序按照定义的顺序进行初始化.

    简而言之,带有 static 关键字的字段属于类,它们是类方法和变量

5.  总结static的作用

        静态方法、变量

        静态代码块

        静态内部类

        静态导包

        。。。。

JAVA里怎么定义全局的当前时间常量 java怎么定义一个全局变量_java_04