【JavaSE】Java基础语法(十四):Static

您所在的位置:网站首页 类方法可以通过类名直接调用 【JavaSE】Java基础语法(十四):Static

【JavaSE】Java基础语法(十四):Static

#【JavaSE】Java基础语法(十四):Static| 来源: 网络整理| 查看: 265

文章目录 概述 特点与应用 注意事项 为什么一个静态方法中只能访问用static修饰的成员?

在这里插入图片描述

\

在这里插入图片描述

概述

\

Java中的static是一个修饰符(也可称关键字),可以用于修饰变量、方法和代码块。

\

特点与应用

static修饰的成员具有以下特点:

被类的所有对象共享 是我们判断是否使用静态关键字的条件 随着类的加载而加载,优先于对象存在 对象需要类被加载后,才能创建 可以通过类名调用 也可以通过对象名调用 静态变量(是类级别的变量):不属于任何实例对象,而是属于整个类,在内存中只有一份拷贝。被static修饰的变量也称为类变量或者静态变量。可以通过“类名.静态变量”的方式访问。 静态方法(是类级别的函数):不依赖于任何实例对象,使用时直接通过“类名.静态方法”的方式调用即可。静态方法只能访问其他静态成员(包括静态变量和静态方法),并且不能访问非静态的实例成员(如对象属性)。 静态代码块(用于初始化静态变量):在类加载时执行,且仅会执行一次。常用于初始化静态变量。 static修饰符的作用: 实现数据共享:因为静态变量是类级别的,所以它们可以被所有对象共享。 方便访问:通过“类名.静态成员”的方式访问比创建对象再访问更加简单方便。 类工具:静态方法通常用于创建工具类或者实现算法,因为它们不依赖于对象状态。 初始化操作:静态代码块在类加载时执行,常用于初始化静态变量和执行静态方法。

\

注意事项 静态方法只能访问静态的成员 非静态方法可以访问静态的成员,也可以访问非静态的成员 静态方法中是没有this关键字

静态成员(包括静态变量和静态方法)可以直接访问类级别的数据,但不能访问实例级别的数据。原因是两者的生命周期不同,实例化对象时才能为其分配内存空间;而静态成员在类加载时就已经被生成,此时还没有对象建立。 静态成员只随所属类的变量和方法调用而加载,而非随着类的实例化而加载。 静态成员存放在类加载的静态存储区,在程序运行结束时回收。 在多线程环境下,由于静态成员共享,可能会发生并发问题,需要进行适当的并发控制处理。

\

为什么一个静态方法中只能访问用static修饰的成员?

1、静态数据成员在定义或说明时前面加关键字static。

2、静态成员初始化与一般数据成员初始化不同。 这表明: (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。 (2) 初始化时不加该成员的访问权限控制符private,public等。 (3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。

4、引用静态数据成员时,采用如下格式: 程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。因为静态是针对类的,而成员变量为对象所有。静态成员函数不属于任何一个类对象,没有this指针,而非静态成员必须随类对象的产生而产生,所以静态成员函数”看不见”非静态成员,自然也就不能访问了类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3