首页 > 编程语言 >Java基础——自学习使用(static关键字)

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

时间:2024-08-22 18:51:13浏览次数:12  
标签:调用 Java 关键字 代码 Test 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。

 

标签:调用,Java,关键字,代码,Test,static,修饰,方法
From: https://blog.csdn.net/qq_63125992/article/details/141435149

相关文章

  • Java中对继承的学习
    继承目录继承继承的概念为什么需要继承继承的特性继承的优点和缺点继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为......
  • Java并发编程(八)
    1、volatile有什么用?能否用一句话说明下volatile的应用场景volatile保证内存可见性和禁止指令重排。volatile用于多线程环境下的单次操作(单次读或者单次写)。2、为什么代码会重排序在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排......
  • Java 字符串转换成罗马数字
    键盘录入一个字符串要求1:长度为小于等于9要求2:只能是数字将内容变成罗马数字下面是阿拉伯数字跟罗马数字的对比关系Ⅰ-1,Ⅱ-2,Ⅲ-3,Ⅳ-4,Ⅴ-5,Ⅵ-6,Ⅶ-7,Ⅷ-8,Ⅸ-9注意点:罗马数字里面是没有0的如果键盘录入的数字包含0,可以变成""(长度为0的字符串)packagetest;......
  • Java的循环结构
     一、什么是循环语句在Java中,循环是一种控制结构,允许程序重复执行一段代码块,直到满足特定的条件为止。循环结构在编程中非常重要,因为它可以避免重复编写相同的代码,提高代码的效率和可读性。一、循环条件这是一个判断表达式,用于确定是否继续执行循环。只要循环条件为真,循......
  • 什么是JAVA
    Java发展史机器语言:电子机器能够直接识别的语言,无需经过翻译,计算机内部就有相应的电路来完成它;从使用的角度来看,机器语言是最低级的语言。高级语言:更容易被人们所理解的高级程序语言,符合人类思维模式的程序设计语言,如:C、Java,JavaScript、Python、Go等。汇编语言:面向机器......
  • Java基础--static关键字
    引言        在Java编程中,static关键字是一个非常重要的概念。它可以用于变量、方法、代码块。提供了在内存管理和代码结构上的独特优势,理解并正确使用static关键字是掌握Java编程的重要一步。static关键字是什么?    static关键字是Java中的一个修饰符,用于......
  • jenkins 自动安装 和 手动安装java 或者一些其他环境配置的区别
    由于之前的jenkins存在安全漏洞,升级了jenkins,相应的jenkinsmaster服务器上的javajdk也一起升级为openjdk21.升级后发现:1.新的jenkins的slavenode启动的jar包下载后,在原来的slavenode服务器上面无法正常被执行了。这时我才知道原来升级了jenkins,对应的slavenode启动的jar......
  • Java中什么是反射
    反射文章目录反射反射概述反射是什么反射的作用反射的使用获取Class生成实例对象访问属性调用方法反射的应用反射封装JDBC框架传统写法:封装AddOne方法封装find方法封装updateById方法封装deleteById方法Guava自定义注解反射概述反射是什么反射(Reflection)......
  • Java之日期
    目录日期java.time的API(目前多用time)一、LocalDate1.基本用法2.日期之间的转化3.LocalDateTime计算4.格式化日期二、Instant1.基本应用2.常见方法3.时间计算4.时间转化三、DateTimeFormatter时间格式化1.基本用法2.各类时间格式化四、ZonedDateTime1.基本用法2.Zo......
  • java+vue计算机毕设旅游景点预约系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,人们对旅游体验的需求日益个性化与高效化。传统的旅游预订方式往往存在信息不对称、购票流程繁琐、景点拥堵等问题,影响了游客的......