static变量放哪里区域 static关键字基本概念和应用

首先描述了用静态关键字修改java类、方法、变量和代码块的方法。然后,从底层分析静态关键词。接下来给出了一些静态的使用场景和案例。最后对静态做了总结,包括静态和普通变量的区别。好了,开始今天的文章。一、静态关键字的基本用法1。静态关键字的基本概念我们可以用一句...

首先描述了用静态关键字修改java类、方法、变量和代码块的方法。然后,从底层分析静态关键词。接下来给出了一些静态的使用场景和案例。最后对静态做了总结,包括静态和普通变量的区别。

好了,开始今天的文章。

一、静态关键字的基本用法

1。静态关键字的基本概念

我们可以用一句话来总结:不创建对象,调用方便。

也就是说,由static关键字修饰的对象可以直接根据类名来访问,而不需要创建一个对象来调用。下面根据static关键字的四种基本用法来描述这个概念。然后我们会在下一部分分析静态的原理。希望你能认真看完。

2,静态关键字装饰类

Java static一般用于修改成员变量或函数。然而,用static修饰内部类有一个特殊的用途。普通类不允许被声明为静态的,只有内部类可以。以下是使用方法。

如果内部类没有用static修饰,那么只有一个外部类实例可以是新的。然后通过外部实例创建内部类。

3、静态关键字修饰方法

在装饰一个方法的时候,它实际上和一个类是一样的,可以通过类名直接调用:

4。static关键字修改变量

由static修改的成员变量称为静态变量,也称为类变量,表示这个变量属于这个类,而不是一个对象。未被static修改的成员变量称为实例变量,表示该变量属于特定对象。

我们也可以用上面的方法来调用变量:

5。static关键字修饰代码块

静态代码块在第一次加载类时执行。这里主要是想验证一下类初始化的顺序。

父类静态变量父类静态代码块子类静态变量子类静态代码块父类普通变量父类普通代码块父类构造函数子类普通变量子类普通代码块子类构造函数

验证代码:

首先我们定义一个父类。

然后定义一个子类。

看看结果

二。深入分析静态关键字

上面我们只是描述了静态关键字的基本使用场景,下面主要分析静态关键字的深层原理。要理解为什么static具有上述特性,首先我们需要从jvm内存开始。我们先给出一个java的内存结构图,然后通过一个案例描述一下静态修饰的变量存放在哪里。

从上图我们可以看到,静态变量存储在方法区,由所有线程共享。先说java堆。java堆存储我们创建的实例变量。

堆区域:

1.所有对象都被存储,每个对象都包含相应类的信息。(上课的目的是为了得到操作说明)

2.jvm只有一个由所有线程共享的堆。堆不存储基本类型和对象引用,只存储对象本身。

堆栈区域:

1.每个线程都包含一个堆栈区,其中只存储基本数据类型的对象和自定义对象的引用(不是对象),所有对象都存储在堆区。

2.每个堆栈中的数据(原始类型和对象引用)是私有的,不能被其他堆栈访问。

3.堆栈分为三个部分:基本类型变量区、执行环境上下文、操作指令区(存储操作指令)。、

方法区域:

1.也叫静态区,和堆一样,是所有线程共享的。该方法包含所有的类和静态变量。

2.方法区域包含在整个程序中总是唯一的元素,比如类和静态变量。

这里有一个案例,从记忆的角度来说明为什么static关键字会有这样的特点。

首先我们定义一个类。

接下来,我们从记忆的角度来看。

从上面可以看出,当我们的方法被调用时,是从方法区调用的,只是堆内存不同。堆内存中的成员变量lastname是随着对象产生的。随着物体的消失而消失。静态变量是所有线程共享的,所以不会消失。这也可以解释上面静态关键词的真正原因。

以下是static关键字的摘要:

(1)特点:

1.static是用于修改成员的修饰符。(成员变量,成员函数)由static修改的成员变量称为静态变量或类变量。

2.用static修饰的成员由所有对象共享。

3.静态优先于对象,因为静态的成员在加载类时已经存在。

4.用static修饰的成员多了一个调用方法,可以用类名(class name)直接调用。静态成员)。

5.静态修饰的数据是共享数据,存储在对象中的数据是唯一数据。

(2)成员变量和静态变量的区别:

1.不同的生命周期:

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

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

2.不同的通话方式:

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

静态变量可以由对象或类名调用。(建议用类名调用)

3.不同的别名:

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

静态变量被称为类变量。

4.不同的数据存储位置:

成员数据存储在堆内存中的对象中,因此也称为对象的唯一数据。

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

(三)静态使用注意事项:

1.静态方法只能访问静态成员。(非静态可以访问静态和非静态)

2.不能在静态方法中使用this或super关键字。

3.主要功能是静态的。

好了,静态关键词介绍完毕。

本文来自少年我念你投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/542546.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 05-11
下一篇 05-11

相关推荐

  • php时间代码 php变量和字符串拼接

    对于一门编程语言来说,对文件和目录的操作是其最基本的功能。我们日常生活中最常见的图片上传、文件上传等功能,都需要文件和目录操作的支持。今天我们先简单学习一下PHP中关于目录操作的一些类和函数。目录分隔符和路径分隔符我们先来看两个常量,分别是目录和路径的分隔符

    2023-07-27 01:02:01
    753 0
  • java配置环境变量步骤 java开发环境的搭建方法

    前面的操作和WIN7系统基本相同。可以看看我之前的文章。在[系统变量]中,双击[路径]环境变量。点击【新建】,我们需要自己新建一行。首先,在JDK安装目录中找到bin文件夹,打开bin文件夹,点击地址栏,***路径信息,粘贴到新建对话框中。可以上移到第一位(建议,不是必须,方

    2023-07-18 01:46:01
    272 0
  • php全局变量有哪些 php的安装和配置教程

    我们之前学过J***A,应该熟悉变量的概念。这里我们再次回顾变量,重点是PHP变量和J***A变量的区别。学习J***A时,我们知道J***A变量有三个要素(数据类型、变量名、变量值);使用J***A变量有三个步骤(首先声明,然后在使用前赋值)。PHP变量灵活易用。1.什么是变量?变量是在程

    2023-06-26 09:19:01
    850 0
  • Java环境变量配置 java环境变量配置步骤

    Java环境变量配置文章目录Java环境变量配置1.下载jdk2.安装jdk2.1 单击exe文件安装(一路下一步)2.2安装成功3.配置环境变量3.1找到环境变量配置页面3.2点击环境变量进行如下设置(所有的设置都在系统变量中设置)新建环境变量2.配置J***A_HOME4.检查是否成功5.jdk配置成功1.

    2023-06-19 06:04:01
    826 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信