~~~~~~~~~~~~~~~~~~~~~~~~~~函數(shù)的調(diào)用~~~~~~~~~~~~~~~~~~~~
1> 在java中,傳參時(shí),都是以傳值的形式驚行。
2> 對(duì)于基本數(shù)據(jù)類型,傳遞的是數(shù)據(jù)的拷貝,對(duì)于引用類型,傳遞的引用的拷貝。
3> 當(dāng)我們?cè)诖蛴∫粋€(gè)對(duì)象的時(shí)候,比如System.out.println(pt);,它會(huì)自動(dòng)調(diào)用類的toString()方法
?? ,所以建議在所有的子類中重寫toString()方法。
我們寫一個(gè)函數(shù)用來交換兩個(gè)變量(x,y)的值.
?code:
class StringTest
{
?public static void change(int x, int y)
?{
??x=x+y;
??y=x-y;
??x=x-y;
?}
?/*
?public static void change(int[] num)
?{
??num[0]=num[0]+num[1];
??num[1]=num[0]-num[1];
??num[0]=num[0]-num[1];
?}
?public static void change(Point pt)
?{
??pt.x=pt.x+pt.y;
??pt.y=pt.x-pt.y;
??pt.x=pt.x-pt.y;
?}
?*/
?public static void main(String[] args)
?{
?int x=3;
?int y=4;
?change(3,4);
?System.out.println("x="+x+","+"y="+y);
?}
我們期望的輸出結(jié)果是 x=4,y=3 然后你運(yùn)行后發(fā)現(xiàn)結(jié)果為x=3,y=4,并沒有達(dá)到我們的要求,為什么呢?那是因?yàn)閷?duì)于基本數(shù)據(jù)類型,傳遞的是數(shù)據(jù)的拷貝,對(duì)于引用類型,傳遞的是引用(首地址)的拷貝。看看下面的內(nèi)存圖解應(yīng)該你就能看出來了.看看引用類型怎么來實(shí)現(xiàn):

code:
class StringTest
{
?/*
?public static void change(int x, int y)
?{
??x=x+y;
??y=x-y;
??x=x-y;
?}
?*/
?public static void change(int[] num)
?{
??num[0]=num[0]+num[1];
??num[1]=num[0]-num[1];
??num[0]=num[0]-num[1];
?}
?public static void change(Point pt)
?{
??pt.x=pt.x+pt.y;
??pt.y=pt.x-pt.y;
??pt.x=pt.x-pt.y;
?}
?public static void main(String[] args)
?{
??/*
?? int x=3;
?? int y=4;
?? change(3,4);
?? System.out.println("x="+x+","+"y="+y);
?? */
?? int[] num=new int[]{3,4};
?? change(num);
?? System.out.println("x="+num[0]+","+"y="+num[1]);
??
?? Point pt=new Point();
?? pt.x=3;
?? pt.y=4;
?? change(pt);
?? System.out.println("x="+pt.x+","+"y="+pt.y);?
?}
class Point
{
?int x,y;?
}
再看看引用類型的內(nèi)存變化圖:
以上說明了在Java中函數(shù)的調(diào)用:
a> 在Java中,傳參時(shí),都是以傳值的方式進(jìn)行。
b> 對(duì)于基本數(shù)據(jù)類型,傳遞的是數(shù)據(jù)的拷貝,對(duì)于引用類型,傳遞的是引用(首地址)的拷貝。
