【Day3】每日学Java--》详解java中的static成员

news2025/1/15 20:46:49

大家好,我是良辰丫,今天我和大家分享的是java中的static成员,static说难不难,说简单也不简单,主要是细节,很多情况下,你使用了static,却不知道为什么会报错,嘿嘿嘿,细节决定成败,不要着急,我们慢慢往下说。💖💖💖

🧑个人主页:良辰针不戳
📖所属专栏:EveryDay学java
🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。
💦期待大家三连,关注,点赞,收藏。
💞愿与君为伴,共探Java汪洋大海。


目录

  • 1、简述static
  • 2、static修饰成员变量
  • 3、static修饰成员方法
  • 4、static成员变量初始化
  • 5、总结static


1、简述static

static在英文中的意思是静态的,因此呢,它也具有了很多静态的属性,但是它和大家所学的C语言里面的static是不同的,为什么呢?因为java中的static属于类,而C语言没有类这个概念。文字说的再多也不够生动,大家也不能够理解,那我们先拿例子简单理解一下。
①没有static修饰的成员属性被func方法调用,即使num是public,它也没有直接调用的权利。
在这里插入图片描述
②调用前new一个对象,通过对象进行调用就不会报错,理解困难的话大家可以想象成你要向别人借东西,必须先和别人说一下,new可以理解为申请权限。
在这里插入图片描述
③是不是突然发现很神奇,num被static修饰后,可以直接调用了,这就验证了static修饰的成员属性属于类,而不是对象,为什么可以直接调用呢?因为对象也属于类,他们两个平起平坐。
在这里插入图片描述

看完上面,想必大家已经对java中的static有了一定的了解,我们接下来继续介绍static的具体用法。

2、static修饰成员变量

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。还是那句话,可以理解为static修饰的成员变量和对象平起平坐。

  • 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中。
  • 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问。
  • 类变量存储在方法区当中。
  • 生命周期伴随类的一生(类结束生命周期,static也将结束)

①name和main方法在同一个类中,直接通过name就可以调用。

在这里插入图片描述
②main方法和name在不同的类中,只通过name调用会报错。
在这里插入图片描述
③static修饰的成员属性,通过类名.属性名字就可以调用,通过对象也可以调用,但是介意大家使用类名调用,因为static修饰的属性本来就属于类。
在这里插入图片描述
④static修饰的属性通过对象进行访问。
在这里插入图片描述

3、static修饰成员方法

一般而言,我们在类中定义成员属性的时候,我们总会把属性弄成私有的private,保证程序的安全。那么我们如何调用这个属性呢?
①把该属性的值传给一个静态方法,通过调用该方法达到传值目的。
在这里插入图片描述
②方法不是静态的时候,直接调用时会报错,注意是直接调用报错,而不是不能调用。
在这里插入图片描述
③通过对象调用方法,也能达到调用的目的。
在这里插入图片描述

静态方法特性:

  1. 不属于某个具体的对象,是类方法。
  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者。
  3. 不能在静态方法中访问任何非静态成员变量(或者成员方法)。
  4. 静态方法无法重写,不能用来实现多态。

4、static成员变量初始化

  • 静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性。
  • 静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。
  1. 就地初始化
    就地初始化指的是:在定义时直接给出初始值。
    在这里插入图片描述
  2. 静态代码块初始化。
    在这里插入图片描述
  3. 下面的初始化就会报错。
    在这里插入图片描述

5、总结static

看了上面那么多,其实内容没大家想的那么理解,熟悉了就会很简单,谁一生下来就会跑呢?那么我们简单的做一下总结。

  • 静态方法不能直接调用非静态变量(成员方法),若用,通过对象调用。
  • 非静态的方法可以使用类的静态或非静态成员。
  • 在方法中,static不能修饰属性,如 static int num = 10;
  • 系统仅为系统单元分配一个存储单元,所有对象共享这个静态成员变量,若某个对象修改了静态成员变量的值,所有对象使用的都将是修改后的静态成员变量值。
  • 静态成员方法可以通过类名访问,即不需要实例化就可以调动静态成员方法,同时也可以通过对象名访问。

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

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

相关文章

【推免攻略】五.2022年北交计算机学院夏令营、预推免保研经验

欢迎订阅本专栏:《北交计算机保研经验》 订阅地址:https://blog.csdn.net/m0_38068876/category_10779337.html 【推免攻略】一.北交计算机学院夏令营、预推免攻略【推免攻略】二.联系导师的前期准备及注意事项【推免攻略】三.2020年北交计算机学院夏令营、预推免保研经验【推…

Java之网络编程

目录 1.1 概述 1.2 网络通信的要素 1.3 IP 1.4 端口 1.5 通信协议 1.6 TCP (1)消息发送 (2)文件上传 1.7 UDP (1)发短信 (2)聊天(循环发送-循环接收)…

ftp共享盘挂载——curlftpfs挂载FTP服务器

通过curlftpfs来将远程ftp某个目录映射到本地目录,可以达到多台机器共享同一目录的效果。我们是用它来共享脚本的。curlftpfs是通过yum本地源安装的,需要epel支持,需要提前弄好。 一、 安装FTP服务 在联网环境下安装epel yum -y install epel…

唯亚威FI-60光纤识别器

光纤识别器可以轻松地识别光信号,而无需断开光缆或中断网络交通。也可以转换为光功率计(OPM)。VIAVI FI-60 LFI能够使用户轻松检测光信号,而无需断开光缆或中断网络交通。FI-60 LFI还包括了独特的VIAVI SafeChekTM ,以…

精华推荐 |【深入浅出Spring原理及实战】「原理分析专题」从源码和架构设计角度深入剖析BeanPostProcessor的原理和运作机制

🍃 前提概要 Spring具有很好的扩展性,但是这个扩展它的这个扩展性体现在哪里呢?而我们要说的BeanPostProcessor就是对Spring扩展性优秀的表现之一。 🍃 BeanPostProcessor的作用 简单的说就是BeanPostProcessor提供了初始化前后回…

Qt扫盲-QString使用总结

QString使用总结一、概述二、初始化字符串1、极速版2、原理版三、操作字符串1、极速版1. 增加2. 删除3. 修改4. 插入5. 转换2、原理版四、查询字符串五、字符串格式转换六、Null 字符串和 Empty 字符串的区别七、字符串参数格式化八、更高效的字符串构造九、最大大小和出现内存…

疫情之下逆势进阶高级测试拿下20k,看我教你打一场翻盘局...

偶然跟同事交流工作、学习的时候,聊起了近况以及行业的变化,如果说回到三年前,疫情还未影响太深的时候,你会做什么? 本来当时是当玩笑话来问了,以为回答会是一注决定命运的彩票,正当我这样想时…

夏季出汗多中医如何调理

夏季出汗多是什么原因身体哪些方面出了问题?出汗多怎么办呢如何调理?夏季出汗看似是一种很正常的现象,但是如果说出汗过于多可能是身体出现了异常。夏季出汗多的主要原因是气虚,主要是补气固表。在夏天,由于天气炎热,人体出汗过…

随着多点 DMALL 全面 To B 转型

随着多点 DMALL 全面 To B 转型,为越来越多的 B 端客户提供零售全渠道解决方案,需要具备在多云部署环境下提供更具性价比、可复用的大数据底层基座和平台工具链。我们也终于等到了一个契机,彻底甩开历史包袱,设计搭建存算分离、轻…

Git安装和使用

1.工具:Git,下载链接:Releases git-for-windows/git GitHub 下载完成了之后可以看到再程序处可以或者鼠标右击可以看到三个东西,分别是: Git Bash:推荐使用,使用命令风格类似于Linux命令&am…

PyOpenGL安装

PyOpenGL安装 学校图形学大作业, 之前要求是MFC和C , 但是vs mfc c opengl的环境实在是配置的吐血了… 于是润来搞PyOpenGL玩一玩 参考网上经验贴做的 我新建了一个虚拟环境 下载whl文件 我的虚拟环境是python3.7,于是下载下面指出来的两个…

superset vs Tableau

superset the only thing i need to know is how to install superset. it’s difficult to install ?? https://superset.apache.org/docs/intro https://flask-appbuilder.readthedocs.io/en/latest/installation.html how to use superset ? superset is a modern …

Ubuntu下基于Anaconda3 配置任意版本tensorflow和opencv的通用方法

参考 Ubuntu下基于Anaconda3 配置任意版本tensorflow和opencv的通用方法 - 云社区 - 腾讯云 在Github上利用顶会上深度模型时经常会被tensorflow和opencv的版本问题困扰,比如博主最近遇到的需求: 安装更高的版本一般没问题,下面介绍一种配置…

MATLAB应用1——MATLAB傅里叶函数自行封装

主程序: % eximportdata(data3.txt); tx regexp(ex{1}, \s, split);%按照空格分隔字符串,成为单个cell yxstr2double(tx); plot(yx); wwyx(2500:9000)-2055; Fyz_fft(ww,1000); 傅里叶封装函数: function Fyz_fft(y,Fs) % Demon: % Fs 128; …

如何理解UML2.5.1(03篇)

下面先简单列举一下subsets和redefines的特点: 关联端点具有标识subsets表明subsets一端的对象集合是被subsets一端的对象集合的子集。此时,subsets一端的类与被subsets一端的类之间必须存在继承关系。同时,subsets一端的角色名一定与被subse…

Spring与web整合

创建maven的web项目 这个项目src下没有test等文件——手动创建 关于web-app version"3.0" 的问题 如何改成推荐使用的web-app 4.0&#xff1f; 再添加 就是默认4.0版本的了 配置监听器 <?xml version"1.0" encoding"UTF-8"?> <we…

[附源码]JAVA毕业设计线上导医系统(系统+LW)

[附源码]JAVA毕业设计线上导医系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

大学生期末网页大作业:基于HTML+CSS+JavaScript蓝色的汽车设备营销企业网站模板13页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

计算机视觉之SSD改进版本(平滑L1范数损失与焦点损失)《4》

在 计算机视觉之单发多框检测(Single Shot MultiBox Detector)模型《3》中我们使用到的是L1范数损失&#xff0c;L1范数损失也叫做平均绝对误差&#xff08;MAE&#xff09;&#xff0c;目标值与预测值之差的绝对值的和&#xff0c;表示的是预测值的平均误差幅度。它的缺点就是…