A. Java中定義和聲明的區別
Java中,我們應該知道最基本的就是定義變數和聲明變數了,那麼定義與聲明這兩者有沒有區別呢?具體的區別又是哪些呢?下面學習啦小編來告訴你定義與聲明的區別。
定義和聲明的定義區別
1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。
2、另一種是不需要建立存儲空間的。 例如:extern int a 其中變數a是在別的文件中定義的。
聲明是向編譯器介紹名字--標識符。它告訴編譯器「這個函數或變數在某處可找到,它的模樣象什麼」。
而定義是說:「在這里建立變數」或「在這里建立函數」。它為名字分配存儲空間。無論定義的是函數還是變數,編譯器都要為它們在定義點分配存儲空間。
對於變數,編譯器確定變數的大小,然後在內存中開辟空間來保存其數據,對於函數,編譯器會生成代碼,這些代碼最終也要佔用一定的內存。
總之就是:把建立空間的聲明成為「定義」,把不需要建立存儲空間的成為「聲明」。
基本類型變數的聲明和定義(初始化)是同時產生的;而對於對象來說,聲明和定義是分開的。
下面小編給大家舉個例子說明一下。
例如:類A
如果A a;就是一個聲明,告訴編譯器a是A類的一個對象變數,但是不進行初始化;
如果以後a=new A();這就是初始化,分配了空間。
需要注意的是我們聲明的最終目的是為了提前使用,即在定義之前使用,如果不需要提前使用就沒有單獨聲明的必要,變數是如此,函數也是如此,所以聲明不會分配存儲空間,只有定義時才會分配存儲空間。
用static來聲明一個變數的作用有二:
(1)對於局部變數用static聲明,則是為該變數分配的空間在整個程序的執行期內都始終存在。
(2)外部變數用static來聲明,則該變數的作用只限於本文件模塊。
定義和聲明的具體區別
所謂定義就是(編譯器)創建一個對象,為這個對象分配一塊內存,並給它取上一個名字,這個名字就是就是我們經常所說的變數名或對象名。
聲明有2重含義:
(1) 告訴編譯器,這個名字已經匹配到一塊內存上,下面的代碼用到變數或者對象是在別的地方定義的。聲明可以出現多次。
(2) 告訴編譯器,這個名字已經被預定了,別的地方再也不能用它來作為變數名或對象名。
定義和聲明最重要區別
定義創建對象並為這個對象分配了內存,聲明沒有分配內存。
B. 麻煩幫我解釋下在編程中什麼叫聲明
標識符在使用前必須進行聲明,即讓編譯器知道這個名字所引用的是哪一類實體。
聲明大部分時候和定義等同。聲明和定義的區別在於:
1。對同一命名實體聲明可以有多個,而定義只能進行一次。
2。如果一個操作只是聲明,比如 extern int num ,說明在另外的地方還有對num進行定義的操作。。。
C. 編程中的,定義、聲明、初始化,各指的是什麼,舉例說明下
定義就是定義,比如INT A,就是定義一個A變數.函數也是.
大體就是沒有的,你造一個出來(表達不好,知道意思就行).
初始化就是你定義出來的變數,它最開始的值是多少,你得給它一個.
int a = 100; int a; a = 100; 這種就是了.
一定記得初始化,否則,有時,會遇上一些莫名其妙的問題.
主要說的是聲明,對於一個函數 void B(xxxxx){ xxxx }是這種樣子.
假如在一個頁面中有A,B函數,A函數里調用B函數,但是B函數是定義在A函數下面.
就是{}包起的代碼是寫在A下面.此時拆友哪,提示找不到B函數.
就需要void B(xxxxx);復制到A的上面去.A就知道了原來B函數是這造型.
這就叫聲明一下.
當然你也許會想,還不幹告檔脆把代碼都搬到A上面去,當然也行,但是當有ABCDEFG很多函數時
這些函數相互交叉調用,關系復雜時,你把誰搬上旅碼去都搞不定.
這時就把所有函數都上去聲明一通吧.
在生活中,兩者常混為一談,常聽說我在函數里聲明了一個XX變數,其實是錯的,
是定義了一個變數,但是能知道意思就行,何必執著於對與錯.
好累,希望對你有用.................
D. 編程時聲明有什麼作用
這和計算機在內存管理上有關系的。
一段程序在運行時候是放在內存中的,如果你學習過操作系統的話,那麼一定聽過進程這個概念。變數自然也是要存放在內存中的,聲明其實就是向系統申請一個空間,而實現則是你向申請好的內存放你要的數據,這是簡單的理解,和真正的實現有點差距,不過解答你的問題足夠了。
如果你知識夠扎實的話,下面是真正的實現,比如一個例子
int a;
a = 10;
這個程序變成進程在內存中時候,它會有一個8K大小的系統堆棧空間。如果不懂就當成是個8K的內存(LINUX上是這么大,不知道WINDOWS有多大)。這個8K內存除了存放a這個數據外,還有大量其它的信息要記載,int a就是向這個8K內存申請一個int型大小的內存,其中這個內存地址就返回給a,你可以通過printf("%d", &a);來看到a中存放的地址。然後將10這個數據放到a所指定的內存中。這也就是為什麼程序中局部變數不能太大的原因。