对static关键字的总结

关于static关键字的总结 本文对static关键字做了简单描述,希望对java初学者有所帮助。 立即下载

1、关于,main方法是static方法,但是为什么非要是static。

  原因就是,如果一个类她定义了main方法的话,那么她的main方法会在这个类的构造函数运行之前被调用。

  由于main方法运行的时候尚未在JVM里生成相应对象(构造函数未被执行),所以要声明为static。

  2、这就涉及到下面的问题,和其他任何方法一样,static方法可以创建或使用与其它类型相同的被命名对象,因此,static方法常常拿来做‘牧羊人’的角色,负责看护与其隶属同一类型的实例群。”

  其实作者的意思是说,按照GOF(模式四人帮)的观点,单实例工厂类的生产方法,应该是static的。

  关于‘牧羊人’的意思是指,在面向对象的语言里,最高级首先是元类,元类(meta class)下面是类,类下面才是对象。对于虚拟机来说,类是元类的对象,static方法是类的方法,而不是对象的方法。

  所以,对象就相当于“羊”,类就相当于“羊圈”盛放和标示“羊”,拿出来一只羊,就要问问,你是哪个羊圈里的?

  static方法相当于“羊圈里的狗”,专门来管理羊。

  而元类才是幕后的‘牧羊人’。

  thinking作者本科是读物里的,后来才转过来读软件工程(那时候学的是c),可能是半路出家的原因,对面向对象的机制,在理解上有出入。

  3关于,“static方法就是没有this的方法”这句话其实这句话是废话,this是对象的引用。而static方法是一个类的方法,不是哪个特定对象的方法,所以在static方法里使用this引用没意义。

  4关于static方法和static属性是不是存储在一个地方的我爱死这个问题了。

  我可以负责任的说,他俩肯定不能存到同一个内存地址里面去(笑),虚拟地址除外。

  其实他们俩不属于哪个特定的对象,所以不会出现在为哪个特定对象分配的内存块里。

  刚才说了,static方法和static属性属于类,所以他俩是被存到相应的类的内存空间里。

  为什么类还有自己的内存空间?是因为特定的类是特定的元类的对象。也就是说,类是某个其它类的对象。而这个元类并未开放给应用程序员。

  其实static是个非常古老的关键字,古老到比这里大部分朋友的年龄还老。 

 

 

.那么在程序中什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足上面所说的两点时,进行一次读取,以后就可以方便的使用了,同时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本(副本我理解为只有一块内存

静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 公用的处理函数,使用静态方法应该没有问题..牵涉到数据共享,静态变量的函数要多考虑...静态变量要小心使用..

静态方法
原理就是共享代码段
共享代码段不会产生任何问题
因为代码段都是给CPU作为"读取"用的,除非你进行恶意"修改"运行时的代码段
所以静态方法是可以放心使用的

静态变量
原理就是共享数据段
同上 只要没有进行"写入"操作就不会产生问题 但是数据通常都是用于读和写 所以静态变量要注意使用

Oracle迁移至华为GaussDB SQL语法和存储过程转换 在将Oracle数据库迁移至GaussDB时,SQL语法和存储过程的转换是确保应用程序正常运行和数据完整性的关键环节。由于两者在数据类型、函数、过程语言等方面存在差异,必须系统化地进行转换和测试。正则表达式脚本:批量替换常见的语法差异。SQL解析工具:解析SQL脚本,生成GaussDB兼容的语法。代码审查工具:自动检查转换后的代码,确保语法和逻辑正确。将Oracle迁移至GaussDB涉及到SQL语法和存储过程的全面转换。通过系统化的转换步骤、使用合适的工具并结合手动调整,可以确保迁移过程的顺利进行。 阅读详情

相关推荐

360加固DEX解密与ELF修复技术解析

本文深入解析了360加固APK的逆向分析技术,重点探讨了其DEX解密与ELF文件修复的核心流程。通过动态调试与Frida脚本,详细拆解了壳的启动机制、反调试绕过、自实现Linker技术,并还原了基于RC4和自定义算法的多层DEX解密过程,为移动安全研究人员提供了实用的实战分析思路。

alice7model的博客 701

static 总结

q

Nancy_fairy的博客 317

RDMA学习笔记-IB五层网络协议和报文结构

Reference InfiniBand Architecture Specification Volume 1, Release 1.3 文章目录IBA 网络协议分层1.链路层1.1 LRH1.2 ICRC1.3 VCRC2.网络层(GRH)3.传输层3.1 BTH3.2 extended transport header4. 报文结构4.1 send request4.2 RDMA Write request4.3 RDMA Read request4.4 ACK4.5 Atomic operatio

u014114310的博客 9468

静态局部变量和静态全程变量static。

1. 什么是static? static 是 C/C++ 中很常用的修饰符,它被用来控制变量的存储方式和可见性。 1.1 static 的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定...

位文杰的博客 4万+

卡尔曼滤波与目标追踪

卡尔曼滤波与目标追踪为什么要学卡尔曼滤波?卡尔曼滤波是什么?一些概率论的知识基础卡尔曼滤波完整推导状态估计计算卡尔曼增益预测和更新 卡尔曼滤波部分我打算分三节(三次博客的内容): 卡尔曼滤波与行人状态估计 扩展卡尔曼滤波(EKF)与传感器融合 过程模型,无损卡尔曼滤波(UKF)与车辆状态轨迹 为什么要学卡尔曼滤波? 卡尔曼滤波以及其扩展算法能够应用于目标状态估计,如果这个目标是行人,那么就是行人状态估计(或者说行人追踪),如果这个目标是自身,那么就是车辆自身的追踪(结合一些地图的先验,GPS等数据的话就

qq_43232556的博客 4171

Python实战:逐笔高频因子构建与回测全流程解析

本文详细解析了使用Python构建与回测逐笔高频因子的全流程。从逐笔数据的价值与清洗入手,通过实战代码演示了‘大买成交金额占比’因子的计算逻辑,并重点阐述了因子正交化处理的重要性以剔除风格影响。最后,提供了一个经典的分位数回测框架来验证因子有效性,并分享了数据质量、计算效率与过拟合等核心避坑指南。

grass的博客 391

static总结

目录内容 static关键字 静态初始化块 首先来说一个凡是 凡是用static修饰的内容,具有以下两个特性: 1、与类有关,与对象无关; 2、一定会在加载期有特殊动作; 因为 static 修饰的属性在内存上没有存放在每个对象身上,所以不是一个对象一个属性,而是全类共享一个属性!存放在数据段的静态区当中,只有一个。 而由于static修饰的属性与对象无关,所以可以直接使用类名**.**该属性进行访问,不用产生对象。 且:static修饰的属性是在加载期的时候产生的,并完成初始化; 那么什么时候使用st

weixin_42888747的博客 172

SDR实战(四)-AD9361使用手册(三)

本节定义了并行数据端口和串行外设接口(SPI),它们使得AD9361与基带处理器(BBP)之间能够传输数据和控制/状态信息。图63展示了这些接口,并提供了AD9361和BBP在宽带无线系统中使用方式的高级概述。数据接口以两种模式之一运行:兼容标准CMOS模式或兼容低压差分信号(LVDS)模式。每个接口都具有以下部分描述的独特特性。使用CMOS模式时:保持了单端-CMOS逻辑兼容性。可以使用一个或两个数据端口。使用两个端口可以提高数据吞吐量。

hutx0924的博客 6244

Static关键字的总结与详解(简单但易忽略)

Static关键字的总结与解释

m0_63248617的博客 407

Autodesk Revit软件二次开发:Revit二次开发中的插件设计与实现

在 Revit 中,族是构成建筑模型的基本单元,可以是门窗、家具等。通过自定义族,可以创建符合特定需求的建筑构件。参数化设计允许族的尺寸、形状等属性根据参数变化而变化。使用 Revit API 创建自定义族涉及多个步骤,包括定义族类型、设置参数、创建几何形状等。// 创建族文档// 定义参数Parameter param = family.FamilyManager.AddParameter("Width", BuiltInParameterGroup.PG_LENGTH, "宽度");

kkchenjj的博客 2230

基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现

在超声CT中,反演算法起着至关重要的作用,它通过从测量数据中恢复出目标物体的内部结构。本文将介绍基于ART算法(Algebraic Reconstruction Technique)和SIRT算法(Simultaneous Iterative Reconstruction Technique)的超声CT反演方法,并提供相应的MATLAB代码实现。本文介绍了基于ART算法和SIRT算法的超声CT反演方法,并提供了相应的MATLAB代码示例。基于ART算法和SIRT算法的超声CT反演及MATLAB代码实现。

2301_79326510的博客 566

c++——static总结

前言 经过static修饰的变量,存储在内存的全局静态区。且被static修饰的变量只能在本模块的所有函数引用。 内存中的存储区域如下: 堆区:是由程序员手动申请(new)与释放(delete)的内存区域。从低地址向高地址申请;内存空间大、存储地址不连续,一般是链式的;速度较慢。 栈区:由编译器自动分配和释放,主要存储 函数的参数值、函数内部的变量的值、函数调用的空间。从高地址向低地址申请;容量有限;速度较快;存储地址连续,会溢出。 代码区:又叫文本段(.text),存放着程序的机器代码,可执行指令就

www_dong的博客 1万+

【GPFS专题4】---IBM Spectrum Scale (GPFS) 原理详解

IBM Spectrum Scale(原名为 GPFS,General Parallel File System)是一种高性能、分布式的集群文件系统,专为大规模数据共享和并行访问设计。它允许多个客户端同时访问共享文件,提供高可用性、容错性和扩展性,广泛应用于高性能计算(HPC)、大数据分析、AI 训练和企业级存储场景。IBM Spectrum Scale 通过分布式架构、并行访问和智能数据管理,为企业提供了高性能、高可用、可扩展的存储解决方案。

jundao1997的专栏 779

关键字static的作用

1、 关键字static的作用是什么? 正确答案: 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这...

zzyzgg的博客 6万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

static关键字详解

1.概述: static:就是多个对象共享同一份数据 一个类的不同对象有些共享的数据,这样我们就可以使用static来修饰 一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,所以凡是本类的对象,都共享同一份。 可以用来修饰成员变量,修饰成员方法,以及静态代码块儿。 2.修饰成员变量: 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一份数据。 ...

liuzf123的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

static关键字

在 Java 中,static 是一个修饰符,用于将类的某些成员(变量或方法)定义为静态的。静态成员是属于类本身的,而不是某个对象的。这意味着,不需要创建类的实例(对象),就可以直接通过类名来访问这些静态成员。

m0_63845908的博客 797

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Static关键字

本文详细阐述了 Java 中的 static 关键字,涵盖其作用、使用场景、注意事项和实际应用。介绍了静态变量、方法、代码块和内部类,通过 Counter 类展示静态变量计数功能,MathUtils 类说明静态方法调用,Example 类呈现静态代码块执行及变量初始化。阐述了单例模式的 static 实现,分析了内存优化示例,指出将 Chinese 类的 country 改为静态变量可节省内存。探讨空指针异常发生情况,强调静态方法不能直接访问实例成员及正确访问方式,解释静态代码块的特点、语法、执行顺序和使用

m0_73941339的博客 1608

static关键字的作用详解

平时工作中static关键字出现的地方挺多的,但是要我说出他们的用法跟区别我还真不知道怎么说,这里系统性的整理下。 static关键字的作用(修饰类、方法、变量、静态块) 1、修饰函数的局部变量: 特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局 2、修饰全局函数和全局变量: 特点:只能在本源文件使用 3、修饰类里面的成员变量: 特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明) 4、修饰.

酷爱编程的小猿同学 9427

Static关键字详解

Static关键字详解

2301_81453175的博客 859

JavaSE之static关键字

这个案例主要讲的是,每一个学生都要对老师讲一遍早上好,我们分析一下这个简单案例,这个早上好是不是只是个动作,而且我们是不是需要全体同学都做这个动作,所以这个时候很容易想对我们的工具类,因为使用一个工具类可以代替这一复杂的操作,就不用n个同学调用n次方法了(其实使用实例方法,写个数组循环,从代码角度上简洁了,但是还是调用n次方法,但是上面的案例就不会,都是在用同一静态方法)。所以这就是静态方法的用处,当然我的例子简单,只是为了说明一些问题,如果遇到的复杂的动作,实际上抽象出来的静态方法更能体现价值!

weixin_56036523的博客 1141

Java的static关键字

static关键字的特点,适用场景以及注意事项

weixin_45927386的博客 783

【面经】static关键字总结

static中文意思是静态的,是C/C++中常见的一个关键字。它一般用于修饰变量(局部变量/全局变量)和函数。对于变量来说,static关键字用来控制变量的存储方式,作用范围和生命周期。下面我们分别在C语言和C++中讨论static的用法。

c565114的博客 1112

static 关键字详解

static 方法就是没有 this 的方法。在 static 方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用 static 方法。这实际上正是 static 方法的主要用途。——《Java编程思想》

格物致知,知行合一。 802
上一篇: Google前美女面试官谈程序员面试的技巧和建议
下一篇: 双系统中卸载windows7的安全方法
chenndd
博客等级 码龄17年 13粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值