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

[进阶]面向对象之static关键字

文章目录

  • 一、什么是static关键字
  • 为什么要设置static关键字
  • 二、static的使用规则
    • 1、static修饰变量:
    • 2.static的修饰方法
  • 练习(定义数组工具类)
  • 练习2(定义学生工具类)
  • 三、static的注意事项

一、什么是static关键字

static关键字是Java中的一个修饰符,用于声明类的成员变量、方法、代码块和嵌套类。使用static修饰的成员属于类本身,而不是类的实例。也就是说,static成员在内存中只有一份,共享给所有实例。

为什么要设置static关键字

1、如果方法和变量属于非静态的,他们只有在对象当中才会被分配内存空间,也就是只有对象才能调用。如果没有static关键字,那么类是不可以调用自己的属性和方法的,只能用对象去调用。
2、方便类去使用自己的方法和变量。

二、static的使用规则

1、static修饰变量:

1.static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量
2.被static修饰的成员变量,叫做静态变量
特点:

  • 该类被所有对象共享

调用方式:

  • 类名调用(推荐)
  • 对象名调用

修饰的变量属于类变量,存储在方法区的静态常量池当中,被所有对象共享。
3.被static修饰的成员方法,叫做静态方法
特点:

  • 多用在测试类和工具类中

  • javabean类中很少会用
    调用方法

  • 类名调用(推荐)

  • 对象名调用

2.static的修饰方法

  • 静态方法是属于类而不是类的实例的方法。它可以在不创建类的实例的情况下被调用。static修饰成员方法最大的作用,就是可以使用"类名.方法名"的方式操作方法,避免了先要new出对象的繁琐和资源消耗。

  • 静态方法只能访问静态变量和调用其他静态方法,不能访问实例变量或调用实例方法。但是在非静态成员方法中是可以访问静态成员方法和静态成员变量。

在这里插入图片描述
在这里插入图片描述

练习(定义数组工具类)

需求:
在实际开发中,经常会遇到一些数组使用的工具类,请按照如下要求编写一个数组的工具类:ArraUtil

  • 提供一个工具类方法printArr,用于返回整数数组的内容
    返回的字符串格式如:10,20,50,34,100
  • 提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)
  • 定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。

代码呈现
在这里插入图片描述
测试类
在这里插入图片描述

练习2(定义学生工具类)

在这里插入图片描述
工具类代码呈现
在这里插入图片描述
javabean类代码省略
测试类代码呈现
在这里插入图片描述

三、static的注意事项

  • 静态方法只能访问静态变量和静态方法
  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法
  • 静态方法中是没有this关键字

总结:
静态方法中,只能访问静态。
非静态方法可以访问所有。
静态方法中没有this关键字


http://www.kler.cn/a/286897.html

相关文章:

  • YOLOv8改进,YOLOv8检测头融合DSConv(动态蛇形卷积),并添加小目标检测层(四头检测),适合目标检测、分割等
  • 代码随想录——串
  • 一个软件分发和下载的网站源码,带多套模板
  • PyQt5 超详细入门级教程上篇
  • logback日志自定义占位符
  • 图的基本概念
  • JVM:浅谈JVM调优策略
  • 在VScode中使用Git将本地已有文件夹提交到Github仓库以便于使用版本控制进行项目开发
  • javaSSMmysql宠物领养系统的设计与实现26292-计算机毕业设计项目选题推荐(附源码)
  • 3.6 Browser -- useFullscreen
  • 深度解析C++中函数重载与引用
  • 编译原理简介
  • 【例003】利用MATLAB绘制有趣平面图形
  • python脚本如何用sleep
  • 深度学习模型量化方法
  • 深入探索 HarmonyOS 的 CustomDialog 组件:高级特性与使用场景
  • TCP和UDP的主要区别以及应用场景
  • 【数据结构】二叉树的链式结构,二叉树的遍历,求节点个数以及高度
  • UE5 Widget文件编译Bug
  • 介绍一下SOME/IP 的Session handing功能
  • vscode 远程SSH连接并配置C/C++开发环境
  • 基于web的校园社区平台
  • axios发送post请求实例
  • Node 缓存、安全与鉴权
  • 【网络安全】WordPress Uncontrolled Resource Consumption
  • 告别AI痕迹:如何让Midjourney创作更自然