形參java
A. java中形參實參各是什麼,分別有什麼作用
形參:全稱為"形式參數"是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳如的參數.
實參:全稱為"實際參數"是在調用時傳遞個該函數的參數.
形參和實參的類型必須要一致,或者要符合隱含轉換規則,
當形參和實參不是指針類型時,在該函數運行時,形參和實
參是不同的變數,他們在內存中位於不同的位置,形參將實
參的內容復制一份,在該函數運行結束的時候形參被釋放,
而實參內容不會改變.
而如果函數的參數是指針類型變數,在調用該函數的過程
中,傳個函數的是實參的地址,在函數體內部使用的也是
實參的地址,即使用的就是實參本身.所以在函數體內部
可以改變實參的值.
給你一個很簡單的例子:
int
f(int
b)
/*b為形參*/
{
return
b;}
main()
{int
a=1;printf("%d",f(a));/*a為實參*/}
B. 在java中,什麼是形參什麼是實參,它們都是什麼類型的,它們之間的傳遞關系什麼樣的
形參:全稱為「形式參數」是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳遞的參數。
形參的作用是實現主調函數與被調函數之間的聯系,通常將函數所處理的數據,影響函數功能的因素或者函數處理的結果作為形參。沒有形參的函數在形參表的位置應該寫void.main 函數也可以有形參和返回值,其形參也稱為命令行參數,由操作系統在啟動程序時初始化,其返回值傳遞給操作系統。
實參:可以是常量、變數、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應預先用賦值,輸入等辦法使實參獲得確定值。
實參和形參的區別:
空白或佔位符
1。函數的形參列於函數聲明中,在函數定義的函數體內使用。當函數調用時,形參(任何種類的)是一類將被填充的空白或是佔位符。
用來填充形參
2。實參是用來填充形參的。當函數被調用時,實參列在函數名後面的括弧里。執行函數調用時,實參被傳遞給形參。
傳值調用和引用調用
3。傳值調用和引用調用指的是用於參數傳遞過程中的一種機制。傳值調用中,只使用了實參的值。傳值調用機制里,形參是一個局部變數,其初始值為相應實參的值。在引用調用機制里,將實參的地址傳遞給形參,從表面上看是以實參變數取代形參,因此任何發生在形參上的改變實際上都發生在實參變數上。
C. Java寫方法的時候想把arraylist作為形參怎麼弄
List是介面,ArrayList實現了List介面,所以可以利用多態,把Arraylist作為形參。
public static void method(List list){
System.out.println(list);
}
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
method(list);
}
(3)形參java擴展閱讀:
當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境在Java源文件中定義不同的類;
通過調用類中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程序的Java API調用。
D. java里形參是什麼
首先糾正下java2000的第一個錯誤說法:"java里不叫這個,而是叫傳值和傳對象。".引用jiabobber的話:形參就是形式上的參數啊,實參就是實際的參數啊,其實各種語言形參實參都一樣的概念的吧。
jiabobber的這句話是對的,實參,形參是程序設計語言中的通用概念,並不是只有C,C++有而JAVA沒有,也不叫傳對象;
直白的講,形參是形式上的參數,實參是實際的參數;
形參只是對實參的一種抽象類型描述,只是聲明一個函數(方法)能接受什麼類型的實參,而不確定接受的實參具體內容是多少;實參就是傳遞給函數(方法)對應形參的具體內容(值),形參的初始指(內容)由實參決定.形參在函數(方法)結束返回後就被釋放了.
到這里,就又出現程序設計語言中的另一通用概念參數傳遞方式:傳值和傳址;
1.傳值方式,只是將實參的值的拷貝傳遞給函數(方法),在方法內對形參進行操作,其對象是實參的拷貝,對實參不能造成影響.在方法結束返回後,形參被釋放丟棄,實參的內容並不會改變;
2.傳址方式,將實參的地址傳遞給函數(方法),在方法內對形參進行操作即等於對實參進行相同的操作,在方法結束返回後,形參同樣被釋放,實參的內容將會是對形參進行操作的結果.
這里,又要糾正java2000的一個錯誤:"傳對象的引用,用於把一個對象的地址作為參數傳過去,而不是對象本身。"
對象引用即對象在堆中的地址,記住!不是對象,是對象的地址.而且對於傳址方式,在方法中交換兩個形參後,實參也應該同時被交換!
對於形參是對象引用的,其傳遞方式還是按值傳遞!傳的是對象引用的拷貝值,並不是對象引用的地址,所以方法能改變對象引用所指的對象的狀態(因為對象引用及其拷貝都指向同一個對象),卻不能將兩個對象交換(因為形參是對象引用的拷貝,所以改變形參並不能改變實參的內容,即對象的地址.不明白的要跟基本類型的類比).
真是好累!寫這么一堆...下次不搞了!
E. java 中實參和形參的區別
形參和實參的特點
1、形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參有在函數內部有效。函數調用結束返回主調用函數後則不能再使用該形參變數。
2、實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值。
3、實參和形參在數量上,類型上、順序上應嚴格一致,否則就會發生類型不匹配的錯誤。
4、在一般傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數調用過程中,形參值發生改變,而實參中的值不會變化。而在引用調用的機制當中是將實參引用的地址傳遞給了形參,所以任何發生在形參上的改變實際上也發生在實參變數上
F. 關於Java多態以及可變形參的問題
首先,運行結果的確是sub。但不是因為「編譯器認為 int[] arr 和 int...arr 是一樣的」。而是因為:①可變參數最終會被編譯器以數組的方式存下來;然後調用的時候會優先匹配定長參數的方法,只有當定長參數的方法一個都匹配不上了,才去找非定長參數的方法;②你這個上轉型之後其實讓base這個實例擁有了兩個方法,一個是父類的不定長參數,一個是子類的定長參數方法;
傳參不報錯是因為判斷參數是否合法時匹配到了不定長參數那個方法;然後執行時優先匹配到了定長參數方法(可變參和數組存儲方式一致)。編譯器並不知道什麼可變不可變,就單純的按照規則去校驗調用;
對編譯器來說,方法名稱和參數列表組成了一個唯一鍵,稱為方法簽名,JVM 通過方法簽名決定調用哪種重載方法。
JVM 在重載方法中選擇合適方法的順序:
① 精確匹配。
② 基本數據類型自動轉換成更大表示範圍。
③ 自動拆箱與裝箱。
④ 子類向上轉型。
⑤ 可變參數。
你這個上轉型實現後,即實現了重寫,又實現了一種特殊的重載;而編譯器編譯時檢查參數合法性的時候檢查到了可變參的方法(你滑鼠挪到調用的地方你會看到,編譯器提示的你的方法是父類的可變參方法的,因為此時這個參數不是數組,是匹配不到定長參數的子類方法的);
然後編譯好具體執行的時候,編譯器哪還知道什麼定長不定長,就按照優先順序去調用方法,自然就把優先順序高的子類定長方法調用到了,不存在什麼動態綁定。
這里如果你把子類和父類的參數交換(子類是可變參數,父類是數組)那你的調用就報錯了,因為可變參兼容數組,但是數組卻不兼容可變參,這樣就只形成重寫而沒有重載,然後上轉型後就只能調用父類的方法了。就會報錯咯
G. Java 形參 與 實參
這里主要涉及值傳遞和引用傳遞的區別,fun(int a)屬於值傳遞,函數內部不會影響傳進來參數的值;fun(int[],int,int)屬於引用傳遞,實際上傳入函數的並非數組每個數據的值,而是數組的地址,所以函數內容會直接影響數組的變化,建議你自己也可以多了解一下數據的引用類型和地址傳遞,這應該還是比較重要的
H. Java方法中是不是一定要有形參
這個要看你寫的方法需不需要一個外界傳入值,如果需要傳入一個值那麼就需要形參,如果你寫的方法不需要,那麼就不用形參了
比如:我這個有個比較方法 需要外部給我傳遞兩個值做比較
public void Compare(int i,int j){
if(i>j){
System.out.println(i+"大於"+j);
}
}
如果不需要傳參那個就不用 比如:
public void Compare(){
int i=100,j=200;
if(i>j){
System.out.println(i+"大於"+j);
}else{
System.out.println(i+"小於"+j);
}
}
I. JAVA中的形參和實參是什麼意思
Java——形參和實參的區別形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。
實參出現在主調函數中,進入被調函數後,實參變數也不能使用。
形參和實參的功能是作數據傳送。發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。
1.形參變數只有在被調用時才分配內存單元,在調用結束時, 即刻釋放所分配的內存單元。因此,形參只有在函數內部有效。
函數調用結束返回主調函數後則不能再使用該形參變數。
2.實參可以是常量、變數、表達式、函數等, 無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值, 以便把這些值傳送給形參。
因此應預先用賦值,輸入等辦法使實參獲得確定值。
3.實參和形參在數量上,類型上,順序上應嚴格一致, 否則會發生「類型不匹配」的錯誤。
4.函數調用中發生的數據傳送是單向的。 即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。
5.當形參和實參不是指針類型時,在該函數運行時,形參和實參是不同的變數,他們在內存中位於不同的位置,形參將實參的內容復制一份,在該函數運行結束的時候形參被釋放,而實參內容不會改變。
如果函數的參數是指針類型變數,在調用該函數的過程中,傳給函數的是實參的地址,在函數體內部使用的也是實參的地址,即使用的就是實參本身。所以在函數體內部可以改變實參的值。
J. java中形參是什麼意思
形參,即形式參數,是在定義函數中指定的,如public static void Test(boolean b){......}括弧中的b即為Test的形參.形參在未出現函數調用的時候時,並不佔內存中的儲存單元,只有發生函數調用時,形參才被分配內存單元.在調用結束後,形參所佔的內存單元也被釋放.
實參,即實際參數,它可以是常量,變數或表達式,但要求它們有確定的值,在調用時將實參的值賦給形參.如調用剛才的Test函數時,Test(True),這里的True就是實參,又如boolen i = true;Test(i),這里的i就是實參.
實參與形參的類型應相同或賦值相同