在这篇文章中,我们将看到关于 java 中的静态关键字。所以静态关键字可以与:
让我们一一进行。
如果任何实例变量被声明为静态。它被称为静态变量。
static int countryCounter;
关于静态变量的一些要点是:
如果您创建一个具有两个变量的类,一个是静态的,一个是非静态的。该类的非静态变量(从该类创建的对象)将获得该变量自己的版本。但是有了静态变量,它就属于类,而且只有一个。尽管该类中的任何对象都可以引用它。 示例: 让我们举一个非常简单的例子。您想跟踪您创建了多少对象。为此,您的类中有一个静态变量。假设您的类是: Country.java
package org.arpit.java2blog; /* * @author:Arpit Mandliya */ public class Country { //static variable static int countryCounter; // instance variable String name; int dummyCounter; Country(String name) { this.name=name; countryCounter++; dummyCounter++; } public static void main(String[] args) { System.out.println("****************************************"); Country india=new Country("India"); System.out.println("Country Name: "+india.getName()); System.out.println("Number of country object created: "+Country.countryCounter); System.out.println("Dummy counter not a static variable: "+india.dummyCounter); System.out.println("****************************************"); Country france=new Country("France"); System.out.println("Country Name: "+france.getName()); System.out.println("Number of country object created: "+france.countryCounter); System.out.println("Dummy counter not a static variable: "+france.dummyCounter); System.out.println("****************************************"); } public String getName() { return name; } public void setName(String name) { this.name = name; } }
输出: 当你运行上面的程序时,你会得到以下结果:
**************************************** Country Name: India Number of country object created: 1 Dummy counter not a static variable 1 **************************************** Country Name: France Number of country object created: 2 Dummy counter not a static variable 1 ****************************************
图表:
在上面的例子中,我们有一个名为“countryCounter”的静态变量,所以每当我们创建一个新对象时,它的值将增加 1,因为 counterCounter 变量被所有国家对象共享,并且我们有一个名为“dummyCounter”的实例变量,所以无论何时创建任何新对象,其值再次初始化为 0。
静态方法:
如果任何方法被声明为静态。它被称为静态方法。
public static void printCountryCounter() { System.out.println("Number of country object created: "+countryCounter); }
关于静态方法的一些要点是:
示例: 我们将创建上面的示例,并将使用一种静态方法 printCountryCounter 来打印 countryCounter 变量。 Country.java
package org.arpit.java2blog; /* * @author:Arpit Mandliya */ public class Country { String name; static int countryCounter; int dummyCounter; Country(String name) { this.name=name; countryCounter++; dummyCounter++; } public static void main(String[] args) { Country india=new Country("India"); System.out.println("****************************************"); System.out.println("Country Name: "+india.getName()); printCountryCounter(); System.out.println("Dummy counter not a static variable: "+india.dummyCounter); System.out.println("****************************************"); Country france=new Country("France"); System.out.println("Country Name: "+france.getName()); printCountryCounter(); System.out.println("Dummy counter not a static variable: "+france.dummyCounter); System.out.println("****************************************"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void printCountryCounter() { System.out.println("Number of country object created: "+countryCounter); } }
当你从静态方法调用非静态方法时,你会得到编译错误。 例如:在上面的 printCountryCounter() 中,假设你调用 getName() 你会编译错误。
public static void printCountryCounter() { getName(); //Compilation error System.out.println("Number of country object created: "+countryCounter); }
想象一种情况,当您被允许从 printCountryCounter() 调用 getName() 时。您可以仅使用类名调用 printCountryCounter() ,因此当您调用 printCountryCounter() 时,getName() 应该返回什么值,因为每个值可能不同新对象以及它将引用哪个值。这就是为什么不允许从静态方法调用非静态成员的原因。
静态块是 Java 类中的语句块,将在类首次加载到 JVM 时执行
关于静态块的一些要点是:
package org.arpit.java2blog; public class StaticBlockExample { /** * @Author:Arpit Mandliya */ static{ System.out.println("This block will get call before main method"); } public static void main(String[] args) { System.out.println("In main method"); } }
This block will get call before main method In main method
在java中,您可以在另一个类中定义一个类。这样的类称为嵌套类。包含嵌套类的类称为外部类。在java中,我们不能使外部类静态。
只有嵌套类可以声明为静态
关于嵌套静态类的一些要点是:
例子:
package org.arpit.java2blog; /* * @author:Arpit Mandliya */ public class OuterClass { static class InnerStaticClass{ public void printInnerClass() { System.out.println("In inner class"); } } public static void main(String[] args) { System.out.println("****************************************"); OuterClass.InnerStaticClass inc=new OuterClass.InnerStaticClass(); inc.printInnerClass(); System.out.println("****************************************"); } public static void printOuterClass() { System.out.println("In outer class"); } }
**************************************** In inner class ****************************************
原文链接:https://codingdict.com/