java對象作為參數問題

最通俗的和你解釋:
第一個參數是對象,傳遞過去的是引用(即地址),當這個對象裡面的字元串改變後,不影響這個對象的地址,即對象地址沒有變,始終可以找到裡面改後的字元串
第二個參數是字元串,傳遞的依然是引用,當在test函數中改變字元串時,因為字元串時不可變的,那麼會改變這個str的地址值,使其指向新開辟的區域「world」,原來主函數的str沒有變,而test中的str指向了另個字元串【請牢記,雖然是址傳遞,看似都會變,這里由於兩個原因,一是主函數和test中的str一開始指向的是同一空間,但是,它們各自是存儲在不同空間的;二是字元串是不變的,它們指向的字元串不會改變,test中的str會指向其他新開辟的地方】!!!
希望你能懂。

㈡ java中對象類型的參數傳遞

因為Java里方法參數的復傳遞制實際上只有值傳遞(不管基本類型或引用類型),對基本類型來說是把其值傳遞了一份過去,而對引用類型來說實際是把引用地址的值復制一份傳遞了過去。

另外,只有用new方法創建的對象的實際成員數據是存放在堆裡面的,而其他方法內部定義的變數都存放在棧中,一旦出了方法的范圍就失效,會被內存回收。

知道了以上兩點,就可以分析了,swap方法里t1,t2,temp都是存放在棧里的只保存引用類型地址的變數,不管他們怎麼交換,實際上不會改變堆裡面的內容,而main方法里的time1, time2的引用類型雖然其地址仍在棧中,而實際數據在堆中,程序中沒有任何改變其內容的語句,因此,不會產生交換。

㈢ java中的參數(對象)是怎樣傳遞的

基本類型傳值,比如int,float,char,double

引用類型傳引用,也就是地址,比如數組,自己創建的類的對象,

傳值對原來的值沒有影響,傳引用有影響。傳值直接把原來的數拷貝一份,和原來的數沒有關系了。傳引用,比如對象是a,a指向一個地址,這個地址里放它的各種屬性,你把a傳過去就相當於告訴程序要修改那個地址里的東西,不改變a的值(a本身是個地址),a還是指向那個地址,不過地址里的數據會發生改變,會影響到a.屬性的值。

最後,有一個特殊的,String,它雖然是引用類型,傳的是地址,但是對它進行操作不影響原來的字元串,因為它定義的時候是用final修飾的,一修改就自動創建新的副本。

㈣ java中如何用對象作為方法的參數

函數原型:類名 函數名(類名 對象名);
Object function(Object 對象名)
{
//************************************
}

㈤ java 對象傳參

不懂你在問什麼?
如果你能說清楚問什麼,我就能幫你處理。
==========
你只要一個方法,而且這個方法可以接受不同類型的參數。那麼你只能重載了!
如果這樣不同類型的參數是同一介面的實現,或者同一類的子類,那樣也可以。
==========
我們處理問題時,一定要考慮java這門語言的能力!你的思想不能飛到它能力之外去!也許有其它的方法可以處理你的問題,並且在java語言的能力之內,我建議你把真正的問題說出來!也許並不需要你現在的處理方案,也許會處理的更好!

㈥ 如何理解java將對象作為參數

根據以下幾點來理解對象參數:
第一,基本數據類型(int,long,float等)作為參數傳遞,無論在方版法中權對該參數如何修改,都不會改變原值,即調用完方法後,值不會改變。
舉個例子:

m(int a){
a=3;

}

int a=0;
m(a);

System.out.println(a);

此時,a的值為0,值不會改變。

第二,對象(StringBuilder)作為參數傳遞時,在方法中對對象的值進行修改,會改變原來對象中的內容。
同樣地:

m(StringBuilder s ){
s.append("b");

}

StringBuilder s = new StringBuilder();

s.append("a");

m(s);

System.out.println(s.toString());
此時,列印s的值為 ab,對象內容由 「a」變成 「ab」。

㈦ java new對象帶參數什麼意思

當JVM創建一個對象時,首先都要初始化一遍,先從變數,然後構造函數,也就是沒有返回值的方法,例如 A的構造函數是 public A(){},其中A可以帶參數,也可以不帶,你的例子中因為有參數所以A()要帶參數 ,也就是public A(String s){},其實也就是為了初始化變數。如:
class A{
private String s;
public A(String s){
this.s = s;
}
}
創建對象是 A b=new A("5");
此時 b調用s的值就是5了;

㈧ java有參方法對象做參數

樓主我花了點心思給你寫個用對象數組寫的。提供你參數。

不知道你會不會吃力。。不過這個方法比較優先,希望你能看進去。
這里用到對象數組。
用到對象當參數。其他的,我就不多說了。上代碼

/**
* 會員類
* @author ansn001
*
*/
public class Customer {
public String custNo; //會員號
public int score; //會員積分
}

import java.util.Scanner;

/**
* 會員管理類
* @author ansn001
*
*/
public class CustomerManager {
// 假設長度為10,也就是存儲三個會員,長度自己設置
Customer custs[] = new Customer[3];

Scanner input=new Scanner(System.in);

/**
* 給對象數組賦值
*/
public void initial() {

//循環保存十個會員信息
for (int i = 0; i < custs.length; i++) {
//創建對象來保存信息
Customer cust = new Customer();
System.out.println("請輸入第"+ i +"個會員的會員號:");
//賦值
cust.custNo=input.next();
System.out.println("請輸入第"+ i +"個會員的會積分:");
cust.score=input.nextInt();

//給數組賦值
custs[i]=cust;
}
}

/**
* 顯示會員信息
*/
public void show(){
for(int i=0;i<custs.length;i++){
if(custs[i]==null){
break;
}
System.out.println("第"+ i +"個會員的信息如下:");
//通過對象點操作屬性來取值
System.out.print("會員號:"+custs[i].custNo+"\t會員積分:"+custs[i].score);
System.out.println("");
}
}
/**
* 根據會員號查詢會員信息
* @param custNo
* @return
*/
public Customer getCustByCustNo(String custNo){
Customer cust=null;
for(int i=0;i<custs.length;i++){
if(custs[i]==null){
break;
}
if(custs[i].custNo.equals(custNo)) {
cust=custs[i];
break;
}
}
return cust;
}
}

測試類
import java.util.Scanner;

public class Test {

public static void main(String[] args) {
Scanner input=new Scanner(System.in);
CustomerManager manager=new CustomerManager();
//初始賦值
manager.initial();
//顯示
manager.show();
System.out.println("請輸入要查詢的會員號:");
String custNo=input.next();

//查詢
Customer cust=manager.getCustByCustNo(custNo);

if(cust!=null){
System.out.println("該會員的信息為:");
System.out.print("會員號:"+cust.custNo+"\t會員積分:"+cust.score);
}else{
System.out.println("查無此會員信息");
}
}
}

㈨ JAVA 如何將對象作為參數使用

最通俗的和你解釋:
第一個參數是對象,傳遞過去的是引用(即地址),當這個對象專裡面的字元串改屬變後,不影響這個對象的地址,即對象地址沒有變,始終可以找到裡面改後的字元串
第二個參數是字元串,傳遞的依然是引用,當在test函數中改變字元串時,因為字元串時不可變的,那麼會改變這個str的地址值,使其指向新開辟的區域「world」,原來主函數的str沒有變,而test中的str指向了另個字元串【請牢記,雖然是址傳遞,看似都會變,這里由於兩個原因,一是主函數和test中的str一開始指向的是同一空間,但是,它們各自是存耽礌槽啡噩獨茶掃償激儲在不同空間的;二是字元串是不變的,它們指向的字元串不會改變,test中的str會指向其他新開辟的地方】!!!
希望你能懂。

㈩ 關於JAVA的方法參數是類對象的問題

public void f(A a){} //假設A是一個類
可以傳入new A;這就是把類的對象給傳入進去了,我來簡單的剖析一下。
A a=new A();
A是類型,a是對象變數,new A();構建對象,a就可以訪問A的成員了。
如果A有子類,假設是B,也可以這樣傳入 A a=new B();這個是父類引用子類的內存地址,你可以這樣認為byte b=10;int a=b;int比byte大,可以接受byte並且自己轉換過來。但是類型是A就只能看到A類下面的成員。
還有一種強制轉換,傳遞對象過去,有限制的!比如方法要求子類對象B,調用時候,傳遞子類沒問題,如果是父類引用子類呢?那麼就把父類強轉為子類傳遞,如果是new父類轉換子類是錯誤的,因為內存地址不一樣,怎麼收?父類引用子類,在強制轉換為子類,有點繞,知道多態就明白了。