C C++ Java中的static
【原文出处】:
http://hi.baidu.com/aezealer/blog/item/fb8fdd438113c8169213c6c5.h
tml
术语“static”有段不寻常的历史。起初,在C中引入关键字static是为了
表示退出一个块后仍然存在的局部变量。
在C中static实际通常有两种含义:一是在声明局部变量时,表示该局部变
量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,
在下一次该函数调用时,该变量已有的值,就是上一次函数调用结束时的值
;另一种含义是表示不能被其他文件访问的全局变量和函数。
后来,C++重用了这个关键字,并赋予它一种新的含义:表示属于一个类
而不是属于此类的任何一个特定对象的变量和函数。这种含义同在Java中是
一样的。
这样定义一个类后,每一个雇员有一个ID号码,和一个雇员数。但实际雇员
数是没有必要在每个雇员中都保留一份的。对于一个类Eemployee只需一个
雇员数就可以了。而且每一个雇员有一个雇员数,当雇员数变化时,还要更
新每一个雇员内的字段,比较麻烦。而static正式解决这个问题的一种方法。
无论在Java还是在C++中,若将一个数据成员还是方法声明为staic。无论类
有多少个实例,这个数据成员或方法只有一个。下面,我们在Java和C++中
分别讨论它。
在Java中,静态变量并不常见,最长使用的是静态常量。如在Math类中定
义了一个静态常量。
Java:
public class Math
{
……
public static final double PI=3.14159265358979323846;
……
}
C++:
#include <iostream>
using namespace std;
class MathClass
{
public:
static double PI ;
};
double MathClass::PI = 3.1415926;
int main ()
{
cout << MathClass::PI;
}
在程序中可以使用Math.PI来访问此常量。如果关键字static被省略,那么PI
则是Math类的一个实例字段。也就是说如果要访问PI,需要通过Math类的
一个对象,而且每个对象都有自己的一份PI拷贝。
在C++中,静态数据成员通常放在类的内部实现部分中定义。定义时,需
要用类名引导。在对静态数据成员访问时,使用类名或对象名都可以。通常
静态数据成员用的较多的场合为:
· 用于保存流动变化的对象个数。
· 作为一个标记,指示一个特定的动作是否发生。
· 一个指向一个链表第一个或最后一个成员的指针。
无论在Java中还是在C++中,静态方法是不向对象施加操作的方法。可以把
静态方法看作是没有this参数的方法(在C++中即为没有this成员指针的函数
)。因为静态方法并不操作对象,所以不能用静态方法类访问实例字段。但
是它可以访问自身类中的静态字段。
通常在以下良两种情况下需要使用静态方法:
1.该方法不需要访问对象的状态,其所需的参数都通过显示参数提供。
2.该方法只需要访问类的静态字段。
C C++ Java中的static的更多相关文章
- (转)Java中的static关键字解析
转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...
- 关于Java中的static关键字
Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...
- Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- java中的static使用--静态变量、静态方法
Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 s ...
- (转)Java中的static关键字解析
转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...
- Java中的static的使用
Java中的static使用之静态变量 神话丿小王子的博客主页 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象 ...
- java中的static详解
如果一个类成员被声明为static,它就能够在类的任何对象创建之前被访问,而不必引用任何对象.static 成员的最常见的例子是main( ) .因为在程序开始执行时必须调用main() ,所以它被声 ...
- Java 中的 static 使用之静态变量
大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中 ...
- Java中的static关键字解析 转载
原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...
- java中的static变量
java中的static变量 例如 public static int num=0: num+=1;放在函数里面 调用一次变动一次.
随机推荐
- ubuntu14.04下嵌入式工作环境搭建
昨天作死一不小心把小红帽home目录下的东西删光了.跟着国嵌的视频学了这么久,对linux也算是有些熟悉,就决定自己在ubuntu下搭建一个工作环境.整个过程还算比较顺利,不过也有些小波折.下面把这次 ...
- [转载]使用uiautomator做UI测试
这个只是单纯的mark一下.还没有认真去研究.鉴于最近也不会做手机的自动化测试,所以留作以后参考吧. 转自: http://blog.chengyunfeng.com/?p=504 在Android ...
- bda_百度百科
bda_百度百科 bda
- android的intent打开系统程序
打开设置主界面 Intent intent = new Intent(Android.provider.Settings.ACTION_SETTINGS); //系统设置 startActivityF ...
- 【web开发问题】HTTP请求POSTDATA中包含多层对象如何获取?
postdata如下: TravelerID=&ChineseName=***&PhoneNumber=&IDNumber=&IsCommonUse=&Gues ...
- android中画文字的换行 办法(对于遇到canvas.drawText(String s )无法实现换行问题的解决)
在使用canvas.drawText()绘制文字的时候,发现,如果需要绘制的文字较长,需要换行,通过在文字中加上“\n"或者”\r\n"都无法实现换行,如果非要使用canvas.d ...
- Android常用的物理按键及其触发事件
Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可:当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用.不过,为了侦听这个 ...
- 泛泰A870刷4.4专用英文版非触摸CWM Recovery 6.0.4.8(三版通刷)
首先声明. 发此Recovery的目的是測试能否够三版都能够启动. 而且不会出现像850 860之前出现过的卡第一屏问题! 不希望看到某些人士的过度解读!! 此Recovery能够刷第三方4.4 RO ...
- swift开发笔记24 解决键盘遮挡输入框 的方法
很简单,就是开始输入时把整个view的frame上移,也就是把y值减小就行了,至于减少多少自己调 ,也可以动态获取参见(http://blog.csdn.net/lengshengren/articl ...
- 《UNIX网络编程》之select IO
select 函数的原理 select 管理者 用select来管理多个IO 一旦其中的一个或者多个IO检测到我们所感兴趣的事件, select 函数返回,返回值为检测到的事件个数 然后,遍历事件,进 ...