static关键字

Posted funsblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static关键字相关的知识,希望对你有一定的参考价值。

 static关键字:

  • static可以修饰类中的属性和方法。
  • 使用static修饰的变量为静态变量

  • 使用static修饰的方法为静态方法

  • 静态变量和方法都可以直接通过类名来访问

静态变量

  类的变量分为静态变量和实例变量2种,static修饰的是静态变量,没有使用static修饰的是实例变量。

  static int b=1;    声明了一个静态变量,其值为1

  int a = 9;      声明了一个实例变量,其值为9

  静态变量和实例变量两者的区别:

    静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名来访问。  

       每创建一个新的实例对象,就会为实例变量分配不同的内存,各个对象访问自己的实例变量(非静态的变量只能通过创建对象调用)。

    无论创建了一个类的多少个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过类名直接访问。

  

静态方法

  static修饰的方法叫做静态方法,可以直接用“类名.方法()”来调用

  静态方法的调用不需要创建对象

  静态方法中的代码只能调用类的静态成员,而不能出现类的实例成员。 

  注意:static修饰的方法或变量尽量不要通过对象调用,通过对象调用可能需要创建不必要的对象

 

 1.静态方法与非静态方法之间的调用 

  1)静态的方法无法调用非静态的方法

技术分享图片

因为静态方法随类的加载而加载,系统无法用已加载的方法调用一个为未加载的方法

改正方法:将test()设置为静态方法

技术分享图片

也可以使用对象进行调用非静态方法,如下

 

  2 )静态方法或变量可以通过对象或者类名进行调用

     非静态的方法或变量只能通过对象调用

技术分享图片

上图例题中的show()与test()都被成功调用。show()是静态方法,可以调用,test()是非静态,并没有随类加载进来,所以通过对象调用

2.静态变量与方法间的分析

  1)静态方法不能调用非静态变量

  技术分享图片技术分享图片

  错误提示:无法从静态方法中引用非静态变量。

  static修饰的方法或变量会随着类的加载而加载。

 (static方法中不能声明static变量,但是可以访问static变量)

技术分享图片

 

输出结果为9.

 

3.什么时候需要使用static修饰?

如果功能是确定的不会改动的就使用static修饰。一旦静态修饰后,功能就是确定的了。

 

如果有错误请留言提醒我,(????)

 


以上是关于static关键字的主要内容,如果未能解决你的问题,请参考以下文章

Java——static关键字

c语言中static关键字

C#中static关键字的作用

static关键字

static关键字

Java知识点:static关键字