首页 > 其他分享 >关键字static

关键字static

时间:2022-09-18 18:34:20浏览次数:70  
标签:调用 静态 成员 关键字 static 修饰 方法

java中的static关键字

static,翻译成中文即为静态的意思,那么也就是说static修饰的是与对象无关的。概括成一句话,static所修饰的成员是公共资源,即不属于任何一个类的成员,static所修饰的成员是只属于类自己的.

static可以修饰成员,修饰方法,修饰静态代码块。

1、修饰成员

 

静态成员变量:

 

static String name;

 

语法格式:

 

static 数据类型  变量名;

 

注意事项:

 

(1)、使用static修饰的变量叫静态变量

 

(2)、代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。

2、修饰方法

静态方法

语法格式:

public static 返回值 方法的名字 (参数列表) {}

调用静态方法:

类.方法名字();
3、修饰代码块

语法格式: 静态代码块

static {
    语句体
}

只要这个类加载,那么静态代码块一定会执行

执行顺序: 静态代码块-》构造代码块-》构造方法

重点:

 “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

  这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用,简而言之,一句话来描述就是:

 方便在没有创建对象的情况下来进行调用(方法/变量)。

  很显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

换言之,如果一个子方法没有被static修饰,那么就需要实例化一个对象,通过这个对象来调用该方法。

在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的:

 

 

 

 

 

在上面的代码中,由于print2方法是独立于对象存在的,可以直接用类名调用。

--------------------------------------------------------------------------------------------------------

关于子方法去掉static报错的原因:

由以上总结可知,如果一个方法被设为static,那么该方法的this指针将缺失,如果该子方法不加static,并且直接以“类.方法名”调用,该this指针不知道指向谁,那么就会报错,如果是static,那么该方法属于类,不属于任何一个对象,那么以“类.方法名”调用便不会出现任何问题。

以下为截图:

 

 可以看到该方法不是static类,

 

 那么是不能直接以类名.方法名调用的。将其改为static.

 

 那么错误即消失

 

 

但是请注意,因为在static里不能调用非静态成员,也就是说里面的变量都需要是static的,有时会不方便,所以,建议直接设为非静态,在主函数里建立一个无用对象,如n0,这类显著特征的无用对象,来调用所有子方法。

标签:调用,静态,成员,关键字,static,修饰,方法
From: https://www.cnblogs.com/joranger/p/16705409.html

相关文章

  • static知识点
    在JAVA中并没有全局变量,因此static变量也称作静态变量,静态变量和非静态变量有很大的区别,只要一个成员变量使用了static关键字,那么这个变量就不再属于自己,而是属于整个类。......
  • 静态static关键字
    在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。注:static修饰的成员变量和方法,从属于类普通变......
  • 关于java中static说法
    在类中,用static声明的成员变量为静态成员变量,也成为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。static修饰的成员变量和方法从属于类,普通变量和方法......
  • java static 静态
    static是java语言中的关键字,意思是“静态的”,它可以用来修饰变量、方法、代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块。static的......
  • static 知识
    static修饰的内容:static表示静态的意思,可用来修饰类变量,类方法。static主要用于创建独立于具体对象的域变量或者方法。static修饰变量时,此静态变量为该类所有对象共享,非......
  • java中 static关键字
    在类中,使用static修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。静态成员不依赖于......
  • static关键字
    1.staticstatic翻译为“静态”所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用“类名.”的方式访问。static修饰的变量:静态变量static修饰的方法:......
  • ES6 let关键字和var关键字的区别
    建议:在默认情况下使用const,而只有在你知道变量值需要被修改的情况下使用let......
  • C++ 静态断言 static_assert
    目录从运行时断言谈起静态断言static_assert(C++11)单参数静态断言(C++17)static_assert使用场景参考资料C++11引入了静态断言static_assert,可以在编译期进行断言。从......
  • 延宕执行,妙用无穷,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中defer关键字延迟调
    先行定义,延后执行。不得不佩服Golang设计者天才的设计,事实上,defer关键字就相当于Python中的try{...}except{...}finally{...}结构设计中的finally语法块,函数结束时强制......