爪哇2博客
爪哇2博客

爪哇中带有示例的static关键字

在这篇文章中,我们将看到有关Java中的static关键字的信息,因此static关键字可以与以下内容相关联:

  • 变量
  • 方法
  • 嵌套类

让我们一个接一个地经历。

静态变量:

如果任何实例变量被声明为静态变量,则称为静态变量。

1
2
3
 
静态的 整型 国家Counter;
 

有关静态变量的一些要点是:
  • 静态变量属于类而不属于对象。
  • 加载类时,静态变量仅在类区域中初始化一次
  • 所有对象共享静态变量的单个副本
  • 你不’不需要创建对象来访问静态变量。您可以使用类名直接访问它。
  • 静态变量也可以通过实例java方法访问。

如果使用两个变量创建一个类,则一个静态变量,一个非静态变量。该类的非静态变量(从该类创建的对象)将获得该变量的自身版本。但是使用静态变量,它属于该类,并且只有一个。尽管该类中的任何对象都可以引用它。
例:
让我们举一个非常简单的例子,您想跟踪创建了多少个对象,为此您在类中有一个静态变量,可以说您的类是:
国家.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
组织.Arpit.爪哇2blog;
/ *
 * @作者:Arpit Mandliya
 */
上市 国家 {
 
    //静态变量
   静态的 整型 国家Counter;
  
    //实例变量
     名称;
    整型 dummyCounter;
    国家( 名称)
    {
        这个.名称=名称;
        国家Counter++;
       
        dummyCounter++;
    }
 
    上市 静态的 虚空 主要([] args)
    {
        系统..打印(“ ********************************************”);
 
        国家 印度= 国家(“印度”);
        系统..打印(“国家的名字: ”+印度.得到Name());
        系统..打印(“创建的国家对象的数量:”+国家.国家Counter);
        系统..打印(“虚拟计数器不是静态变量:”+印度.dummyCounter);
        系统..打印(“ ********************************************”);
        国家 法国= 国家(“法国”);
        系统..打印(“国家的名字: ”+法国.得到Name());
        系统..打印(“创建的国家对象的数量:”+法国.国家Counter);
        系统..打印(“虚拟计数器不是静态变量:”+法国.dummyCounter);
 
        系统..打印(“ ********************************************”);
    }
 
    上市 得到Name() {
        返回 名称;
    }
 
    上市 虚空 setName( 名称) {
        这个.名称 = 名称;
    }
 
}
 

输出:
当您运行上述程序时,您将获得以下结果:

1
2
3
4
5
6
7
8
9
10
11
 
****************************************
国家 名称: 印度
国家 目的 被创造: 1
计数器 a 静态的 变量 1
****************************************
国家 名称: 法国
国家 目的 被创造: 2
计数器 a 静态的 变量 1
****************************************
 

图解:

在上面的示例中,我们有一个名为“countryCounter”因此,每当我们创建一个新对象时,由于counterCounter变量被所有国家对象共享,并且其实例变量名为“dummyCounter”因此,无论何时创建任何新对象,其值都会再次初始化为0。

静态方法:

如果有任何方法声明为静态方法,则称为静态方法。

1
2
3
4
5
6
 
上市 静态的 虚空 printCountryCounter()
    {
        系统..打印(“创建的国家对象的数量:”+国家Counter);
    }
 

有关静态方法的一些要点是:
  •  静态方法属于不属于对象的类。
  •  可以使用className直接调用静态方法,尽管也可以使用objectName调用静态方法
  • 通常,静态方法用于获取静态字段。
  • 您可以通过Java实例方法访问静态方法。
  • 您不能访问非静态方法或静态方法中的实例变量。
  • 静态方法不能引用此关键字或super关键字。
例:
我们将创建上面的示例,并将使用一个静态方法printCountryCounter来打印countryCounter变量。
国家.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
组织.Arpit.爪哇2blog;
/ *
 * @作者:Arpit Mandliya
 */
上市 国家 {
 
    名称;
    静态的 整型 国家Counter;
    整型 dummyCounter;
    国家( 名称)
    {
        这个.名称=名称;
        国家Counter++;
      
        dummyCounter++;
    }
   
 
    上市 静态的 虚空 主要([] args)
    {
        国家 印度= 国家(“印度”);
      
        系统..打印(“ ********************************************”);
        系统..打印(“国家的名字: ”+印度.得到Name());
        printCountryCounter();
        系统..打印(“虚拟计数器不是静态变量:”+印度.dummyCounter);
        系统..打印(“ ********************************************”);
        国家 法国= 国家(“法国”);
        系统..打印(“国家的名字: ”+法国.得到Name());
        printCountryCounter();
        系统..打印(“虚拟计数器不是静态变量:”+法国.dummyCounter);
        系统..打印(“ ********************************************”);
    }
 
    上市 得到Name() {
        返回 名称;
    }
 
    上市 虚空 setName( 名称) {
        这个.名称 = 名称;
    }
   
    上市 静态的 虚空 printCountryCounter()
    {
        系统..打印(“创建的国家对象的数量:”+国家Counter);
    }
}
 

输出:
当您运行上述程序时,您将获得以下结果: 

1
2
3
4
5
6
7
8
9
10
11
 
****************************************
国家 名称: 印度
国家 目的 被创造: 1
计数器 a 静态的 变量 1
****************************************
国家 名称: 法国
国家 目的 被创造: 2
计数器 a 静态的 变量 1
****************************************
 

为什么可以’您从静态方法访问非静态成员:

从静态方法调用非静态方法时,会出现编译错误。
例如:在上面的printCountryCounter()中,假设您调用getName()
您将编译错误。

1
2
3
4
5
6
7
8
9
10
11
 
上市 静态的 虚空 printCountryCounter()
 
 {
 
        得到Name();  //编译错误
 
        系统..打印(“创建的国家对象的数量:”+国家Counter);
 
 }
 

 想象一下一种情况,当允许您从printCountryCounter()调用getName()时,您可以仅使用类名来调用printCountryCounter(),因此当您调用printCountryCounter()时,应该返回什么值getName(),因为每个值可能不同新对象及其引用的值。因此,不允许从静态方法调用非静态成员。

静态块:

静态块是Java类内部的语句块,当一个类首次加载到JVM时将执行该块
有关静态块的一些要点是:
  • 静态块用于初始化静态数据成员。
  • 静态块在执行main方法之前执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
组织.Arpit.爪哇2blog;
上市 StaticBlockExample {
 
    / **
 
     * @作者:Arpit Mandliya
 
     */
 
    静态的{
        系统..打印(“此块将在主方法之前得到调用”);
    }
 
    上市 静态的 虚空 主要([] args) {
       
        系统..打印(“主要方法”);
    }
}
 

输出:
当您运行上述程序时,您将获得以下结果:

1
2
3
4
 
这个 得到 呼叫 之前 主要 方法
主要 方法
 

静态类:

在Java中,您可以在另一个类中定义一个类。这样的类称为嵌套类。包围嵌套类的类称为外部类。在Java中,我们无法将外部类设为静态。
只能将嵌套类声明为静态
有关嵌套静态类的一些要点是:
  • 嵌套的静态类不需要外部类的引用。
  • 静态类无法访问Outer类的非静态成员。它只能访问Outer类的静态成员,包括private。

例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
组织.Arpit.爪哇2blog;
/ *
 * @作者:Arpit Mandliya
 */
上市 外部类 {
 
    静态的 内部静态类{
      
        上市 虚空 printInnerClass()
        {
            系统..打印(“内部阶级”);
        }
    }
      
    上市 静态的 虚空 主要([] args)
    {
      
      
        系统..打印(“ ********************************************”);
        外部类.内部静态类 公司= 外部类.内部静态类();
        公司.printInnerClass();
        系统..打印(“ ********************************************”);
    }
 
    上市 静态的 虚空 printOuterClass()
    {
        系统..打印(“外层阶级” );
    }
   
}
 

输出:
当您运行上述程序时,您将获得以下结果:
1
2
3
4
5
 
****************************************
****************************************
 

分享这个

作者

关注作者

相关文章

  • 9月25日

    爪哇中的参考变量

    在这篇文章中,我们将看到有关Java中的Reference变量的信息。参考变量持有对象参考的变量称为参考变量。变量是一个名称,用于在程序执行期间保存任何类型的值。如果类型是对象,则该变量称为引用[…]

  • 3月26日

    爪哇中的全局变量

    在这篇文章中,我们将看到如何在java中定义全局变量。与C / C ++不同,java中没有标准的全局变量,但是您仍然可以定义可在所有类中使用的全局变量。全局变量是可以在所有类中访问的那些变量。 爪哇不支持全局[…]

  • 3月26日

    爪哇中的静态块

    在本文中,我们将介绍如何在Java中实现静态块。以下是有关Java中静态块的一些重要信息。静态块用于类的静态初始化当您创建类的对象或访问[的静态成员时,静态块仅执行一次。…]

  • 8月26日

    爪哇默认构造函数

    在这篇文章中,我们将看到有关Java默认构造函数的信息。除非您显式提供任何其他构造函数,否则默认构造函数是由编译器插入的no arg构造函数。你赢了’无法看到它,因为它存在于类文件而不是源文件中。没有参数构造函数和[…]

  • 6月17日

    如何学习Java编程

    爪哇是开发桌面应用程序和Web应用程序的世界上使用最广泛的编程语言之一,在编程领域已经完成了22年的时间。在这篇文章中,我们将看到如何以最有效的方式深入学习Java编程。 爪哇的学习曲线很大,这是[…]

  • 28 May

    爪哇编程简介

    爪哇是世界上用于开发桌面应用程序和Web应用程序的最常用的编程语言之一。它在编程世界中已经完成了22年。 爪哇的历史:Java编程语言由1991年由Sun Microsystems 在c.的James Ghosling,Patrick Naughton和Mike Sheridan开发。最初的名称是Oak,但是[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客