static在C和Java中的区别。 Java中static,final和static final...

java\u91ccstatic\u53d8\u91cf\u548c\u975estatic\u53d8\u91cf\u6709\u4ec0\u4e48\u533a\u522b

static \u4fee\u9970\u7684\u53d8\u91cf\u79f0\u4e3a\u7c7b\u53d8\u91cf\u6216\u5168\u5c40\u53d8\u91cf\u6216\u6210\u5458\u53d8\u91cf\uff0c\u5728\u7c7b\u88ab\u52a0\u8f7d\u7684\u65f6\u5019\u6210\u5458\u53d8\u91cf\u5373\u88ab\u521d\u59cb\u5316\uff0c\u4e0e\u7c7b\u5173\u8054\uff0c\u53ea\u8981\u7c7b\u5b58\u5728\uff0cstatic\u53d8\u91cf\u5c31\u5b58\u5728\u3002
\u4e00\u4e2astatic\u53d8\u91cf\u5355\u72ec\u5212\u5206\u4e00\u5757\u5b58\u50a8\u7a7a\u95f4\uff0c\u4e0d\u4e0e\u5177\u4f53\u7684\u5bf9\u8c61\u7ed1\u5b9a\u5728\u4e00\u8d77\uff0c\u8be5\u5b58\u50a8\u7a7a\u95f4\u88ab\u7c7b\u7684\u5404\u4e2a\u5bf9\u8c61\u6240\u5171\u4eab\u3002
\u4e5f\u5c31\u662f\u8bf4\u5f53\u58f0\u660e\u4e00\u4e2a\u5bf9\u8c61\u662f\uff0c\u5e76\u4e0d\u4ea7\u751fstatic\u53d8\u91cf\u7684\u62f7\u8d1d\uff0c\u800c\u662f\u8be5\u7c7b\u6240\u6709\u7684\u5b9e\u4f8b\u5bf9\u8c61\u5171\u7528\u540c\u4e00\u4e2astatic\u53d8\u91cf\u3002
\u975estatic\u4fee\u9970\u7684\u6210\u5458\u53d8\u91cf\u662f\u5728\u5bf9\u8c61new\u51fa\u6765\u7684\u65f6\u5019\u5212\u5206\u5b58\u50a8\u7a7a\u95f4\uff0c\u662f\u4e0e\u5177\u4f53\u7684\u5bf9\u8c61\u7ed1\u5b9a\u7684\uff0c\u8be5\u6210\u5458\u53d8\u91cf\u4ec5\u4e3a\u5f53\u524d\u5bf9\u8c61\u6240\u62e5\u6709\u7684\u3002
\u5bf9\u8c61\u5728\u5f15\u7528\u6210\u5458\u53d8\u91cf\u662f\u76f4\u63a5\u901a\u8fc7\u7c7b\u540d.\u53d8\u91cf\u540d\u8c03\u7528\uff0c\u5bf9\u8c61\u5728\u5f15\u7528\u5b9e\u4f8b\u53d8\u91cf\u65f6\u53ea\u80fd\u901a\u8fc7\u5bf9\u8c61\u540d.\u53d8\u91cf\u540d\u8c03\u7528\u3002
\u5728\u7c7b\u4e2d\u8c03\u7528\u6210\u5458\u53d8\u91cf\u65f6\u76f4\u63a5\u8c03\u7528\u6216\u8005\u4ee5\u7c7b\u540d.\u53d8\u91cf\u540d\u65b9\u5f0f\u8c03\u7528\uff0c\u5b9e\u4f8b\u53d8\u91cf\u5219\u7528this\u6216\u8005\u76f4\u63a5\u8c03\u7528\u3002

static\uff1a\u9759\u6001\u6210\u5458\uff0c\u5b58\u653e\u5728\u9759\u6001\u5b58\u50a8\u533a\u4e2d\uff0c\u4e0d\u5c5e\u4e8e\u4efb\u4f55\u5bf9\u8c61\uff0c\u72ec\u7acb\u4e8e\u5bf9\u8c61\u800c\u5b58\u5728\u3002
final\uff1a\u4fee\u9970\u7c7b\u65f6\uff0c\u8be5\u7c7b\u4e0d\u53ef\u88ab\u7ee7\u627f\uff1b\u4fee\u9970\u65b9\u6cd5\u65f6\uff0c\u8be5\u65b9\u6cd5\u4e0d\u53ef\u88ab\u5b50\u7c7b\u8986\u76d6\uff1b\u4fee\u9970\u53d8\u91cf\u65f6\uff0c\u8be5\u53d8\u91cf\u4e3a\u5e38\u91cf\uff0c\u4e0d\u53ef\u88ab\u4fee\u6539\u3002
static final\uff1a\u65e2\u5177\u6709static\u5c5e\u6027\u53c8\u5177\u6709final\u5c5e\u6027\u7684\u7c7b/\u65b9\u6cd5/\u53d8\u91cf\u3002

static声明的变量在C语言中有两方面的特征:
1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
Tips:
A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。
函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
扩展分析:术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static
在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,
C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相
同)。

关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性

int testStatic()
{
int x=1;
x++;
return x;
}
main()
{
int i;
for(i=0;i<5;i++)
printf("%d\n",testStatic());
getch();
}

==》2 2 2 2 2

int testStatic()
{
static int x=1;
x++;
return x;
}
main()
{
int i;
for(i=0;i<5;i++)
printf("%d\n",testStatic());
getch();
}

==》2 3 4 5 6

转载源地址为
http://blog.21ic.com/user1/2992/archives/2007/37456.html

简单来说,static在C里近似于private在Java,但不完全等于

  • static鍦–鍜孞ava涓殑鍖哄埆銆
    绛旓細1)銆佸彉閲忎細琚斁鍦ㄧ▼搴忕殑鍏ㄥ眬瀛樺偍鍖轰腑锛岃繖鏍峰彲浠ュ湪涓嬩竴娆¤皟鐢ㄧ殑鏃跺欒繕鍙互淇濇寔鍘熸潵鐨勮祴鍊笺傝繖涓鐐规槸瀹冧笌鍫嗘爤鍙橀噺鍜屽爢鍙橀噺鐨勫尯鍒2)銆佸彉閲忕敤static鍛婄煡缂栬瘧鍣紝鑷繁浠呬粎鍦ㄥ彉閲忕殑浣滅敤鑼冨洿鍐呭彲瑙併傝繖涓鐐规槸瀹冧笌鍏ㄥ眬鍙橀噺鐨勫尯鍒俆ips:A.鑻ュ叏灞鍙橀噺浠呭湪鍗曚釜C鏂囦欢涓闂紝鍒欏彲浠ュ皢杩欎釜鍙橀噺淇敼涓洪潤鎬佸叏灞鍙橀噺...
  • 鍦╟/ c++涓,闈欐佹垚鍛樼殑浣滅敤鏄粈涔?
    绛旓細鍦–璇█涓紝static鍏抽敭瀛楃殑浣滅敤濡備笅锛1銆佸湪淇グ鍙橀噺鐨勬椂锛宻tatic淇グ鐨勯潤鎬佸眬閮ㄥ彉閲忓彧鎵ц涓娆★紝鑰屼笖寤堕暱浜嗗眬閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡锛岀洿鍒扮▼搴忚繍琛岀粨鏉熶互鍚庢墠閲婃斁銆2銆乻tatic淇グ鍏ㄥ眬鍙橀噺鐨勬椂锛岃繖涓叏灞鍙橀噺鍙兘鍦ㄦ湰鏂囦欢涓闂紝涓嶈兘鍦ㄥ叾瀹冩枃浠朵腑璁块棶锛屽嵆渚挎槸extern澶栭儴澹版槑涔熶笉鍙互銆3銆乻tatic淇グ涓涓嚱鏁帮紝鍒欒繖涓...
  • static鏄粈涔堟剰鎬
    绛旓細static 璁$畻鏈虹紪绋嬭瑷 鍍忓湪VB锛孋#,C锛孋++锛孞ava涓鎴戜滑鍙互鐪嬪埌static浣滀负鍏抽敭瀛楀拰鍑芥暟鍑虹幇锛屽湪鍏朵粬鐨勯珮绾ц绠楁満璇█濡侳ORTRAN銆丄LGOL銆丆OBOL銆丅ASIC銆丩ISP銆丼NOBOL銆丳L/1銆丳ascal銆丳ROLOG銆丄da绛夎瑷涓篃鏄湁鍑虹幇鐨勶紝鍙槸鏈夌潃涓嶅悓鐨勪綔鐢ㄣ傚笇鏈涘浣犳湁鎵甯姪锛屾湜閲囩撼 ...
  • C璇█涓static鏄仛浠涔堢敤鐨?
    绛旓細1銆static淇グ灞閮ㄥ彉閲忥紝鎴愪负涓涓眬閮ㄩ潤鎬佸彉閲忋俿tatic淇グ灞閮ㄥ彉閲(闈欐佸眬閮ㄥ彉閲)涓庢櫘閫氬眬閮ㄥ彉閲忕浉姣旓紝瀹冪殑浼樺娍鍦ㄤ簬锛氣憼闈欐佸眬閮ㄥ彉閲忎綔鐢ㄥ煙涓庤繛鎺ュ睘鎬т笌鏅氬眬閮ㄥ彉閲忎竴鏍凤紱鈶″瓨鍌ㄧ被锛氶潤鎬佸眬閮ㄥ彉閲忓垎閰嶅湪data/bss娈碉紝鏅氬眬閮ㄥ彉閲忓湪鏍堜笂锛涒憿鐢熷懡鍛ㄦ湡锛氬洜涓哄瓨鍌ㄧ被鐨勪笉鍚岋紝闈欐佸眬閮ㄥ彉閲忕殑鐢熷懡鍛ㄦ湡寰楀埌寤堕暱浜嗭紝鐩...
  • C璇█涓 鍦ㄤ竴涓嚱鏁颁腑鐢 static淇グ鐨勫彉閲,杩樿兘缁欏畠璧嬩笂鏂板煎悧?_鐧惧害...
    绛旓細鍙互锛static鍦–璇█涓槸琛ㄧず涓涓彉閲忎负闈欐佸彉閲忕殑锛岃屼笉鏄父閲忥紝涔熶笉鏄笉鍙彉鐨勫彉閲忋傛墍璋撶殑闈欐佸彉閲忔湁涓ょ鎯呭喌锛屼竴绉嶆槸闈欐佸叏灞鍙橀噺锛屼竴绉嶆槸闈欐佸眬閮ㄥ彉閲忋傚儚鍦╒B锛孋#锛孋锛孋++锛Java锛孭HP锛孫bjective-C锛孞avaScript涓垜浠彲浠ョ湅鍒皊tatic浣滀负鍏抽敭瀛楀拰鍑芥暟鍑虹幇锛屽湪鍏朵粬鐨勯珮绾ц绠楁満璇█濡侳ORTRAN銆丄LGOL銆...
  • static鍦╟璇█涓槸浠涔堟剰鎬?
    绛旓細static鍦╟璇█涓槸鈥滈潤鎬佲濈殑鎰忔濓紝鐢ㄤ簬鍦ㄥ嚱鏁颁腑澹版槑鈥滈潤鎬佸彉閲忊濈敤锛屽湪姣忎竴娆¤皟鐢ㄥ悗锛岃鍙橀噺骞朵笉鍦ㄥ嚱鏁拌繑鍥炴椂绔嬪嵆閲婃斁锛屽彉閲忎腑淇濆瓨鐨勫硷紝鍙互淇濈暀鍒颁笅涓娆¤皟鐢ㄦ椂缁х画鏈夋晥銆
  • static鏂规硶鍜岄潪闈欐佹柟娉曠殑涓昏鍖哄埆 java
    绛旓細static淇グ鐨勬柟娉曠О涔嬩负闈欐佹柟娉曪紝static淇グ鐨勫彉閲忓彨鍋氶潤鎬佸彉閲忋傞潤鎬佹柟娉曚篃濂斤紝闈欐佸彉閲忎篃濂斤紝鍦ㄦ暣涓▼搴忚繍琛屽綋涓兘鍙細瀹炰緥鍖栦竴娆★紝鑰屼笖鏄湪璋冪敤鏋勯犳柟娉曚箣鍚庡氨浼氬疄渚嬨
  • static鍏抽敭瀛楃殑浣滅敤?
    绛旓細static鍏抽敭瀛椾富瑕佹湁涓ょ浣滅敤锛氱涓锛屼负鐗瑰畾鏁版嵁绫诲瀷鎴栧璞″垎閰嶅崟涓鐨勫瓨璐┖闂达紝鑰屼笌鍒涘缓瀵硅薄鐨勪釜鏁版棤鍏炽傜浜岋紝甯屾湜鏌愪釜鏂规硶鎴栧睘鎬т笌绫昏屼笉鏄璞″叧鑱斿湪涓璧凤紝涔熷氨鏄锛屽湪涓嶅垱寤哄璞$殑鎯呭喌涓嬪氨鍙互閫氳繃绫绘潵鐩存帴璋冪敤鏂规硶鎴栦娇鐢ㄧ被鐨勫睘鎬с傚叿浣撹岃█锛static鍦╦ava涓涓昏鏈夊洓绉嶄娇鐢ㄦ儏鍐碉細鎴愬憳鍙橀噺銆佹垚鍛樻柟娉...
  • JAVA! static浠涔堜綔鐢?
    绛旓細static鏄潤鎬佷慨楗扮锛宻tatic鍙互鐢ㄦ潵鍖哄垎鎴愬憳鍙橀噺銆佹柟娉曟槸灞炰簬绫绘湰韬繕鏄睘浜庣被瀹炰緥鍖栧悗鐨勫璞°傛湁static淇グ鐨勬垚鍛樺睘浜庣被鏈韩锛屾病鏈塻tatic淇グ鐨勬垚鍛樺睘浜庣被鐨勫疄渚嬨俿tatic闈欐佸彉閲忔槸灞炰簬绫荤殑锛屽彧鏈変竴浠藉瓨鍌ㄧ┖闂达紝鏄被涔嬮棿鍏变韩鐨勶紝鐗典竴鍙戣屽姩鍏ㄨ韩锛屼竴澶勫彉锛屽澶勫彉銆傚疄渚嬪彉閲忓睘浜庡疄渚嬪璞★紝鍒涘缓鍑犳瀵硅薄锛屽氨鏈...
  • static鍏抽敭瀛楃殑浣滅敤鏄粈涔
    绛旓細static浣滅敤锛1銆佷慨楗板嚱鏁扮殑灞閮ㄥ彉閲忥細鐗圭偣锛氭湁榛樿鍊0锛屽彧鎵ц涓娆★紝杩愯涓寮濮嬪氨寮杈熶簡鍐呭瓨锛屽唴瀛樻斁鍦ㄥ叏灞 2銆佷慨楗板叏灞鍑芥暟鍜屽叏灞鍙橀噺锛氱壒鐐癸細鍙兘鍦ㄦ湰婧愭枃浠朵娇鐢 3銆佷慨楗扮被閲岄潰鐨鎴愬憳鍙橀噺锛氱壒鐐癸細鍜1宸笉澶氾紝瀹氫箟澶氫釜static y,浣嗗彧鏈変竴涓獃,涓嶈繘鍏ョ被鐨勫ぇ灏忚绠楋紝涓嶄緷璧栦簬绫诲璞$殑瀛樺湪鑰屽瓨鍦紙鍙洿鎺...
  • 扩展阅读:java中scanner用法 ... java ... java中static用法详解 ... java中static的基本用法 ... public static void main ... 解释java中static的意义 ... java中public static ... java中static有什么用 ... static在java中的用法案例 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网