`
he91_com
  • 浏览: 377368 次
文章分类
社区版块
存档分类
最新评论

static的认识

 
阅读更多

在敲机房收费系统时,Static静态变量一直有点疑问!sharedstatic应该在什么时候应用,到底有什么区别?

百度百科中的解释:


静态全局变量有以下特点:

1,该变量在全局数据区分配内存;---保持内容的持久

2,未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);---默认初始化为0

3,静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;---隐藏

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块.在vb.net中不能用static来声明函数。只能用来声明过程中的静态变量,并且不能用来声明成员变量。shared既可以用来声明变量也可以用来声明函数,但是只能用来声明成员变量,这一点刚好跟static相反。

下面来简明介绍静态变量的作用和缺点:

Static的作用


1)第一个作用:隐藏。


当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。即在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。而且只可被这一模块内的其他函数调用,也就是,这个函数被限制在声明它的模块的本地范围内使用.


应用:在嵌入式系统中,要时刻懂得移植的重要性,程序可能是很多程序员共同协作同时完成,在定义变量及函数的过程,可能会重名,这给系统的集成带来麻烦,因此保证不冲突的办法是显示的表示此变量或者函数是本地的,static即可。


2第二个作用:保持变量内容的持久。


存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。即在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。


(3)第三个作用:默认初始化为0。


其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见;而且此时类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

缺点:

静态方法/变量属于类级别的,意味着不需要创建对象就可以使用,因此有下面缺点:

1. 静态方法不能调用非静态的方法和变量;(非静态方法可以任意的调用静态方法/变量)

2.不能使用this关键字(很明显,它属于类级别,没有创建对象怎么可以用this

VB.net 中为Shared

C# C++.net中为Static

虽然说表现形式不同,但是都是为了解决同一类问题。


至于为什么VB.net的Shared(共享)方法在C#中叫Static(静态)?

请参考博客http://www.newsmth.net/pc/pccon.php?id=2206&nid=227918



分享到:
评论

相关推荐

    c语言中static_用法总结

    介绍c语言中static的各种用法,可以加深对于c语言中static的本质理解认识。

    Java中static、this、super、final用法简谈

    本篇旨在帮助准备学习Java以及刚接触Java的朋友认识、掌握和使用static、this、super、final这几个关键字的使用。Java博大精深,我也是一位正在学习和使用Java的爱好者,文中难免有不妥之处,欢迎指正。

    c语言中static用法总结.pdf

    c语言中static用法总结.pdf 让你全面透彻的认识static的用法,帮你细心总结,让你收获知识。

    Java中static、this、super、final用法

    本篇旨在帮助准备学习Java以及刚接触Java的朋友认识、掌握和使用static、this、super、final这几个关键字的使用。文中难免有不妥之处,欢迎指正。

    C语言静态变量和静态函数

    C_语言静态变量和静态函数,可以让您对C语言静态变量和静态函数有更清晰的认识

    用java编写城镇大龄青年联谊会小游戏代码,并举例说明.docx

    该游戏旨在让城镇大龄青年们在游戏中互相认识、交流和沟通。 ## 游戏规则 游戏的规则非常简单:每个玩家可以在游戏中创建一个个人资料,并将其公开展示给其他玩家。其他玩家可以通过浏览个人资料来了解其他玩家,...

    PING程序设计测试网络连通

    PING程序是我们使用的比较多的用于测试网络连通性的程序。...课程设计中选取PING程序的设计,其目的是希望同学们通过PING程序的设计,能初步掌握TCP/IP网络协议的基本实现方法,对网络的实现机制有进一步的认识。

    CSS之Position全面认识

    正如positioniseverything,本文将主要讲述关于position的理解,力求让您看完本文后对position有着最全面的认识。 position的四个属性值 relative absolute fixed static 下面分别讲述这四个属性 复制代码代码如下...

    CSS之Position详解

    正如positioniseverything,本文将主要讲述关于position的理解,力求让您看完本文后对position有着最全面的认识。 position的四个属性值: relative absolute fixed static 下面分别讲述这四个属性....

    Java类中各成员初始化的顺序

    了解java中类各个成员的初始化顺序是非常重要的,这样你可以对类有全局的认识。不说太多,直接看下面的例子 class Father { static{ System. out.println("父类静态代码块初始化" ); } { System. out.println...

    深入理解css中position属性及z-index属性(推荐)

    有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难。 position属性共有四种不同的定位方法,分别是static、fixed、relative、absolute。最后将会介绍和position属性密切相关的z-index属性。 第一部分...

    C++高质量编程

    程序员是什么样的人?读了这本书也许你会改变对程序员的看法,同时读完本书,你兴许会发现以前...读完本书有助与认识C++的指针、理解const、static的妙用,还有隐藏、覆盖、重写都是什么,还有函数的设计,还有.......

    OpenGl实验报告.doc

    体会 通过本次试验的实践,使我更加了解和初步掌握了OpenGL的用法,对使用OpenGl 绘制球体等图形有了充分认识,并对平移矩阵堆栈和旋转矩阵堆栈的使用有了初步的 掌握。虽然以前没有接触过OpenGl,但是通过学习...

    【最新版】Publii-0.36.1.dmg【亲测可用】最好的静态网站构建工具

    认识Publii,这 是一个带有GUI的新Static CMS,它可以构建一个非常安全,快速和时尚的HTML网站。 从初学者到开发人员,Publii是一个针对每个技能水平的静态网站构建工具。

    前端vue源码(附有详细代码)

    有些项目会在将设计文档和架构图放到md文件上,这样会让你宏观上对一些概念有些认识。例如immer查看项目整体的文件结构。比如下面提到一些重点需要查看的文件package.json,可以从这个文件看到整个项目的入口文件、...

    也谈C#之Json,从Json字符串到类代码

    其中,有如何把json字符串转化成C#类对象,其实这段代码很多人都清楚,大家也都认识,我不多说,先贴代码。  1、添加引用 System.Web.Extensions  2、测试一下代码 1 static class Program 2 { 3 /// ...

    java基础核心总结归纳---参考手册--心得手册-学习资料-总结经验

    认识 Exception 18 什么是 Throwable 18 常⻅的 Exception 19 与 Exception 有关的 Java 关键字 19 什么是 Error 20 内部类 20 集合 20 ArrayList 21 Vector 21 LinkedList 21 Stack 21 HashSet 22 TreeSet 22 ...

    C# IQueryable及IEnumerable区别解析

    清楚认识,这里也是一个数据查询的优化点。 在System.linq命名空间,有两个静态类:Queryable和Enumerable. 在System.linq.Queryable中,参数接收的是一个表达式类型,返回IQueryable接口 public static IQueryable...

    Linux内核–从上向下分析驱动程序层

    在中对网络设备结构,网络设备初始化等函数有了初步认识,并列出了设备的发送和接收函数。  设备接口层会调用函数设备驱动层ei_start_xmit()函数发送数据,这里没有详细分析。 static int ei_start_xmit(struct ...

    c# Newtonsoft 六个值得使用的特性(上)

    看完官方文档,阅读了一些 Newtonsoft 源码,对它有了新的认识,先总结 六个超经典又实用的特性,同大家一起分享,废话不多说,快来一起看看吧~~~ 二:特性分析 1. 代码格式化 如果你直接使用 JsonConvert....

Global site tag (gtag.js) - Google Analytics