導航:首頁 > 編程語言 > java參數傳遞方法

java參數傳遞方法

發布時間:2024-04-02 20:53:24

java中函數參數的傳遞是怎樣進行的

Java中函數參數的傳遞是按值傳遞。
下面證明中參數傳遞是完完全全是傳值而不是傳址。
一:
package com.sitinspring;

public class ChangeClass{
public void changeInt(int i){
i=5;
}

public void changeLong(long i){
i=555;
}

public void changeString(String str){
str="5555";
}

public void changeMember(Member member){
member=new Member("Cindy",35);
}

public void changeMemberField(Member member){
member.setAge(20);
member.setName("Andy");
}

public static void main(String[] args){
ChangeClass changeClass=new ChangeClass();

int intValue=10;
changeClass.changeInt(intValue);
System.out.println(intValue);

long longValue=10;
changeClass.changeLong(longValue);
System.out.println(longValue);

String stringValue="1234";
changeClass.changeString(stringValue);
System.out.println(stringValue);

Member member2=new Member("Douglas",45);
changeClass.changeMember(member2);
System.out.println(member2);

Member member=new Member("Bill",25);
changeClass.changeMemberField(member);
System.out.println(member);
}
}
二:

package com.sitinspring;

public class Member{
private String name;
private int age;

public Member(String name,int age){
this.age=age;
this.name=name;
}

public String toString(){
return "Member name="+name+" age="+age;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
輸出:
10
10
1234
Member name=Douglas age=45
Member name=Andy age=20
解釋:
第一個輸出10是因為int是基本類型,傳遞的參數是intValue的拷貝,對拷貝的修改對原值intValue沒有影響.
第一個輸出10和上面是一個道理.
第三個輸出1234.由於String是類類型, str是stringValue的地址拷貝,參數str指向的地址和stringValue的一致,但在函數changeString 中,由於String的特殊性, str=「5555」和str=new String(「5555」)是等價的, str指向了新的」5555」所在的地址,此句後str就與原來的stringValue徹底脫離了聯系.
第四個輸出Member?name=Douglas?age=45的道理和上面相同.
第五個輸出Member?name=Andy?age=20是因為changeMemberField函數中修改了參數member 的值,也就是修改member指向實例的值,而這個實例正是member指向的值,因此member就變成了name=Andy 且age=20.
結論:
Java中參數傳遞的都是值,對應基本類型,傳遞的是原值的拷貝;對於類類型,傳遞的是引用即地址的拷貝.
對於函數對參數的改變是否會影響原值的問題:值類型自然不會影響到原值.而對於類類型要看改變的是參數的地址還是值,如果是前者,參數和原引用指向了不同的地址,它們自然脫離了關系;如果是後者,修改的實例就是原引用指向的實例,這當然對原值進行了修改.

㈡ java中數組是怎麼作為函數參數進行傳遞的

舉個例子和你說。
傳遞數組參數:
1. 傳遞數組
要傳遞數組到方法里,只要指明傳入的參數是一個數組即可。
例:
public class ArrayDemo //定義主類
{
public static void main(String args[])
{
int a[]={8,23,7,6,9,23}; //定義一維數組
ArrayDemo min=new ArrayDemo (); //創建對象
min.arrayMin(a); //將一維數組a傳入least()方法
}
public void arrayMin(int array[]) //參數array[]接受一維整形數組
{
int temp=array[0];
for(int i=0;i<array.length;i++)
if(temp>array[i])
temp=array[i];
System.out.println("最小的數為:"+temp);
}
}
從該例中可以看出,如果要將數組傳遞到方法里,只需在方法名後的括弧內寫上數組的名即可。二維數組的傳遞與一維數組相似,在需在方法里聲明傳入的參數是一個二維數組。

㈢ java傳遞參數問題

public static void main(String[] args)
{
int a=10;
test(a);
}

public static void test(int a)
{
System.out.println(a);
}

執行結果 控制台列印了10
方法就好像是一個模板,參數就是這個模板可變的東西

我也不版知道該怎權么來描述,方法體內用 參數,你傳進來什麼我就用什麼

上面我是用了一個靜態方法 所以沒有new 對象,因為 主方法和test靜態方法在同一個類中,不用 類名調用。

怎麼說呢,這東西完全靠自己理解,別人說的再好你不明白也白說。

多練練就好 了,我剛開始學java 的時候也不明白方法參數的傳遞,但是用的時間長了就明白了,
哥們多練練就好了!!

加油! 相信你能行!!!!

㈣ java HttpPost怎麼傳遞參數

public class HttpURLConnectionPost {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

readContentFromPost();

}

public static void readContentFromPost() throws IOException {

// Post請求的url,與get不同的是不需要帶參數

URL postUrl = new URL("http://www.xxxxxxx.com");

// 打開連接

HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();

// 設置是否向connection輸出,因為這個是post請求,參數要放在

// http正文內,因此需要設為true

connection.setDoOutput(true);

// Read from the connection. Default is true.

connection.setDoInput(true);

// 默認是 GET方式

connection.setRequestMethod("POST");

// Post 請求不能使用緩存

connection.setUseCaches(false);

//設置本次連接是否自動重定向

connection.setInstanceFollowRedirects(true);

// 配置本次連接的Content-type,配置為application/x-www-form-urlencoded的

// 意思是正文是urlencoded編碼過的form參數

connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

// 連接,從postUrl.openConnection()至此的配置必須要在connect之前完成,

// 要注意的是connection.getOutputStream會隱含的進行connect。

connection.connect();

DataOutputStream out = new DataOutputStream(connection

.getOutputStream());

// 正文,正文內容其實跟get的URL中 '? '後的參數字元串一致

String content = "欄位名=" + URLEncoder.encode("字元串值", "編碼");

// DataOutputStream.writeBytes將字元串中的16位的unicode字元以8位的字元形式寫到流裡面

out.writeBytes(content);

//流用完記得關

out.flush();

out.close();

//獲取響應

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line;

while ((line = reader.readLine()) != null){

System.out.println(line);

}

reader.close();

//該乾的都幹完了,記得把連接斷了

connection.disconnect();

}

(4)java參數傳遞方法擴展閱讀:

關於Java HttpURLConnection使用

public static String sendPostValidate(String serviceUrl, String postData, String userName, String password){

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

log.info("POST介面地址:"+serviceUrl);

URL realUrl = new URL(serviceUrl);

// 打開和URL之間的連接

URLConnection conn = realUrl.openConnection();

HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;

// 設置通用的請求屬性

httpUrlConnection.setRequestProperty("accept","*/*");

httpUrlConnection.setRequestProperty("connection", "Keep-Alive");

httpUrlConnection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

httpUrlConnection.setRequestMethod("POST");

httpUrlConnection.setRequestProperty("Content-Type","application/json;charset=UTF-8");

Base64 base64 = new Base64();

String encoded = base64.encodeToString(new String(userName+ ":" +password).getBytes());

httpUrlConnection.setRequestProperty("Authorization", "Basic "+encoded);

// 發送POST請求必須設置如下兩行

httpUrlConnection.setDoOutput(true);

httpUrlConnection.setDoInput(true);

// 獲取URLConnection對象對應的輸出流

out = new PrintWriter(new OutputStreamWriter(httpUrlConnection.getOutputStream(),"utf-8"));

// 發送請求參數

out.print(postData);

out.flush();

// 定義BufferedReader輸入流來讀取URL的響應

in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(),"utf-8"));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

//

// if (!"".equals(result)) {

// BASE64Decoder decoder = new BASE64Decoder();

// try {

// byte[] b = decoder.decodeBuffer(result);

// result = new String(b, "utf-8");

// } catch (Exception e) {

// e.printStackTrace();

// }

// }

return result;

} catch (Exception e) {

log.info("調用異常",e);

throw new RuntimeException(e);

}

//使用finally塊來關閉輸出流、輸入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException e){

log.info("關閉流異常",e);

}

}

}

}

㈤ java HttpPost怎麼傳遞參數

public class HttpURLConnectionPost {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

readContentFromPost();

}

public static void readContentFromPost() throws IOException {

// Post請求的url,與get不同的是不需要帶參數

URL postUrl = new URL("http://www.xxxxxxx.com");

// 打開連接

HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();

// 設置是否向connection輸出,因為這個是post請求,參數要放在

// http正文內,因此需要設為true

connection.setDoOutput(true);

// Read from the connection. Default is true.

connection.setDoInput(true);

// 默認是 GET方式

connection.setRequestMethod("POST");

// Post 請求不能使用緩存

connection.setUseCaches(false);

//設置本次連接是否自動重定向

connection.setInstanceFollowRedirects(true);

// 配置本次連接的Content-type,配置為application/x-www-form-urlencoded的

// 意思是正文是urlencoded編碼過的form參數

connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

// 連接,從postUrl.openConnection()至此的配置必須要在connect之前完成,

// 要注意的是connection.getOutputStream會隱含的進行connect。

connection.connect();

DataOutputStream out = new DataOutputStream(connection

.getOutputStream());

// 正文,正文內容其實跟get的URL中 '? '後的參數字元串一致

String content = "欄位名=" + URLEncoder.encode("字元串值", "編碼");

// DataOutputStream.writeBytes將字元串中的16位的unicode字元以8位的字元形式寫到流裡面

out.writeBytes(content);

//流用完記得關

out.flush();

out.close();

//獲取響應

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line;

while ((line = reader.readLine()) != null){

System.out.println(line);

}

reader.close();

//該乾的都幹完了,記得把連接斷了

connection.disconnect();

}

(5)java參數傳遞方法擴展閱讀:

關於Java HttpURLConnection使用

public static String sendPostValidate(String serviceUrl, String postData, String userName, String password){

PrintWriter out = null;

BufferedReader in = null;

String result = "";

try {

log.info("POST介面地址:"+serviceUrl);

URL realUrl = new URL(serviceUrl);

// 打開和URL之間的連接

URLConnection conn = realUrl.openConnection();

HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;

// 設置通用的請求屬性

httpUrlConnection.setRequestProperty("accept","*/*");

httpUrlConnection.setRequestProperty("connection", "Keep-Alive");

httpUrlConnection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

httpUrlConnection.setRequestMethod("POST");

httpUrlConnection.setRequestProperty("Content-Type","application/json;charset=UTF-8");

Base64 base64 = new Base64();

String encoded = base64.encodeToString(new String(userName+ ":" +password).getBytes());

httpUrlConnection.setRequestProperty("Authorization", "Basic "+encoded);

// 發送POST請求必須設置如下兩行

httpUrlConnection.setDoOutput(true);

httpUrlConnection.setDoInput(true);

// 獲取URLConnection對象對應的輸出流

out = new PrintWriter(new OutputStreamWriter(httpUrlConnection.getOutputStream(),"utf-8"));

// 發送請求參數

out.print(postData);

out.flush();

// 定義BufferedReader輸入流來讀取URL的響應

in = new BufferedReader(new InputStreamReader(httpUrlConnection.getInputStream(),"utf-8"));

String line;

while ((line = in.readLine()) != null) {

result += line;

}

//

// if (!"".equals(result)) {

// BASE64Decoder decoder = new BASE64Decoder();

// try {

// byte[] b = decoder.decodeBuffer(result);

// result = new String(b, "utf-8");

// } catch (Exception e) {

// e.printStackTrace();

// }

// }

return result;

} catch (Exception e) {

log.info("調用異常",e);

throw new RuntimeException(e);

}

//使用finally塊來關閉輸出流、輸入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}

catch(IOException e){

log.info("關閉流異常",e);

}

}

}

}

㈥ 在java中傳遞參數的方法有幾種做簡要的說明

傳入的數據類型:基本類型是值拷貝,復雜類型(對象)則是引用傳版遞。
傳入的參數權個數:固定參數列表,可變參數列表(類似public static int add(int... i)這樣)

另外,傳遞參數時還可以定義泛型,類似這樣public <E> E get(Class<E> clazz, Long id)。目前只想到這些。。

㈦ java里數組如何作為參數傳遞給方法,以及如何在方法中返回數組

定義方法的時抄候可以在參數列表中定襲義傳入參數的類型 例如
void method( int[] a)
或者使用可變參數
void method(object…obj)
而方法的返回值在方法內使用return定義 同時方法定義中的返回值類型也要同 return後的數據類型一致
例如
public int[] method(){
//代碼塊…
return 數組名;
}
希望能幫到你

㈧ 用Java方法的參數怎麼傳遞

在 Java 應用程序中永遠不會傳遞對象,而只傳遞對象引用。因此是按引用傳遞對象。Java應用程序按引用傳遞對象這一事實並不意味著 Java 應用程序按引用傳遞參數。參數可以是對象引用,而 Java 應用程序是按值傳遞對象引用的。

閱讀全文

與java參數傳遞方法相關的資料

熱點內容
怎麼用手機看wlan密碼 瀏覽:745
奧維地圖導入的文件在哪裡 瀏覽:364
sdltrados2014教程 瀏覽:43
培訓制度文件在哪裡找 瀏覽:601
勒索病毒防疫工具 瀏覽:861
win10c不能打開 瀏覽:375
xfplay影音先鋒蘋果版 瀏覽:597
兩個文件打開兩個word 瀏覽:921
蘋果6s桌面圖標輕微抖動 瀏覽:326
如何刪除手機中看不見的臨時文件 瀏覽:469
安卓412原生鎖屏apk 瀏覽:464
書加加緩存文件在哪裡 瀏覽:635
dock是word文件嗎 瀏覽:267
社保公司新辦去哪個網站下載資料 瀏覽:640
三維標注數據怎麼填寫 瀏覽:765
數據線斷在哪裡取出來 瀏覽:522
word最好的文件 瀏覽:345
大數據聚類資料庫 瀏覽:247
網站關停域名怎麼注銷 瀏覽:456
適合微信閱讀的手機報 瀏覽:114

友情鏈接