静态变量的梳理

上传人:kms****20 文档编号:41016858 上传时间:2018-05-28 格式:DOC 页数:14 大小:38KB
返回 下载 相关 举报
静态变量的梳理_第1页
第1页 / 共14页
静态变量的梳理_第2页
第2页 / 共14页
静态变量的梳理_第3页
第3页 / 共14页
静态变量的梳理_第4页
第4页 / 共14页
静态变量的梳理_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《静态变量的梳理》由会员分享,可在线阅读,更多相关《静态变量的梳理(14页珍藏版)》请在金锄头文库上搜索。

1、静态变量的梳理静态变量的梳理1 静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以 0 值。(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予 0 值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点,

2、可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜.(5)静态变量分为全局静态变量和局部变量。2java 中 static 什么时候使用,知道 static 是静态变量,但是不怎么清楚,到底浏览次数:209 次悬赏分:5|解决时间:2011-9-3 10:18|提问者:wkunzhi 知道 static 是静态变量,但是

3、不怎么清楚,到底是什么时候要使用static 什么时候不使用。请各位舒服教导一下,越详细越好问题补充:我就是分布大清楚什么时候该用 什么时候不该用最佳答案声明为 static 的变量实质上就是全局变量。当声明一个对象时,并不产生 static 变量的拷贝,而是该类所有的实例变量共用同一个static 变量。声明为 static 的方法有以下几条限制: 它们仅能调用其他的 static 方法。 它们只能访问 static 数据。 它们不能以任何方式引用 this 或 super0回答时间:2011-8-24 10:55|我来评论向 TA 求助回答者:tongwen1990310 |一级擅长领域:

4、电脑装机硬件程序设计参加的活动:暂时没有参加的活动相关内容2007-11-4java 中静态函数中为什么不能定义 static 变量?72011-4-20java 中抽象类 为什么不能定义为 static 型 在静态方法中为什么不能直接访.22009-5-8Java 静态变量 static 的问题。22010-9-26 在 java 中 main 函数前有 static 修饰,为什么还能使用非静态的构造函数 12011-4-20 小弟想问一下,Java 中静态方法的适用场景是什么呢?也就是说在哪些场景.更多关于 Java 的静态变量在什么情况下使用的问题等待您来回答0 回答 20Microso

5、ft Visual C+6.0 下载地址.0 回答 visual studio 2010 安装缺少组件怎么办.1 回答一个做好的 javascript 脚本(日历程序)怎么样运用在 java Swing 界面的.0 回答急急急!y = 3E-111e0.1319xreturn countTablev急急急!y = 3E-111.0 回答只有 configuration tools 可以实现数据库建立不?完整的sql server2005.0 回答 10 求个 Visual Basic 6.0 工程版 不要说没有 是有的 发我邮箱 530993901qq.0 回答 visual studio 2

6、005 之前安装过,但不小心把某些相关的文件删了,想重.0 回答跪求 java swing 视频插件,及具体方法,万分感谢!.更多等待您来回答的问题其他回答共 9 条所有对象公共的变量考虑用,如全局变量;不需要创建对象的时候考虑用,如某些常量。 回答者: 热心网友 |2011-8-24 10:48 static 除非必要的时候 不建议使用, 因为 static 是程序刚启动的时候 就加加载 static 进内存。这样就算你的业务代码没使用这个 static 对象,这个 static 对象也已经在内存里了。而且知道你程序退出,虚拟机才会销毁他,这意味着 static 是必须占用系统资源。什么时候

7、用的话,这个根据上面那段话就很容易理解了。因为他是再程序刚启动的时候就加载进内存里了,那么就是说不管你程序执行到哪,或有没有实例化这个 static 对象所在类,你都可以调用到这个对象。代码写法:所在类名.static 对象(或方法)例如:class apublic static String userName=“admin“;public a()System.out.println(“实例化 a 类“);要在 b 类里使用这个 static 修饰的 userName 对象class bpublic b()System.out.println(“实例化 b 类“);b.userName = “

8、admin123“;System.out.println(b.userName);这样 调用和修改,执行 b 类后 打印结果 不会打印 a 类构造器的那句话。你想一下就应该能明白什么时候该应了。 提醒一下 static 一般定义一些公共的变量 或者 公共方法。 回答者:128 兆 | 四级|2011-8-24 11:10 一定要看:static 是静态 你不要理解为静态变量因为他不仅仅可以修饰变量还可以修饰 方法 例如:private static void test() 分不清的话我告诉你 那东西并不常用。举例:比如 现在有个persion 类 类里面有 name 属性 和 country=

9、“cn”属性 里面有个 show 方法 这时候你要用这个类 那你自然要 new 他 Persion p1 = new Persoion(); Persion p2 = new Pesion()你想让show 方法打印出 p1 p2 的 名字和国家 这时候就 new 出来了这两个对象 但是呢你会发现 country=“cn”是不变的 但是你 new 了两个对象这样就第二个对象 new 出来的这个 country 变量就占用了一点的空间 这时候你为了节省这一点的空间你就 把这个 country 静态就可以了 静态变量属于类 ,他随着类的加载就加载了 他只会加载一次(这里是重点他只加载一次) 因为这

10、里只加载了一次 ,就比你上面加载了两次 节省了 那一丁点的空间。 。他就这用处 。 。 。 。 。 但是现在的内存已经很大了根本没人注意到这点 你这个问题了。 。所以 人们渐渐的不了解他了。 。不过这东西确实很少用 回答者:ddixc | 五级|2011-8-24 11:29 懒人模式 不想 NEW 了 就写 STATIC 回答者:调和若 | 五级|2011-8-24 11:55 有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字 static(

11、静态的)就能创建这样的成员。如果一个成员被声明为 static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是 main( ) 。因为在程序开始执行时必须调用 main() ,所以它被声明为 static。 声明为 static 的变量实质上就是全局变量。当声明一个对象时,并不产生 static 变量的拷贝,而是该类所有的实例变量共用同一个static 变量。声明为 static 的方法有以下几条限制: 它们仅能调用其他的 static 方法。 它们只能访问 static 数据。 它们不能以任何方式引用

12、this 或 super(关键字 super 与继承有关,在下一章中描述) 。 如果你需要通过计算来初始化你的 static 变量,你可以声明一个static 块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个 static 方法,一些 static 变量,以及一个 static 初始化块: / Demonstrate static variables,methods,and blocks. class UseStatic static int a = 3; static int b; static void meth(int x) System.out.println(“

13、x = “ + x); System.out.println(“a = “ + a); System.out.println(“b = “ + b); static System.out.println(“Static block initialized.“); b = a * 4; public static void main(String args) meth(42); 一旦 UseStatic 类被装载,所有的 static 语句被运行。首先,a 被设置为 3,接着 static 块执行(打印一条消息),最后,b 被初始化为 a*4 或 12。然后调用 main(),main() 调用

14、 meth() ,把值 42 传递给 x。3 个 println ( ) 语句引用两个 static 变量 a 和 b,以及局部变量 x 。 注意:在一个 static 方法中引用任何实例变量都是非法的。 下面是该程序的输出: Static block initialized. x = 42 a = 3 b = 12 在定义它们的类的外面,static 方法和变量能独立于任何对象而被使用。这样,你只要在类的名字后面加点号运算符即可。例如,如果你希望从类外面调用一个 static 方法,你可以使用下面通用的格式: classname.method( ) 这里,classname 是类的名字,在该

15、类中定义 static 方法。可以看到,这种格式与通过对象引用变量调用非 static 方法的格式类似。一个 static 变量可以以同样的格式来访问类名加点号运算符。这就是 Java 如何实现全局功能和全局变量的一个控制版本。 下面是一个例子。在 main() 中,static 方法 callme() 和 static 变量 b 在它们的类之外被访问。 class StaticDemo static int a = 42; static int b = 99; static void callme() System.out.println(“a = “ + a); class StaticB

16、yName public static void main(String args) StaticDemo.callme(); System.out.println(“b = “ + StaticDemo.b); 下面是该程序的输出: a = 42 b = 99回答者:vnnvgyflhz | 二级|2011-8-24 21:38 static 可以说是一种节省内存的一种方法或者是技巧,它不会影响程序的运行但是实际上它已经在默默的占用了一步的内存,只是我们看不到 注意不到 影响不大。static 是静态 你不要理解为静态变量因为他不仅仅可以修饰变量还可以修饰 方法 例如:private static void test() 分不清的话我告诉你 那东西并不常用。举例:比如 现在有个 persion 类 类里面有 name 属性 和 country=“cn”属性 里面有

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号