[JAVA · 初级]:7.关键字:static

时间:2023-01-24 16:54:33

含义 

static表示静态的。 从理解的角度看: 共享的。

静态的成份不属于某个对象,而属于类。但它可以被所有对象共享使用。

方法

1) 概念: 由 static 关键字修饰的方法称之为静态的方法。

2) 性质: 静态的方法属于类。因此,只要类存在,则静态方法就存在。

    何时写? 1) 当类中的方法只处理静态变量时,则该方法必须编写为静态的。

3) 当类中的方法只用来完成一个特定的任务,且完成任务所需要的数据均来自外部(通过形式参数来接收);

另外,这个方法不针对非静态的实例变量操作。此时,这个方法可以编写为静态的。

怎么用?

静态方法的调用,往往通过类名直接调用。如: Math.random();

变量

基础

什么是?

在一个类的类体中,用 static 修饰的实例变量就称之为静态变量,也称之为类变量。

何时用?

 当一个类中,需要管理共享资源时, 则需要静态变量(类变量)

特性

1) 它属于类;

2) 它被所有对象共享;

3) 它的访问往往可以通过类名实现。即: 类名.静态变量

4) 当它的前面有 private 关键字修饰时,则必须为其编写静态的访问器。之后,通过该访问器来访问。

5) 它通常用来管理共享资源。

 但时,当静态变量由 private 修饰时,则必须为该静态变量编写静态的访问器。

demo

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">public classStaticTest {
public static void main(String[] args) {
int a = (int)( 999 * Math.random());
int b = (int)( 999 * Math.random());

int re = MyMath.add(a, b); //通过类名直接调用其中的静态方法。
System.out.println( re );

re = MyMath.sub( a, b );
System.out.println( re );
}

}

class MyMath {
public static int add( int x, int y ){
System.out.print(x + " + "+ y + " = ");
return x + y;
}

public static int sub( int x, int y ){
System.out.print( x + " - "+ y + " = ");
return x - y;
}
}</span></span></span>

初始化块

基础

      1) 什么是?

      在类的类体中,用 static 修饰的语句块。

      2)干什么用?

它通常用来实现 静态变量的初始化。

      3)什么时候执行?

它在第一次加载类时被执行且只执行一次。

注意: 第一次加载类是指 当应用中该类的类名第一次出现时,则需要加载它(将它的字节码文件内容读取内存中称之为第一次加载)。

demo

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">importcom.hqg.oop.d32.Person;
import staticjava.lang.Math.PI;
public classStaticBlockTest {
public static void main(String[] args) {
System.out.println("Java的数学类Math中的圆周率,其值是: " + Math.PI);
System.out.println("Java的数学类Math中的圆周率,其值是: " + PI);

static {
System.out.println("我这儿是静态初始化块。"); //(1)处:无论静态初始化块是放在此处,还是放在(2)处,程序运行时都是先执行静态初始化块。
a += 100;
}
new StaticBlock();
new StaticBlock();
new StaticBlock();
new StaticBlock();

Person p1 = new Person();
int re = p1.add(10, 9);
System.out.println( re );
}
}
class StaticBlock{
public static void add( int x, int y ){
System.out.println( x + " +" + y + " = " + (x + y));
}
//静态变量(类变量)
public static int a;

//静态的语句块
static {
System.out.println("我这儿是静态初始化块。"); //(2)处:无论静态初始化块是放在此处,还是放在(1)处,程序运行时都是先执行静态初始化块。
a += 100;
}
}</span></span></span>

业务思想

对于static关键字,相信大家都不陌生,对于提到的静态方法、变量,在日常的项目中肯定也是经常的用到,而相对于静态初始化块的相关介绍,也相信大家有了一定的了解,不常用,但却在一些特定的项目中首次加载类时,可能有特殊的作用,算是多做一些了解。

下面是在CSDN的论坛上发现某位博主发布的静态初始化块的一个小demo,点击链接 去试试吧!