Java中Static基础知识点,只看这一篇就够了

简介: Java中Static基础知识点,只看这一篇就够了

static的作用


static是静态的意思,可以修饰成员变量和成员方法。

static修饰成员变量表示该成员变量只在内存中只存储一份,可以被共享访问、修改。


image.png


static修饰成员变量的用法


成员变量分为两种


  1. 静态成员变量(有static修饰,属于类,内存中加载一次): 常表示如在线人数信息、等需要被共享的信息,可以被共享访问。
  2. 实例成员变量(无static修饰,存在于每个对象中):常表示姓名name、年龄age、等属于每个对象的信息。


static修饰成员变量的内存原理


1.png


第一步,会加载类到方法区,并且同时将静态成员变量也加载到堆内存中。此时是不加载普通成员变量的,因为普通成员变量是隶属于对象级别的,只有创建了对象才可以生成普通成员变量。


第二步,当代码中有类名直接打点调用静态成员变量时候,直接到堆内存中找就行。

第三步,当new对象的时候,此时栈内存中会有一个地址,同时堆内存中也会开辟一块空间给对象,当然,静态成员变量也是可以通过对象打点调用的,只不过不推荐。


static修饰成员方法的基本用法


成员方法的分类

  1. 静态成员方法(有static修饰,属于类),建议用类名访问,也可以用对象访问。表示对象自己的行为的,且方法中需要访问实例成员的,则该方法必须申明成实例方法。
  2. 实例成员方法(无static修饰,属于对象),只能用对象触发访问。如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。


static修饰成员方法的内存原理


2.png


静态方法最初就加载到了方法区了,普通方法没有是因为普通方法隶属于对象级别的。当类名打点调用方法时候,直接就可以找到方法,同时也是可以通过对对象打点调用的。


static实际应用案例:定义工具类


  1. 工具类中定义的都是一些静态方法,每个方法都是以完成一个共用的功能为目的。
  2. 工具类的好处:一是调用方便,二是提高了代码复用
  3. 为什么工具类中的方法不用实例方法做?
  4. 实例方法需要创建对象调用,此时用对象只是为了调用方法,这样只会浪费内存。
  5. 建议将工具类的构造器进行私有,工具类无需创建对象。
  6. 里面都是静态方法,直接用类名访问即可。


static应用知识:代码块


1.代码块概述

代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。

在Java类下,使用 { } 括起来的代码被称为代码块 。

2.代码块分类


3.png


3.静态代码块的作用

如果要在启动系统时对静态数据进行初始化。

建议使用静态代码块完成数据的初始化操作,代码优雅。


总结


不管是static修饰的成员变量还是成员方法,都是隶属于类级别的,都是可以实现共享的,相反的是隶属于对象级别的,根据不同的场合做出不同的选择。


相关文章
|
3月前
|
安全 Java 编译器
揭秘JAVA深渊:那些让你头大的最晦涩知识点,从泛型迷思到并发陷阱,你敢挑战吗?
【8月更文挑战第22天】Java中的难点常隐藏在其高级特性中,如泛型与类型擦除、并发编程中的内存可见性及指令重排,以及反射与动态代理等。这些特性虽强大却也晦涩,要求开发者深入理解JVM运作机制及计算机底层细节。例如,泛型在编译时检查类型以增强安全性,但在运行时因类型擦除而丢失类型信息,可能导致类型安全问题。并发编程中,内存可见性和指令重排对同步机制提出更高要求,不当处理会导致数据不一致。反射与动态代理虽提供运行时行为定制能力,但也增加了复杂度和性能开销。掌握这些知识需深厚的技术底蕴和实践经验。
76 2
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
18天前
|
存储 Java
Java 中的静态(static)
【10月更文挑战第15天】静态是 Java 语言中一个非常重要的特性,它为我们提供了一种方便、高效的方式来管理和共享资源。然而,在使用过程中,我们需要谨慎考虑其优缺点,以确保代码的质量和可维护性。
|
30天前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
28 3
|
1月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
21 5
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
1月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
178 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
2月前
|
存储 Java
Java之静态(static)与实例(instance)
Java之静态(static)与实例(instance)
|
1月前
|
安全 Java 编译器
Java基础-知识点(二)
Java基础-知识点(二)
13 0
|
1月前
|
存储 缓存 安全
Java基础-知识点(一)
Java基础-知识点(一)
16 0