首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态静态方法、静态变量区别

引言 一直疑惑静态静态方法、静态变量内存驻用情况。今天就写了个Demo来深入八一八他们区别和注意点。...为了演示方便,方法名和变量名采取中文命名 先上结论 静态变量 只在初始化时加载一次 静态方法和静态方法语法糖 实时加载里面的内容 只读属性 实时加载里面的内容 附有初始值属性语法糖 只在初始化时加载一次...(应该是set里面处理,而不是get里面处理静态有参方法 实时加载里面的内容 无图我还说什么?...请看代码 代码 先看测试Demo 1.非静态静态方法 /// /// 非静态 /// public class TestCommonService...{ /// /// 静态变量 /// public static string 静态变量

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

JVM运行时数据区,静态变量,成员变量,变量

堆:存放对象实例和数组 方法区用于存储已被虚拟机加载信息、常量、静态变量、即时编译器编译后代码和编译加载数据等。运行时常量池是方法区一部分,用于存放编译器生成各种字面量和符号引用。...局部变量和成员变量区别 ①声明位置 局部变量:方法体们中,形参,代码块们中 成员变量中方法外 - 变量:有static修饰 - 实例变量:没有static修饰 ②可用修饰符 局部变量...④作用域 局部变量:从声明处开始,到所属]结束口实例变量:在当前中“this.”(有时this.可以缺省),在其他中“对象名.”访问 变量:在当前中“名.”...或“对象名.”访问 ⑤生命周期 局部变量:每一个线程,每一次调用执行都是新生命周期口 实例变量:随着对象创建而初始化,随着对象被回收而消亡,每一个对象实例变量是独立 变量:随着初始化而初始化...,随着卸载而消亡,该类所有对象变量是共享

97620

PHP静态(static)方法和静态(static)变量使用介绍

在php中,访问方法/变量有两种方法: 1. 创建对象object = new Class(),然后使用”->”调用: 2....直接调用方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件: A. 如果是变量,需要该变量可访问。 B....如果是方法,除了该方法可访问外,还需要满足: b1) 如果是静态方法,没有特殊条件; b2) 如果是非静态方法,需要该方法中没有使用$this,即没有调用非静态变量/方法,当然,调用静态变量/方法没有问题...然后奇怪地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢? 差异还是显然存在,如下: 1....静态方法 静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 方法调用,如之前所述

4.1K10

Java中静态变量(变量)、实例变量、局部变量和成员变量

学习Java过程中,一开始很容易被这些各种变量绕晕,这篇博客主要介绍了这几种变量之间关系和区别。...//成员变量静态变量(变量) public static String level = "SSS"; //成员变量静态变量(变量) public int getAge...成员变量:作用范围是整个,相当于C中全局变量,定义在方法体和语句块之外,一般定义在声明之下;成员变量包括实例变量静态变量(变量); 实例变量:独立于与方法之外变量,无static修饰,...声明在一个中,但在方法、构造方法和语句块之外,数值型变量默认值为0,布尔型默认值为false,引用类型默认值为null; 静态变量(变量):独立于方法之外变量,用static修饰,默认值与实例变量相似...,一个中只有一份,属于对象共有,存储在静态存储区,经常被声明为常量,调用一般是名.静态变量名,也可以用对象名.静态变量名调用; 局部变量方法中变量,访问修饰符不能用于局部变量,声明在方法、构造方法或语句块中

2.1K20

详解java中静态方法有哪些_java静态变量

定义: 在中使用static修饰静态方法会随着定义而被分配和装载入内存中;而非静态方法属于对象具体实例,只有在对象创建时在对象内存中才有这个方法代码段。...原因: 因为静态方法和静态数据成员会随着定义而被分配和装载入内存中,而非静态方法和非静态数据成员只有在对象创建时在对象内存中才有这个方法代码段。...引用静态方法时,可以用名.方法名或者对象名.方法名形式。...第一次使用时候)执行一次,往往用来初始化静态变量。...return t; } } } 总结: (1)static修饰静态方法会随着定义而被分配和装载入内存中,编译器只为整个创建了一个静态变量副本

1.4K10

C++静态变量静态方法使用介绍

转自:https://www.cnblogs.com/sixue/p/3997324.html 最近一直看c++相关项目,但总是会被c++静态成员变量静态成员函数理解感觉很是模糊...,不明白为什么中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下。...但是,全局变量或对象是有局限性。这一章里,我们主要讲述静态成员来实现数据共享。...静态数据成员初始化格式如下:     ::= //静态变量初始化 这表明: (1) 初始化在体外进行,而前面不加static,(这点需要注意...4、引用静态数据成员时,采用如下格式:    :: //静态变量使用方式   如果静态数据成员访问权限允许的话(即public成员),可在程序中,按上述格式来引用静态数据成员

1.1K20

【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 )

一、静态成员变量概念 1、静态成员变量引入 在 C++ 中 , 静态成员变量 又称为 静态属性 ; 静态成员归属 : 静态成员变量 是特殊成员变量 , 是 所有的 成员 , 而不是对象所有的成员...; 静态成员变量 提供了 同类对象共享机制 : 同一个 所有实例对象 , 都可以共享访问 想通 静态成员变量实例 ; 2、静态成员变量声明 静态成员变量 声明 方式 : 使用 static 关键字...// 身高 // 在内部定义静态成员 static int number; }; 3、静态成员变量初始化 静态成员变量 初始化 : 静态成员变量 是在 使用时 , 在外部 进行 初始化 ;...Student 静态成员 成员变量 初始化有两种方式 : 声明 并 进行初始化 : 声明内部已经定义 静态成员变量 , 然后进行初始化 ; // 在外部初始化静态成员变量 int Student...::number = 1; 只进行初始化 : 只对 内部已定义 静态成员变量 进行单纯赋值 ; // 在函数中为 静态成员变量 赋值 Student::number = 2; 4、静态成员变量访问

28920

C++:43---派生向基转换、静态动态变量

二、转换本质 派生可以转换为基本质是: ①为什么派生可以转换为基:派生从基而来,因此派生中包含了基方法和成员。...将子类对象赋值给父对象,相当于将子类中成员变量赋值给父 ?...//假设B公有继承于A A *a; B b; a = &b; //将派生转换为基,正确 B *p = a; //将基再转换为派生,错误 五、静态类型/动态类型 在上面我们介绍过,基指针或引用可以指向于基对象也可以指向于派生对象...,因此一个可以分为是动态类型还是静态类型静态类型变量:在编译时就已经知道是什么类型了 动态类型变量:自己所指类型不明确,直到运行时才知道 如果表达式既不是引用也不是指针,那么其就没有静态类型和动态类型概念...只有在程序运行时候我们才知道所绑定对象真实类型 class A {}; class B:public A{}; int main() { A a; //静态类型 B b; //静态类型 A

1.6K10

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

被 static 修饰变量、被 static 修饰方法统一属于静态资源,是实例之间共享,换言之,一处变、处处变。...结论 2:对象可以使用静态成员函数和非静态成员函数。 在静态成员函数中使用静态成员。...结论 4:静态成员函数可以调用用静态成员函数,但反之不能。 使用静态成员变量。...结论 5:静态成员变量必须先初始化再使用。 思考总结:静态资源属于,但是是独立于存在。从 J 加载机制角度讲,静态资源是初始化时候加载,而非静态资源是实例化对象时候加载。...再给一个利用静态成员变量和函数例子以加深理解,这个例子建立一个学生,每个学生对象将组成一个双向链表,用一个静态成员变量记录这个双向链表表头,一个静态成员函数输出这个双向链表。

89420

关于静态常量类型 修饰 方法变量部分理解

分两个部分进行记录 目录 静态(static) 修饰/方法/变量 静态(static) 修饰 静态(static) 修饰方法/变量 常量(final) 修饰/方法/变量 常量(final) 修饰...常量(final) 修饰方法/变量 静态(static) 修饰/方法/变量 静态(static) 修饰 Java里面static一般用来修饰成员变量或函数。...但有一种特殊用法是用static修饰内部类,普通是不允许声明为静态,只有内部类才可以。被static修饰内部类可以直接作为一个普通来使用,而不需实例一个外部类。...静态(static) 修饰方法/变量 静态属性、静态方法和非静态属性都可以被继承和隐藏而不能被重写{这里之所以不能被重写,是因为重写目的在与多态使用,因为是静态方法,无法实现多态,所以就算重写也是无用...常量(final) 修饰/方法/变量 常量(final) 修饰 final 修饰不能被继承。 常量(final) 修饰方法/变量 1.final修饰成员和成员变量,可以被继承。

84520

java静态全局变量和全局变量区别_java静态全局变量

有时也很难确定给定变量应属于哪个,尤其是当它是一个广泛使用值(例如数据库连接器或数学常数)时。 Java全局变量怎么定义? 在许多语言中,当遇到这样问题时,我们可以声明一个全局变量。...描绘一个,该类变量声明为private int number。...从,而不是从方法参数。...Java为什么不使用全局变量? 这个问题简短答案是:故意设计。Java被创建为纯粹面向对象编程语言,这就是为什么您创建所有内容都包装在一个原因。...单个变量并不一定要保证整个,因此您可以将多个变量包含在一个Reference或一个Constants中: public class Reference { public static final

4.4K40

静态变量使用

Java核心逻辑static、final修饰符 **静态变量静态方法** - 关键字“static”:静态 - static可以修饰属性和方法 - 被static修饰属性称之为变量...(静态变量) - 被static修饰方法称之为方法(静态方法) - 二者都可以直接通过名来访问。...,类属性又称为静态变量,被static修饰     方法我们称为方法,又称为静态方法,静态方法和静态变量都可以直接通过名来访问,所以说,可以     称它为变量方法。...静态变量和实例变量两者区别 - 静态变量在内存中只有一个内存空间,在加载过程中完成静态变量内存分配,可以直接通过名来访问。...- 无论创建了一个多少个对象,静态变量只初始化一次,所有的实例都可以访问此静态变量,而且可以通过名直接访问 - 实例变量是每创建一个新实例对象,就会为它分配不同内存,各个对象访问自己实例变量

61820

【小家java】静态代码块、构造代码块、静态变量、成员变量执行顺序和继承逻辑

和子类变量是同时存在,即使是同名。子类中看到是子类变量,父中看到是父变量,它们互相隐藏,而同名方法则是实实在在覆盖(重写),属性不存在重写哟。...如果超没有不带参数构造器,并且在子类构造器又没有显式地调用超其他构造器,则 java 编译器将报告错误 情况四:子类和父有同名同类型静态常量时候 public class Main...我觉得脑子里应该浮现出一个这样知识点: Java中赋值顺序: 1、父静态变量赋值 2、自身静态变量赋值 3、父成员变量赋值和父块赋值 4、父构造函数赋值 5、自身成员变量赋值和自身块赋值...只有在准备阶段和初始化阶段才会涉及变量初始化和赋值,因此只针对这两个阶段进行分析; 准备阶段:需要做是为变量(static变量)分配内存并设置默认值(注意此处都是先给默认值),因此类变量st...构造器:编译器收集所有静态语句块和变量赋值语句,按语句在源码中顺序合并生成构造器 因此现在执行:st = new StaticTest().此时我们发现,就会进行对象初始化了(看到没,这个时候

1.4K20

静态原罪

什么是静态 所谓静态指的是无需实例化成对象,直接通过静态方式调用。代码如下: <?...静态问题 本质上讲,静态是面向过程,因为通常它只是机械把原本面向过程代码集合到一起,虽然结果是以方式存在,但此时更像是一件皇帝新衣,所以可以说静态实际上是披着面向对象皮儿,干着面向过程事儿...> 有了变量介入,可以在运行时设定具体使用哪个静态: <?php Article::setDao('MockArticleDAO'); Article::save(); ?...> 虽然这样实现方式看似解决了Mock问题,但是首先它修改原有的代码,违反了开闭原则,其次它引入了静态变量,而静态变量是共享状态,有可能会干扰其它代码执行,所以并不是一个完美的解决方案。...… 当然,静态有好一面,比如说很适合实现一些无状态工具,但多数时候,我主观倾向很明确,多用对象,少用静态,避免系统过早固化。顺便说一句,希望别有人告诉我静态类比对象快之类说教,谢谢。

31820
领券