静态关键字在Java中被广泛用于Java编程。Java静态关键字用于创建Java中的类级变量,静态变量和方法是类的一部分,不是类的实例。
静态关键字在Java
Java static keyword can be used in five cases as shown in below image.
We will discuss four of them here, the fifth one was introduced in Java 8 and that has been discussed at Java 8 interface changes.
- 联合国 XQA 静态变量( ) ) 我们可以使用带有类级变量的"静态"关键词. 静态变量是一个类变量,不属于类的Object/intance. 由于静态变量在Object的所有实例中都是共享的,因此它们并不线上安全. 通常情况下,静态变量与所有对象都可以使用的通用资源或常数的最终关键词一起被使用. 如果静态变量不是私有的,我们可以使用 ` ClassName. variableName% // static可变实例 私有静态内计; 公有静态字符串; 公有静态终位字符串 DB_USER = "Myuser"; Q
- QQ Java 静态方法( ) )与静态变量相同,静态方法属于类而不属于类例. 静态方法只能访问类的静态变量,而只引用类的静态方法. 通常情况下,静态方法是我们希望被曝光为其他阶级使用的,不需要创建实例的实用方法. 例如集体课. [Java Wrapper class] (/community/tourises/wrapper-class-in-java) 和通用类包含许多静态方法. 作为java程序本身的入站点的主要()方法是一个静态方法.``` //静态方法例(- ) 公有静态空位设置 Count(int counter){(- ) 如果(counts > 0)(- ) Staticexple.count = counter; (- )}(- ) (- ) //static util方法 (- ) 公有静态入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站入站 详情请改为Java 8 接口更改. "Java 8 界面修改"). ( (英语). QQ Java 静态块 Java 静态块是由 [Java ClassLoader] (/community/touris/java-classloader) 装入内存时执行的语句组. 静态块用于初始化该类的静态变量. 主要用于在类被加载时创建静态资源. 我们不能进入静态区块的非静态变量. 我们可以在一个班级里有多个静态块,尽管这没有多大意义. 静态块代码仅在类被装入内存时执行一次. {} 静态{ / 在类被装入时可用于初始化资源() ) system.out.println ("Staticexple stime block"); /可以只访问静态变量和方法 str="测试"; setCount(2); } _
Java 静态类(
_) 我们可以使用静态关键词 与巢类。 静态关键字不能被顶级类使用. 静巢类与其他任何顶级类相同,并仅为包装方便而筑巢. 读取: [Java Nested Class] (/社区/教友/java-inner-class)
让我们看看Java使用中的所有静态关键字在一个样本程序中。
1package com.journaldev.misc;
2
3public class StaticExample {
4
5 //static block
6 static{
7 //can be used to initialize resources when class is loaded
8 System.out.println("StaticExample static block");
9 //can access only static variables and methods
10 str="Test";
11 setCount(2);
12 }
13
14 //multiple static blocks in same class
15 static{
16 System.out.println("StaticExample static block2");
17 }
18
19 //static variable example
20 private static int count; //kept private to control its value through setter
21 public static String str;
22
23 public int getCount() {
24 return count;
25 }
26
27 //static method example
28 public static void setCount(int count) {
29 if(count > 0)
30 StaticExample.count = count;
31 }
32
33 //static util method
34 public static int addInts(int i, int...js){
35 int sum=i;
36 for(int x : js) sum+=x;
37 return sum;
38 }
39
40 //static class example - used for packaging convenience only
41 public static class MyStaticClass{
42 public int count;
43
44 }
45
46}
让我们看看如何在测试程序中使用静态变量、方法和静态类。
1package com.journaldev.misc;
2
3public class TestStatic {
4
5 public static void main(String[] args) {
6 StaticExample.setCount(5);
7
8 //non-private static variables can be accessed with class name
9 StaticExample.str = "abc";
10 StaticExample se = new StaticExample();
11 System.out.println(se.getCount());
12 //class and instance static variables are same
13 System.out.println(StaticExample.str +" is same as "+se.str);
14 System.out.println(StaticExample.str == se.str);
15
16 //static nested classes are like normal top-level classes
17 StaticExample.MyStaticClass myStaticClass = new StaticExample.MyStaticClass();
18 myStaticClass.count=10;
19
20 StaticExample.MyStaticClass myStaticClass1 = new StaticExample.MyStaticClass();
21 myStaticClass1.count=20;
22
23 System.out.println(myStaticClass.count);
24 System.out.println(myStaticClass1.count);
25 }
26
27}
java 示例程序中上述静态关键字的输出是:
1StaticExample static block
2StaticExample static block2
35
4abc is same as abc
5true
610
720
请注意,静态区块代码首先执行一次,一旦类被加载到内存中。
Java 静态导入
通常我们使用类引用访问静态成员,从 Java 1.5 开始,我们可以使用 java 静态导入来避免类引用。
1package com.journaldev.test;
2
3public class A {
4
5 public static int MAX = 1000;
6
7 public static void foo(){
8 System.out.println("foo static method");
9 }
10}
1package com.journaldev.test;
2
3import static com.journaldev.test.A.MAX;
4import static com.journaldev.test.A.foo;
5
6public class B {
7
8 public static void main(String args[]){
9 System.out.println(MAX); //normally A.MAX
10 foo(); // normally A.foo()
11 }
12}
注意导入声明,对于静态导入,我们必须使用导入静态
,然后是一个类的完全分类的静态成员。 对于导入一个类的所有静态成员,我们可以使用 * 如在导入静态 com.journaldev.test.A.*;
我们应该只在使用一个类的静态变量多次时使用它,它对可读性不利。 ** 更新**:我最近创建了一个视频来解释静态关键字在Java中,你应该在下面观看它。