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

2024-09-02 12:28

本文主要是介绍[进阶]面向对象之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关键字

这篇关于[进阶]面向对象之static关键字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129949

相关文章

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python进阶之列表推导式的10个核心技巧

《Python进阶之列表推导式的10个核心技巧》在Python编程中,列表推导式(ListComprehension)是提升代码效率的瑞士军刀,本文将通过真实场景案例,揭示列表推导式的进阶用法,希望对... 目录一、基础语法重构:理解推导式的底层逻辑二、嵌套循环:破解多维数据处理难题三、条件表达式:实现分支

Python批量替换多个Word文档的多个关键字的方法

《Python批量替换多个Word文档的多个关键字的方法》有时,我们手头上有多个Excel或者Word文件,但是领导突然要求对某几个术语进行批量的修改,你是不是有要崩溃的感觉,所以本文给大家介绍了Py... 目录工具准备先梳理一下思路神奇代码来啦!代码详解激动人心的测试结语嘿,各位小伙伴们,大家好!有没有想

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Java中的volatile关键字多方面解析

《Java中的volatile关键字多方面解析》volatile用于保证多线程变量可见性与禁止重排序,适用于状态标志、单例模式等场景,但不保证原子性,相较synchronized更轻量,但需谨慎使用以... 目录1. volatile的作用1.1 保证可见性1.2 禁止指令重排序2. volatile的使用

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

javaSE类和对象进阶用法举例详解

《javaSE类和对象进阶用法举例详解》JavaSE的面向对象编程是软件开发中的基石,它通过类和对象的概念,实现了代码的模块化、可复用性和灵活性,:本文主要介绍javaSE类和对象进阶用法的相关资... 目录前言一、封装1.访问限定符2.包2.1包的概念2.2导入包2.3自定义包2.4常见的包二、stati

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编