⑴ java對象數組類型的參數,太難懂了。
package ch14;
import java.util.*;
import ch11.sd; ★為什麼要引用這個類?
//這個是多餘的,沒有必要,估計是引入多了,對運行沒有影響的,
public class TestCal {
public static void main(String[] args) {
CalScore calScore=new CalScore();
Scanner input=new Scanner(System.in);
Student[] stus=new Student[5]; ★為什麼這個數組類型是Student??
//因為你要生成的是Student類型的數組,此時數組裡面每個元素為null
for(int i=0;i<stus.length;i++){
stus[i]=new Student(); ★為什麼每次循環都需要實例化??
//java規定,所有對象使用前必須實例化,這里是分配內存給數組第i個元素,然後你就可以對數組元素操作了
System.out.println("請輸入身高");
stus[i].hegiht=input.nextDouble(); ★為什麼這個數組stus[i]後面調用了height?
//這個是給stus[i]裡面的成員變數height賦值,一般不推薦這樣寫
}
System.out.println("平均身高是:"+calScore.cal(stus));
}
}
⑵ java 對象數組類型作為參數怎麼理解
class Person{
public String name;
}
public class Test{
public static void main(String[] args){
String[] arr = new String[2];
Person p1 = new Person();
p1.name = "張三";
Person p2 = new Person();
p2.name = "李四";
arr[0] = p1;
arr[1] = p2;
}
}
⑶ java把組數作為參數,嘗試用兩種方式改變數組的元素,結果不同的原因
配合內存分布圖
當沒有注釋的代碼時,此時在main方法中調用change方法,然後將數內組作為參數傳遞容,此時傳遞的是地址值。雖然main方法中的arr和change方法參數里的arr看似名稱一致,但是實際在棧中會有兩份。就和上圖一樣。
本來main方法中的arr就是指向0x1122地址的數組,然後將這個地址賦給了change方法參數里的arr,所以此時change方法里的arr也指向了0x1122地址的數組。所以如果對這個數組里的內容進行改動,通過兩個arr訪問都是一樣的。所以通過change改動數組內容,main方法中也能夠看到修改後的內容
如果加上注釋的那一行代碼。因為重新new一個新的數組,然後將其地址值改成了0x3344,所以change方法里的arr不再指向0x1122,所以你無論怎麼修改內部數據,和main方法中的arr也沒有關系
如上做一個簡單的總結
就比如有兩個人共用一個衛生間。一個人很邋遢給廁所里搞得很臟,另一個人進去就能看到廁所很臟
如果兩個人各有一個衛生間。一個人哪怕在廁所生火做飯,另一個人也看不到
⑷ 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 class Test01 {//新建一個類
String s = new String("good");//創建一個對象名字為s內容為good
String[] ss = {"aaa"};//創建一個名為ss的數組只有1個數量內容為aaa
public void m_method(String str,String[] sa) {//設置一個公共的無返回值的名為m_method的函數 ()裡面是參數
str = "bad";//把bad賦值給str
sa[0]="bbb";把bbb賦值給sa的第一個數組對象
}
public static void main(String[] args) {//程序入口
Test01 t1 = new Test01();//在Test01里創建一個名為t1的對象
t1.m_method(t1.s,t1.ss);//對象t1調用test01的m_method函數,t1.s也就是test01類的s也就是good作為第一個參數,t1.ss也就是test01類裡面的ss也就是aaa作為第二個參數進行運行
System.out.println(t1.s+t1.ss[0]); //輸出t1.s的值和t1.ss[0]的值;
}
⑹ 在Java中數組作為方法的參數的一個問題。
public static int add(int[] a)和public static int add(int a[]) 這兩個是版一樣的權 參數 是 int數組
public static int add(int a) 這個 參數 是 個 int
⑺ java 字元串數組作為參數傳遞結果未初始化
我明白你的意思。你是說result這個數組作為參數傳遞進去,在執行Converse方法後為啥版還是null對嗎。其權實是這樣。引用傳遞沒錯。但是你忘記了一件事。String [] result沒有初始化,那麼其實String [] result = null;所有成員變數會默認初始化,只不過引用型默認為null。這樣一來,result=null。相當於你在Converse(input,result)時傳了null進去。這時,pOutput=result ,即pOutput=null,執行這一句pOutput = wordArray.split(" ")後pOutput指向了一個String[]對象不為null了,但是方法結束後pOutput就彈棧了就死了而result還指向null;因此當該方法結束後result還是null。
⑻ java函數中怎麼用數組做參數
java函數中用數組做參數的步驟:
在main函數裡面加這段話:System.out.println("arg is"+args[0]),然後看輸出:
This is a simple Java program
arg is XX。
在運行時輸入java test xx yy zz,並且在main函數裡面加這段話:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然後看輸出:
This is a simple Java program
arg is xx yy zz。
java函數 :
是一種特殊的函數。其主要功能是用來在創建對象時初始化對象, 即為對象成員變數賦初始值,總與new運算符一起使用在創建對象的語句中。
構造函數與類名相同,可重載多個不同的構造函數。
在JAVA語言中,構造函數與C++語言中的構造函數相同,JAVA語言中普遍稱之為構造方法。