静态成员也称为共享成员,例如静态属性 静态字段 静态方法;静态成员可以在类的实例之间共享。
静态类中只能有静态成员,不能有实例成员,因为静态类不能进行实例化;
在非静态类中 即可以有静态成员 也可以有非静态成员;
只要是静态成员 属性 字段 方法,都需要用类名去调用;
静态成员和实例成员的区别:
静态成员需要通过static修饰,非静态成员不需要通过static修饰;
静态成员属于类,可以直接通过“类名.静态成员”的方式访问;
非静态成员,必须实例化对象后,通过对象.实例成员来访问;
当类第一次加载的时候(第一次被加载到内存的时候),该类下的所有的静态成员都会被加载,实例成员有多少个对象,就会创建多少个对象;静态成员会被加载到静态存储区,直到程序退出时才会被释放;
由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?
①变量需要被共享的时候②方法需要被反复的调用的时候
静态成员和实例成员的区别:静态成员是需要通过static关键字来修饰的,而实例成员不用static关键字修饰。他们区别如下代码:
03 |
static void Main(string[] args) |
05 |
//静态成员属于类,可以直接通过“类名.静态成员”的方式访问 |
07 |
//实例成员属于对象,需要通过“对象名.实例成员”来访问 |
08 |
Person p = new Person(); |
15 |
private static int nAge; |
17 |
private string strName; |
18 |
public static void Run() |
20 |
Console.WriteLine("我会奔跑!"); |
24 |
Console.WriteLine("我会唱歌"); |
当类第一次被加载的时候(就是该类第一次被加载到内存当中),该类下面的所有静态的成员都会被加载。实例成员有多少对象,就会创建多少对象。
而静态成员只被加载到静态存储区,只被创建一次,且直到程序退出时才会被释放。
看下面的代码:
03 |
static void Main(string[] args) |
05 |
Person p = new Person(); |
06 |
Person p1 = new Person(); |
07 |
Person p2 = new Person(); |
14 |
private static int nAge; |
16 |
private string strName; |
17 |
public static void Run() |
19 |
Console.WriteLine("我会奔跑!"); |
23 |
Console.WriteLine("我会唱歌"); |
那么在内存中发生了什么呢?如下图:

由上面显然可知,定义静态的成员是可以影响程序的执行效率的。那么什么时候定义静态的成员变量呢?
①变量需要被共享的时候②方法需要被反复的调用的时候
- C++中类的静态成员与实例成员的区别
C++中类的静态成员与实例成员的区别 1.有static修饰的成员变量或成员函数称为静态成员. 2.在内存中,类的静态数据成员占有一块特定的内存空间,被该类的所有实例(对象)共享.而同一个类的不同对象 ...
- C#扫盲之:静态成员、静态方法、静态类、实例成员及区别
文章目录 1.静态成员.实例成员 2.静态类 3.类的静态成员和非静态成员区别 --------------------------------------分割线------------------- ...
- 【转载】C#扫盲之:静态成员、静态方法、静态类、实例成员及区别
文章目录 1.静态成员.实例成员 2.静态类 3.类的静态成员和非静态成员区别 --------------------------------------分割线------------------- ...
- 函数, arguments对象, eval,静态成员和实例成员
函数创建: 3种创建函数的方式 * 直接声明函数 function funcName(/*参数列表*/){ //函数体 } * 函数表达式 var funcName = function(){ ...
- Java静态成员与实例成员
Java静态成员与实例成员 类是一种类型,类中定义的所有成员都归此的对象所有,这些成员成为实例成员:而某些成员想要被所有类的所有对象共享,此时的成员不属于某个对象,而是属于整个类,这些成员成为静态成员 ...
- JS高级. 03 混入式继承/原型继承/经典继承、拓展内置对象、原型链、创建函数的方式、arguments、eval、静态成员、实例成员、instanceof/是否在同一个原型链
继承:当前对象没有的属性和方法,别人有,拿来给自己用,就是继承 1 混入式继承 var I={ }; var obj = { name: 'jack', age:18, sayGoodbye : fu ...
- 关于javascript中静态成员和实例成员的详细解释
关于javascript中静态成员和实例成员的详细解释 在我们了解什么是静态成员和实例成员之前,我们首先来了解一下什么是实例? 实例就是由构造函数创建出来的对象. 例如案例中 p 就是实例: fun ...
- JS高级——静态成员与实例成员
静态成员:构造函数的属性和方法 实例成员:实例化之后对象的属性和方法 // $("#id").css(); // $("#id").text(); // $.t ...
- js静态成员和实例成员
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- scikit-learn:3.5. Validation curves: plotting scores to evaluate models
參考:http://scikit-learn.org/stable/modules/learning_curve.html estimator's generalization error can b ...
- OpenGL ES 3.0 Graphics Pipeline
一:OpenGL ES 3.0 Graphics Pipeline 渲染管道如下图 1.Vertex Buffer/Arrays Objects的数据由应用程序传进来 2.由上图可以看到Textur ...
- bzoj1293: [SCOI2009]生日礼物(stl堆)
1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...
- sql server执行动态拼接sql(带传参数)和去掉小数点后0的函数
1 exec sp_executesql N'SELECT 2 [Extent2].[Id] AS [Id], 3 [Extent2].[Name] AS [Name], 4 [Extent2].[D ...
- HTML5客户端数据存储机制Web Storage和Web SQL Database
引言 html5本地存储可以选择两种方式,一种是本地存储,一种是sqlite. 比如开发html5的购物车功能,就可以考虑选择其中之一,进行本地存储与操作. 又或者保存用户登录信息,可以使用local ...
- 解决linux ping: unknown host www.baidu.com
如果ping域名的时候出现ping:unknown host xxx.xxx 但是ping IP地址的时候可以通的话 可知是dns服务器没有配置好, 查看一下配置文件/etc/resolv.conf ...
- Shiro授权认证原理和流程
先来张图: 这是一张shiro的功能图: Authentication: 身份认证/登录,验证用户是否拥有相应的身份 Authorization: 授权/权限验证,验证某个已认证的用户是否拥有某个权限 ...
- (转载) 清理缓存 IPackageStatsObserver
清理缓存 IPackageStatsObserver 2016-04-10 13:40 2288人阅读 评论(0) 收藏 举报 分类: android(59) 版权声明:本文为博主原创文章,未经博 ...
- 一袭白衣一 IDEA的破解安装以及汉化
DEA是一款比eclipse用起来更好用的一款代码编辑器,本人之前也是一直在用eclipse来写代码,后来发现了IDEA用起来会更顺手,所以又转用IDEA了,今天给大家分享一下IDEA的下载安装破解以 ...
- swift语言点评十三-Lazy
Lazy Stored Properties A lazy stored property is a property whose initial value is not calculated un ...