Ⅰ java 類之間數值的傳遞
Java語言中方法間的數據傳遞方法
方法是數據加工處理或相應操作的基本模塊,為了實現某種需求而調用一個方法,需要為被調用的方法傳遞數據,以便於被調用的方法依據所提供的數據進行相應的操作。
C++語言的函數間的數據傳遞可以分為:數值傳遞、地址傳遞和引用傳遞。地址傳遞的形參是同類型的指針,由於指針操作的不安全等問題,Java語言屏棄了指針,故Java語言方法之間的數據傳遞只有數值傳遞和引用傳遞。
1方法間的數值傳遞
所謂的數值傳遞又稱為值傳遞,數值傳遞的特徵是:調用方法的實參可以是常量、變數或者是表達式,形參則是對應數據類型的變數。如果實參是變數,則實參
和形參是相互獨立的兩個單元。在方法調用的過程中,實參的值將拷貝到形參中,此後形參的任何修改都不會影響實參。數值傳遞方法見例1。
[例1]數值傳遞調用方法舉例:
importjava.io.*;
public class ValueTransmit
{publicstatic void main(Stringargs[])
{intx=5,y=66;
System.out.println(「在主方法,交換前的:x=」+x+「,y=」+y);
swap(x,y);
System.out.println(「在主方法,交換後的:x=」+x+「,y=」+y);
}
static voidswap(int x,int y)
{int temp;
System.out.println(「在swap方法未交換時:x=」+x+「,y=」+y);
temp=x;x=y;y=temp;
System.out.println(「在swap方法交換之後:x=」+x+「,y=」+y);
}
}
例1程序的輸出結果如下所示:
在主方法, 交換前的:x=5,y=66
在swap方法未交換時:x=5,y=66
在swap方法交換之後:x=66,y=5
在主方法, 交換前的:x=5,y=66
在例1程序中,方法調用的「swap(x,y);」中的實在參數x,y是兩個單元,而形式參數中的x,y又是兩個單元,它們是互相獨立的。所以,對形式參數的改變並不影響實在參數的內容;程序的運行結果也驗證上述觀點。
2方法間的引用傳遞
方法之間的數據傳遞還有一種方法,就是引用傳遞。引用傳遞的實質就是將實在參數的地址傳遞給形式參數引用,也就是形式參數是實在參數的別名。
Ⅱ Java中函數參數的傳遞是怎樣進行的
java中的參數傳遞比較簡單,都是值傳遞,沒有引用的說法,就算是對象也是將其引用的地址傳遞過去,不想。net還有引用的說法。
Ⅲ java 中 如何通過命令行來傳遞參數
可以在命令行運行java程序時加上程序的參數。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代碼截圖:
解釋一下: String[ ] args
該參數,是一個字元串數組,用來接收從命令行輸入的參數
1. 參數之間用空格隔開
2. java解釋器會自動處理,把用空格隔開的每一個參數通過args數組傳遞給買呢()方法。
3. 參數的下標從0開始,args[0]表示第一個參數,例如java HelloWorld 10 20 30
4.可以有多個空格,多個空格會被忽略。
(3)java類的傳遞參數擴展閱讀:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等 。
Ⅳ java 中怎樣實現類類型作為參數傳遞
直接把參數類型定義為對應的類,就是類類型。
1、定一個類
publicclassA{//定義一個類A
}
2、定一個方法,類A作為參數傳遞
publicclassB{//定義一個類B
publicvoidshow(Aa){//類作為參數傳遞
}
}
Ⅳ java 參數傳遞問題
這是java方法參數傳遞的機制
前面那個圖傳遞的是值的副本,無論在方法內部怎麼變換,改變的只是它的副本,而它本身在main方法中並沒有發生任何變化。所以不會交換。
而數組,參數傳遞的是引用的副本。就是說棧里存放的是一個引用,這個引用指向堆里的數組數據。而方法傳遞就傳遞這個引用的副本,這個副本一樣指向堆里的數組的數據。
在方法中按照引用的副本查找到數組並把它的數據交換了,直接對堆中的數據做了變化。所以出了這個方法,在原引用指向的堆內的數據已經發生了變化。
Ⅵ java 怎麼傳遞參數
傳對象,之後通過反射,getClass()獲得對應的類,具體代碼如下
Class<?>type=object.getClass();
Method method=type.getMethod("getId",null);//getId為getId()方法
Object id=method.invoke(object,null);
Ⅶ JAVA基本類型參數傳遞
不是地址是一個引用,這個引用將來只能指向Time類的地址,在你沒通過new Time()等操作創建一個Time對象的時候,實際上並不存在地址
Ⅷ Java參數傳遞
這是因為java中只有值傳遞,沒有引用傳遞。
變數名str是引用,它始終指向「hello」字元串。
你的changeStr()不會修改str指向「different」,因為java中只有值傳遞。
Ⅸ Java類如何傳值
publicclassBase{
privateStringsdate;
publicStringgetSdate(){
returnsdate;
}
publicvoidsetSdate(Stringsdate){
this.sdate=sdate;
}
publicBase(Stringsdate){
this.sdate=sdate;
}
}
classAextendsBase{
privateStringsdate;
publicA(Stringsdate){
super(sdate);
}
}
//這種方式可以,但是僅限於父子類之間,如果想在實例還有造出來之前,使用實例內的內容,那是不可能的
Ⅹ java中對象類型的參數傳遞
因為Java里方法參數的傳遞實際上只有值傳遞(不管基本類型或引用類型),對基本類型來說是把其值傳遞了一份過去,而對引用類型來說實際是把引用地址的值復制一份傳遞了過去。
另外,只有用new方法創建的對象的實際成員數據是存放在堆裡面的,而其他方法內部定義的變數都存放在棧中,一旦出了方法的范圍就失效,會被內存回收。
知道了以上兩點,就可以分析了,swap方法里t1,t2,temp都是存放在棧里的只保存引用類型地址的變數,不管他們怎麼交換,實際上不會改變堆裡面的內容,而main方法里的time1, time2的引用類型雖然其地址仍在棧中,而實際數據在堆中,程序中沒有任何改變其內容的語句,因此,不會產生交換。