类变量和类方法【静态变量 static】

news2024/11/24 3:20:22

类变量和类方法【静态变量 static】

  • 类变量
    • 什么是类变量
    • 如何定义类变量
    • 如何访问类变量
    • 类变量使用注意事项和细节
  • 类方法
    • 类方法的基本介绍
    • 类方法的调用
    • 类方法应用案例
    • 类方法经典的使用场景
    • 类方法使用注意事项和细节

类变量

什么是类变量

  类变量,也叫静态属性/静态变量,是该类的所有对象共享的变量;
  1)任何一个该类的对象去访问它时,取到的都是相同的值;
  2)任何一个该类的对象去修改它时,修改的也是同一个变量。

如何定义类变量

定义语法:
  访问修饰符   static   数据类型   变量名;(推荐)
  static   访问修饰符   数据类型   变量名;

如何访问类变量

   类名 . 类变量名 (推荐)
   或者   对象名 . 类变量名
   (静态变量的访问修饰符的访问权限、范围 和 普通属性是一样的)

public class VisitStatic {
    public static void main(String[] args) {

        // 类名.类变量名
        // 说明:类变量是随着类的加载而创建,所以即使没有创建对象实例也可以访问
        System.out.println(A.name);
        A a = new A();
        // 通过 对象名.类变量名
        System.out.println("a.name = " + a.name);
    }
}

class A{
    // 类变量
    public static String name = "欧也妮·葛朗台";
}

运行结果:
在这里插入图片描述

类变量使用注意事项和细节

1、什么时候需要使用类变量

  当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量);

  比如:定义学生类,统计所有学生共交多少钱;

	Student(name, static fee)

2、类变量与实例变量(普通属性)区别

  类变量是该类的所有对象共享的,而实例变量是每个对象独享的;

3、加上 static 成为类变量或静态变量,否则称为 实例变量/普通变量/非静态变量

4、java设计者推荐我们使用 类名.类变量名 方式去访问类变量

  前提:满足访问修饰符的访问权限和范围。

5、实例变量不能通过 类名.类变量名 方式访问

6、类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量了

7、类变量的生命周期是随类的加载开始,随着类消亡而销毁

类方法

类方法的基本介绍

类方法也叫静态方法

形式如下:

  访问修饰符   static   数据返回类型   方法名(){   } ;(推荐)
  static   访问修饰符   数据返回类型   方法名(){   } ;

类方法的调用

使用方式:
  类名 . 类方法名   或者   对象名 . 类方法名(前提是 满足访问修饰符的访问权限和范围)

public class VisitStatic {
    public static void main(String[] args) {

        // 类名.类方法名
        // 说明:类方法是随着类的加载而创建,所以即使没有创建对象实例也可以访问
        B.printStar();
    }
}

class B{
    // 类变量
    public static void printStar(){
        System.out.println("⭐⭐⭐⭐⭐");
    }
}

运行结果:
在这里插入图片描述

类方法应用案例

统计学费总和

public class StaticMethod {
    public static void main(String[] args) {
        // 创建两个学生对象,交学费
        Student tom = new Student("tom");
        tom.payFee(100);

        Student jack = new Student("jack");
        jack.payFee(100);

        // 输出当前收到的总学费
        Student.showFee();  // 200
    }
}


class Student {
    private String name;

    // 定义一个静态属性,来累积学生的学费
    private static double fee = 0;

    public Student(String name) {
        this.name = name;
    }

    // 说明
    // 1. 当方法使用了static修饰后,该方法就是静态方法
    // 2. 静态方法就可以访问静态属性
    public static void payFee(double fee) {
        Student.fee += fee; // 累积
    }

    public static void showFee() {
        System.out.println("总学费有:" + Student.fee);
    }
}

运行结果:
在这里插入图片描述

类方法经典的使用场景


  当方法中不涉及任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。

比如:
  工具类中的方法 utils ,Math类、Arrays类、Collections集合类等。

	System.out.println("9开平方的结果是 = " + Math.sqrt(9));

运行结果:
在这里插入图片描述

类方法使用注意事项和细节

1、类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区

  类方法中无 this参数,普通方法中隐含着 this的参数;

2、类方法可以通过类名调用,也可以通过对象名调用

3、普通方法和对象有关,需要通过对象名调用,比如 对象名.方法名(参数),不能通过类名调用

4、类方法中不允许使用和对象有关的关键字,比如 this 和 super。普通方法(成员方法)可以

5、类方法(静态方法)中,只能访问 静态变量 或 静态方法

6、普通成员方法,既可以访问 普通变量(方法),也可以访问静态变量(方法)


小结: 静态方法,只能访问静态的成员,非静态的方法,可以访问静态成员和非静态成员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1494907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue点击切换组件颜色

例如我有一个这样的组件&#xff0c;我希望在点击组件之后由蓝色变成橙色 先把原来的代码附上(简化掉了叉号&#xff09;&#xff1a; <div v-for"(item, index) in words" :key"index" class"scrollbar-demo-item"><span>{{ item …

一次奇特的应急响应

访问polling.oastify.com 今天&#xff08;2024/3/5&#xff09;在深信服防火墙用户安全日志页面&#xff0c;检测到我的主机在和polling.oastify.com域名进行通信 当时通知我检查我的主机&#xff0c;慌得一批&#xff0c;检查完后可能认为是我代理的问题&#xff0c;把代理关…

YOLOv7独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv7,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

国产嵌入式DSP教学实验箱_操作教程:22-AD采集DA输出实验(采集输出正弦波)

一、实验目的 掌握EMIFA、SPI的使用&#xff0c;了解AD7606、AD5724的芯片特性和使用&#xff0c;并实现基于AD7606采集、AD5724输出正弦波。 二、实验原理 StarterWare StarterWare是一个免费的软件开发包&#xff0c;它包含了示例应用程序。StarterWare提供了一套完整的G…

【CSP试题回顾】201512-2-消除类游戏

CSP-201512-2-消除类游戏 解题思路 输入棋盘大小和颜色: 首先&#xff0c;程序从标准输入读取两个整数n和m&#xff0c;分别代表棋盘的行数和列数。然后&#xff0c;程序读取接下来的n行输入&#xff0c;每行包含m个整数&#xff0c;代表棋盘上每个方格中的棋子颜色。 初始化…

Linux-查看服务器配置信息

一、查看操作系统 1.1、查看操作系统的版本 命令:cat /etc/redhat-release 1.2、查看系统内核 命令:uname –a 二、查看cpu信息 2.1、所有信息 lscpu [root@tes ~]# lscpu Architecture: x86_64 ##cpu架构 CPU op-mode(s): 32-bit, 64-bit Byte Order:…

Qt入门(一)Qt概述

Qt是什么&#xff1f; Qt是一个跨平台应用开发框架。 Qt既包括了一系列的Qt库&#xff0c;还包括诸多配套的开发工具如QtCreater&#xff0c;GUI Designer。Qt本身是由C开发的&#xff0c;但是也提供了其他编程语言的接口。 Qt的定位以及同类 学一种技术&#xff0c;最重要的是…

vue3 如何通过一个方法触发点击事件

需求&#xff1a;在通过一个btn按钮触发另外一个按钮的点击事件。达到点击ok&#xff08;model框按钮&#xff09;,触发create&#xff08;form表单&#xff09;按钮的事件 <!-- 1.首先通过ref创建了一个名为linkRef的引用变量&#xff0c;并将其初始化为null。 --> <…

MySQL进阶之(四)InnoDB数据存储结构之行格式

四、InnoDB数据存储结构之行格式 4.1 行格式的语法4.2 COMPACT 行格式4.2.1 记录的额外信息01、变长字段长度列表02、NULL 值列表03、记录头信息 4.2.2 记录的真实数据 4.3 Dynamic 和 Compressed 行格式4.3.1 字段的长度限制4.3.2 行溢出4.3.3 Dynamic 和 Compressed 行格式 4…

java工程师面试突击第二季分布式,Java视频

一. 什么是架构和架构本质 在软件行业&#xff0c;对于什么是架构&#xff0c;都有很多的争论&#xff0c;每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前&#xff0c;我们先讨论架构的概念定义&#xff0c;概念是人认识这个世界的…

VMwareWorkstation17.0虚拟机搭建WindowsME虚拟机(完整安装步骤详细图文教程)

VMwareWorkstation17.0虚拟机搭建WindowsME虚拟机&#xff08;完整安装步骤详细图文教程&#xff09; 一、Windows ME安装准备工作3.1 Windows ME下载地址3.2 DOS软盘版下载地址3.3 UltraISO 4.用VMware虚拟模仿当年的电脑配置4.1 新建虚拟机4.2 类型配置4.3 类型配置4.4 选择版…

1、MQ_介绍、优缺点、类型等

MQ介绍 1. MQ概述 MQ&#xff08;Message Queue&#xff09;&#xff1a;消息队列&#xff0c;是基础数据结构中FIFO&#xff08;first in first out&#xff09;的一种数据结构。一般用来解决流量削峰、应用解耦、异步处理等问题&#xff0c;实现高性能&#xff0c;高可用&a…

NOC2023软件创意编程(学而思赛道)python小高组复赛真题

目录 下载原文档打印做题: 软件创意编程 一、参赛范围 1.参赛组别:小学低年级组(1-3 年级)、小学高年级组(4-6 年级)、初中组。 2.参赛人数:1 人。 3.指导教师:1 人(可空缺)。 4.每人限参加 1 个赛项。 组别确定:以地方教育行政主管部门(教委、教育厅、教育局) 认…

基于java springboot+VUE疫情防疫系统系统前后端分离设计和实现

基于java springbootVUE疫情防疫系统系统前后端分离设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

K8s Pod 进阶

目录 资源限制 Pod 和容器的资源请求和限制 CPU 资源单位 内存资源单位 示例1 示例2 重启策略&#xff08;restartPolicy&#xff09; 示例 健康检查 探针的三种规则 Probe支持三种检查方法 示例1&#xff1a;exec方式 示例2&#xff1a;httpGet方式 示例3&…

C++--调整数组顺序使奇数位于偶数前面

题目&#xff1a; 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有的奇数位于数组的前半部分&#xff0c;所有的偶数位于数组的后半部分&#xff0c;并保证奇数和奇数&#xff0c;偶数和偶数之间的相对位置不变。 方法一&#xff1a; …

第三届国际亲子游泳学术峰会,麒小佑为亲游行业提供健康解决方案

第三届国际亲子游泳学术峰会大合影 2024年2月26—28日&#xff0c;第三届国际亲子游泳学术峰会在中国青岛成功召开。 第三届国际亲子游泳学术峰会是中国婴幼游泳行业最高标准的学术性会议&#xff0c;由亲游圈主办&#xff0c;旨在为本行业搭建一个高端圈层&#xff0c;帮助机…

保留数据的重装系统教程!(win10系统)

上车警告&#xff01;&#xff01;&#xff01; 本教程无需思考&#xff0c;跟着操作一步一步来就能完成系统的重装。原理是将C盘系统重装&#xff0c;其他盘符数据保存。适用于系统盘重装数据或更改系统版本。 重要提示&#xff01;&#xff01;&#xff01; C盘有重要学习资…

18个惊艳的可视化大屏(第18辑):数字资产场景

hello&#xff0c;我是贝格前端工场&#xff0c;本次分享可视化大屏在数字资产领域的应用&#xff0c;喜欢文章的别忘点赞关注&#xff0c;文章底部也有其他行业的案例&#xff0c;有需求您说话&#xff08;可私信&#xff09;。 数字资产可视化大屏可以应用于各种场景&#x…

从零学习Linux操作系统 第三十一部分 ansible常用模块介绍

一、ansible运行模块的两种方式 Ad-Hoc方式 ##利用ansible命令直接完成管理&#xff0c;主要用于临时命令使用场景 playbook方式 ##ansible脚本&#xff0c;主要用于大型项目场景&#xff0c;需要前期的规划&#xff0c;相当于shell当中的脚本 二、如何查看模块帮助 ansible…