Java中static关键字详解

简介: 笔记

static关键字特点

static是一个修饰符,用于修饰成员。(成员变量,成员函数)static修饰的成员变量 称之为静态变量或类变量。

static修饰的成员被所有的对象共享。

static优先于对象存在,因为static的成员随着类的加载就已经存在。

static修饰的成员多了一种调用方式,可以直接被类名所调用,(类名.静态成员)。

static修饰的数据是共享数据,对象中的存储的是特有的数据。


成员变量和静态变量的区别


1、生命周期的不同:


成员变量随着对象的创建而存在随着对象的回收而释放。

静态变量随着类的加载而存在随着类的消失而消失。

2、调用方式不同:


成员变量只能被对象调用。

静态变量可以被对象调用,也可以用类名调用。(推荐用类名调用)

3、别名不同:


成员变量也称为实例变量。

静态变量称为类变量。

4、数据存储位置不同:


成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。



静态使用时需要注意的事项

静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)

静态方法中不可以使用this或者super关键字。

主函数是静态的


static关键字的基本用法


1.static修饰成员变量

(1)当分析对象中所具备的成员变量的值都是相同的。这时这个成员就可以被静态修饰。

(2)只要是数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。

(3)如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中,是静态的。


对静态变量的引用有两种方式:


类.静态变量

对象.静态变量

静态变量无需实例化对象,直接通过类名即可访问。而没有static修饰的成员变量,则需要首先由类实例化对象,再通过对象访问该成员变量才可以。


2.static修饰成员方法

(1)static的另一个作用,就是修饰成员方法。相比于修饰成员属性,修饰成员方法对于数据的存储上面并没有多大的变化,因为我们从上面可以看出,方法本来就是存放在类的定义当中的。

(2)static修饰成员方法最大的作用,就是可以使用”类名.方法名”的方式操作方法,避免了先要new出对象的繁琐和资源消耗。

(3)static修饰的方法成为类的方法,使用时通过“类名.方法名”的方式就可以方便使用,相当于定义了一个全局的函数(只要导入该类所在的包即可)。所以相应地,非静态方法则还是要通过实例化对象,再通过“对象.方法名”的方式访问。

(4)由于静态方法可以直接通过类名调用,说明调用静态方法的时候,是不存在对象的,所以,静态方法中不能有this与super关键字!并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用,即使存在类实例化的对象,也不清楚具体调用哪一个对象的非静态成员变量或者方法。


静态方法只能访问所属类的静态成员变量和成员方法。但是反过来,非静态方法是可以访问静态方法与静态成员变量的。


3.static 修饰代码块

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。


4.static内部类

static内部类是指被申明为static的内部类,他可以不依赖于外部类实例对象而被实例化,而通常的内部类需要外部类实例化后才能实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态成员方法,只有内部类才能被申明为static。


相关文章
|
28天前
|
存储 Java
Java 中的静态(static)
【10月更文挑战第15天】静态是 Java 语言中一个非常重要的特性,它为我们提供了一种方便、高效的方式来管理和共享资源。然而,在使用过程中,我们需要谨慎考虑其优缺点,以确保代码的质量和可维护性。
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
30 3
|
2月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
23 5
|
2月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
208 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
3月前
|
存储 Java
Java之静态(static)与实例(instance)
Java之静态(static)与实例(instance)
|
4月前
|
Java
【Java基础面试四十一】、说一说你对static关键字的理解
这篇文章主要介绍了Java中static关键字的概念和使用规则,强调了类成员与实例成员的区别及其作用域的限制。
|
4月前
|
存储 Java 对象存储
【Java基础面试四十三】、 static和final有什么区别?
由于网络原因,我无法获取到您提供的链接内容。如果需要我解析该网页,请确保链接有效并重试,或者提供其他问题,我会尽力帮助您。
|
4月前
|
Java
【Java基础面试四十二】、 static修饰的类能不能被继承?
这篇文章讨论了Java中static关键字修饰的类是否可以被继承,解释了静态内部类的概念、规则以及如何实例化。
|
4月前
|
Java
【Java】static 类方法中注意事项
【Java】static 类方法中注意事项
|
4月前
|
Java
【Java】static 修饰成员方法
【Java】static 修饰成员方法