Java基础知识学习:static关键字

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

static关键字_内存分析静态变量和静态方法

  1. 通常来说,当创建类是,就是在描述类的对对象的外观与行为.除非用new创建那个类的对象,否则,实际上并未获得任何对象那个.执行new来创建对象时,数据存储空间才被分配,其方法才供外界调用
  2. 但是有两种情况是上述方式无法解决的,一种是,只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建对象.另一种情形是,希望某个方法不与包含它的类的任何对象关联在一起,换句话说,即使没有创建对象,也能够调用这个方法
  3. static关键字可以满足这两方面的需求.当声明一个事物是static时,也就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起.所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域.
  4. 只需将static关键字放在定义之前,就可以语句块,字段,方法声明为静态初始化块,静态成员,静态方法
  5. 定义static静态成员
    在这里插入图片描述 即便创建了两个对象,StaticTest.i也只有一份存储空间,这两个对象共享同一个i
    引用static变量有两种方法,可以通过一个对象去定位它,如st2.i,也可以通过类名直接引用,这对于非静态成员是不可以的,如StaticTest.i
    使用类名是引用static变量的首选方式,这不仅是因为它强调了变量的static结构,而且在某些情况下它还会为编译器进行优化提供了更好的机会.
  6. 定义static静态方法
    在这里插入图片描述
     静态方法也可以两种方式引用,同上面静态成员的调用方式
  7. 示例—static静态成员和static方法
    在这里插入图片描述 内存分配
      在这里插入图片描述
  8. 关于static成员和方法总结
     在类中,用 static 声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点:
      为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。
      对于该类的所有对象来说,static 成员变量只有一份。被该类的所有对象共享
      一般用“类名.类属性/方法”来调用。(也可以通过对象引用或类名(不需要实例化)访问静态成员。)
      在 static 方法中不可直接访问非 static 的成员
     尽管static作用于某个字段时,肯定会改变数据创建方式(因为一个static字段对每个类来说都只有一份存储空间,而非static字段则是对每个对象都有一个存储空间),但是如果static作用于某个方法,差别却没有这么大.static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它.正如我们看到的那样,对于定义main方法很重要,这个方法是运行一个应用的入口点

Static关键字_static初始化块

  1. 构造方法用于对象的初始化.静态初始化块,用于类的初始化操作.在静态初始化块中 不能直接访问非 static 成员
  2. 示例
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41649001/article/details/106609200