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

32 篇文章 5 订阅

含义 

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,点击链接 去试试吧!

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值