日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 方法传参

發布時間:2024/4/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 方法传参 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是小弟的第一篇博客,寫得不好還請看官見諒哈!

java 有兩種數據類型:基本數據類型(int,short,long,byte,float,double,boolean,char),引用數據類型(基本數據類型之外的數組,String,對象等等)。

在方法中傳參數有兩種方式:值傳遞和引用傳遞

先看下面的一個實例。

public class Stu { String name; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }public class Test {protected static void updateStu(Stu stu) { stu.setAge(5); stu.setName("Li"); //stu=new Stu(); //stu.setAge(5); //stu.setName("Li"); //用上面注釋的代碼替換掉未注釋,修改前后的stu是一樣的,即3,zhang } protected static void updateStr(String str) { str=new String("update"); //str="update"; //這兩行代碼效果一樣 } protected static void updateInteger(Integer i) { i=10; } protected static void updateBasic(int i) { i=10; } protected static void updateArray(int[] test) { if(test.length>1) test[0]=10; } protected static void updateCharArray(char[] cs) { cs=new char[3]; cs[0]='a'; cs[1]='b'; cs[2]='c'; } public static void main(String[] args) { Stu stu=new Stu(); stu.setAge(3); stu.setName("Zhang"); System.out.println("1-----------當方法參數為普通對象"); System.out.println("初始值"); System.out.println(stu.getAge()); System.out.println(stu.getName()); updateStu(stu); System.out.println("修改后"); System.out.println(stu.getAge()); System.out.println(stu.getName()); System.out.println("2-----------當方法參數為String"); String str1=new String("haha"); String str2="hehe"; System.out.println("初始值"); System.out.println(str1); System.out.println(str2); updateStr(str1); updateStr(str2); System.out.println("修改后"); System.out.println(str1); System.out.println(str2); System.out.println("3-----------當方法參數為Integer"); Integer integer=new Integer(5); System.out.println("初始值"); System.out.println(integer); updateInteger(integer); System.out.println("修改后"); System.out.println(integer); System.out.println("4-----------當方法參數為八種基本類型"); int t=5; System.out.println("初始值"); System.out.println(t); updateBasic(t); System.out.println("修改后"); System.out.println(t); System.out.println("5-----------當方法參數為整數數組"); int[] test ={1,2,3}; System.out.println("初始值"); System.out.println(test[0]+"--"+test[1]+"--"+test[2]); updateArray(test); System.out.println("修改后"); System.out.println(test[0]+"--"+test[1]+"--"+test[2]); System.out.println("6-----------當方法參數為字符數組"); char[] cs ={'1','2','3'}; System.out.println("初始值"); System.out.println(cs); updateCharArray(cs); System.out.println("修改后"); System.out.println(cs); } }

?

=======================================輸出

1-----------當方法參數為普通對象
初始值
3
Zhang
修改后
5
Li
2-----------當方法參數為String
初始值
haha
hehe
修改后
haha
hehe
3-----------當方法參數為Integer
初始值
5
修改后
5
4-----------當方法參數為八種基本類型
初始值
5
修改后
5
5-----------當方法參數為整數數組
初始值
1--2--3
修改后
10--2--3
6-----------當方法參數為字符數組
初始值
123
修改后
123

?

根據上面的結果,可以得出這樣的結論

1、基本數據類型采用的是值傳遞,(類似C里面的傳值),它不會修改實參的值

2、引用數據類型采用的是引用傳遞,(類似C里面的傳指針),和值傳遞類似,傳的是引用的一份拷貝,而非引用本身(通過下面的例子證實),引用可以理解成JAVA的指針,它指向對象在堆里面分配的首地址。

3、String修改后為什么實參沒變,這個我看過很多文章說String就相當于是char[]的包裝類。包裝類的特質之一就是在對其值進行操作時會體現出其對應的基本類型的性質。

但是小弟有另一番理解:str="update",這句話會有有如下動作,在棧里面查找有沒有value="update"的String引用,要是有就將str指向堆里面的該地址,要是沒有就會重新創建一個String對象"update",并將str指向該對象在堆中的地址。在上面的實例中,調用updateStr方法,會將str的引用賦給形參str,而在這個方法中str又重新指向了另一個String對象,但是這個過程并沒有修改實參所指向的String對象,這個就和updateStu方法一樣,只要new了一個新的對象,那么實參指向的對象就不會改變。

?

public static void main(String[] args) throws Exception{Demo demo=new Demo(5);changeDemo(demo);System.out.println(demo.val);setDemo(demo);System.out.println(demo.val);}public static void changeDemo(Demo demo){demo=new Demo(6);}public static void setDemo(Demo demo){demo.setVal(6);}static class Demo{int val;Demo(int val){this.val=val;}public void setVal(int val){this.val=val;}}

輸出

5 6

從上面的例子可以看出setDemo將形參引用指向了一個新的對象,它的值是6,但是這個并沒有改變實參的值,說明函數傳遞的并非實參引用本身,而是實參引用的一份拷貝。

setValue,通過形參引用來改變實參的值,是因為,此時實參引用和形參引用指向的是同一對象。

轉載于:https://www.cnblogs.com/maydow/p/4460900.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的java 方法传参的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费一二区 | 男生看的污网站 | 亚洲综合图色40p | 欧美激情一二三区 | 男人插入女人阴道视频 | 精品一区二区三区在线播放 | 久久免费精彩视频 | 波多野结衣中文字幕一区 | 懂色av一区二区三区在线播放 | 色噜噜影院 | 久久精品伊人 | 亚洲黄站| 国产精品19p | 足交在线观看 | 麻豆av一区二区三区在线观看 | www黄色片网站 | 久久视频在线 | 成人一卡二卡 | 精品一区二区三区在线播放 | 亚洲黄色在线免费观看 | 国产精成人品免费观看 | 国内精品久| 成人av观看 | 成年网站在线播放 | 日韩精品偷拍 | 污污网站在线免费观看 | 少妇高潮一区二区三区 | 国产成人av免费 | 啪啪小视频 | 天堂…中文在线最新版在线 | 夜色网| 日本视频在线免费 | 日本午夜一级 | 椎名由奈在线观看 | 国产天堂第一区 | 中文字幕三级视频 | 熟女毛毛多熟妇人妻aⅴ在线毛片 | 免费在线观看亚洲 | 五月在线 | www.av视频在线观看 | avtt国产| 免费久久精品 | 网友自拍咪咪爱 | 久章草在线观看 | 99久久精品国产色欲 | 朴麦妮原版视频高清资源 | 国产免费av一区二区三区 | 精品免费囯产一区二区三区 | 国内精品国产成人国产三级 | 国产真实乱人偷精品人妻 | 亚洲国产精品福利 | 在线观看黄网 | 久久97人妻无码一区二区三区 | 福利免费在线观看 | 91天天综合 | 香蕉视频97 | 亚洲欧美韩日 | 黄色国产在线视频 | 99热久久这里只有精品 | 超碰激情 | 99精品视频一区二区三区 | 午夜九九| 国产精品久久久久久三级 | 欧美91视频 | 麻豆剧场| 亚洲无人区码一码二码三码的含义 | 日韩av一二三区 | 欧美激情二区三区 | 成人h动漫精品一区二 | 国产精品成人久久久久久久 | 人与拘一级a毛片 | 欧美人与性动交α欧美片 | 性做久久久久久久久 | 91精品国产综合久久香蕉 | 伊人青青| 欧美日韩一区三区 | 欧美 日韩 高清 | 国内成人自拍 | 国产成人av免费 | 哺乳喂奶一二三区乳 | 涩涩涩在线观看 | 男女做爰真人视频直播 | 丰满岳跪趴高撅肥臀尤物在线观看 | 亚洲理论中文字幕 | 四虎5151久久欧美毛片 | 中文字幕女同女同女同 | 日韩最新视频 | 欧美国产一级 | av制服丝袜 | 性折磨bdsm欧美激情另类 | 久久久精品蜜桃 | 97超碰免费在线观看 | 欧美综合视频 | 色无极亚洲影院 | 少妇熟女一区二区三区 | 温柔少妇的高潮呻吟 | 色噜噜狠狠一区二区 | 国产一区二区在线免费观看 | 岛国av动作片 |