当前位置: 首页 > news >正文

Java基础——自学习使用(static关键字)

一、static关键字是什么?

static修饰的代码属于类,定义的变量存储在方法区的静态常量池当中

二、static可以修饰什么

1.static修饰变量

static修饰的变量叫做类变量,被所有该类产生的对象所共享,存储在方法区的静态常量池中

2.static修饰方法

static修饰是的方法属于静态方法,static修饰的方法才能调用static修饰的方法

3.static修饰代码块

static修饰的代码块在main方法运行之前运行,其目的是优化程序

三、java为什么设计static关键字

因为要方法类去使用自己的方法和变量

1.假设不使用static关键字

   则如果方法和变量属于非静态,只有在对象当中才会被分配内存空间,也就是说只能由对象调用。如下:

2.使用static关键字

    对于static修饰的变量或者方法,我们建议使用类去调用,虽然对象也可以做到,但是不推荐。

    而从上一张图可以看出如果没有static关键字,那么类是不可以调用自己的属性和方法的,只能用对象去调用

 四、static关键字修饰方法具体用法

1.static修饰的方法无法调用到非静态方法

2.在非静态方法当中可以调用到静态方法

为什么在非静态方法中可以调用静态方法?

        因为hhh被static修饰属于类变量,存储在方法区的静态常量池当中,被所有对象所共享。然而 fff()方法想要表达的时候就已经创建好了对象,那么静态方法一定是存在的。

五、 非运行状态输出代码结果

一套基本的流程:

示例代码1:

代码流程介绍:

程序执行先去找main()方法启动程序

1.首先先去扫描Test类,返现Test类有父类Base类,先去扫描父类,发现Base类没有父类

2.将Base.class加载进方法区,此时Base类当中的static代码块执行

3.将Test.class加载进方法区,此时Test类当在的static代码块执行

4.main方法入栈---->执行new Test();去创建Test类的对象

5.创建子类对象之前先创建父类对象,所以先执行Base()构造器,在执行Test()构造器! |

示例代码2:

输出:

代码流程介绍:

1.main方法在哪里我们就先去扫描那个类--->首先去扫描Test类,发现没有父类,也没有static修饰的代码,那么编译Test类,并且将main方法入栈

2.执行new Demo("----");在执行之前扫描Demo类,发现没有父类,所以编译Demo类,在编译的过程中static代码块按顺序优先执行

3.首先输出的是11

4.执行 public static Demo demo = new Demo("+++" );此时会涉及到调用Demo构造方法,所以输出===+++

5.输出22

6.编译完毕,回到main方法当中继续执行new Demo(" ---");现在可以创建对象了,也就是进行到了运行阶段

7.通过调佣构造器创建对象:===---

六、Java的值传递

首先静态常量池中有一个变量a,a的默认值为0,main执行,调用modify(a)方法入栈,注意方法的变量是局部变量,只在该方法中起作用。java进行值传递,此时执行a++,然后出栈,局部变量也就没用了,最后输出a的值,此时的a是静态常量池中的变量a,值为0。

 

http://www.lryc.cn/news/430163.html

相关文章:

  • 安装docker+docker远程连接
  • 2080. 邻接点
  • 《计算机操作系统》(第4版)第7章 文件管理 复习笔记
  • uniapp 修复使用 uni.saveImageToPhotosAlbum 方法在部分安卓手机上保存失败
  • 电脑无法新建 Word Excle PPT 这些文件是咋回事
  • CANoe.DiVa的应用——生成TP层测试用例过程流程详解(二)
  • java设计模式--组合模式、适配器模式
  • 保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)
  • Kotlin学习-01创建kotlin学习环境
  • NGINX 之 location 匹配优先级
  • 算法_字符串专题---持续更新
  • Anaconda与conda、pip与conda的区别
  • odoo Request Entity Too Large
  • 【C++ 面试 - 面向对象】每日 3 题(六)
  • 基于tcp c/s的网络通信
  • 论文翻译:Universal and Transferable Adversarial Attacks on Aligned Language Models
  • Axure RP 9高手速成秘籍:解锁终极快捷键,设计效率飙升10倍!
  • Springcloud从零开始--Eureka(一)
  • [数据集][目标检测]agvs仓储机器人检测数据集VOC+YOLO格式967张3类别
  • (八)Flink Join 连接
  • 你也想转行成为一名程序员吗?作为过来人的我希望你想清楚这几个问题再做决定
  • Linux文件属性和打包压缩详解
  • 微服务注册到nacos时,注册失败报错解决
  • 基于Sringboot+Vue个人驾校预约管理系统--论文pf
  • python-逆序数(赛氪OJ)
  • PCIE-flit mode retry
  • 使用Obsidian实现Anki快速制卡
  • Python编程:从入门到实践书籍介绍
  • Vue 3 的 emit 简单使用
  • java在实际开发中反常识bug