初始化字元串數組java
『壹』 java中一個類包含String數組怎麼初始化的
不可以滴!!
因為在B中,如果沒有了帶*的那一行,那麼僅僅只是代表 有存在一個存放A類型數組:as[i],但是裡面每個元素到底存放什麼我們是不知道的,在JAVA裡面,就是引用為空的意思,既as[i] = null。就是說裡面其實是沒有任何東西的,僅僅只有一個定義而已,那怎麼可以指向A類裡面的a屬性呢?因為as[i]指向的東西都為空,空就是代表沒有任何東西,那麼裡面自然也不會有a這個屬性咯。所以我們在聲明完數組的時候,必須把數組裡面的元素也申明了。但是為什麼C可以呢。
你看C是這樣做的:
C先聲明了一個數組,所以只要存在C的實例,就可以使用到這個數組。雖然這時候,數組裡面的元素是為空的,但是你在主程序裡面使用了c.s[1]="3",意思就是為c實例裡面的數組的第2個元素給申明了,而不是直接引用,這與B是不同的。
——————————————————————————————————————————————————————
B-->不為空,所以可以使用B裡面的元素,既as數組,但是as數組裡面的元素是空的,所以不存在裡面有某種屬性的說法,自然是不可是使用A類裡面的元素a咯。
C--》不為空,所以可以使用C裡面的元素s數組,然後對s數組進行操作。
祝你好運!!希望你能夠理解
『貳』 JAVA中怎麼初始化對象數組
嗯,new之後只是分配了空間,如果不指定值,對象數組空間對應的就是空。那麼如你所說,可否詳盡一下錯誤呢?
『叄』 JAVA中怎麼初始化對象數組
你這個試試對對象數組的一個聲明,並沒有示例話,所以會報空指針異常
這個數組對象都是現用現初始化的
Animals [] an=new Animals[5];//這只是個對象類型數組的聲明
用的時候需要
for(int i=0;i<5;i++)
an[i]=new Animals();
這樣你明白了吧
你前面的那個光聲明了數組,但是沒有調用Animals的構造函數,你數組里的每個元素都是一個對象,使用前必須要先實例化
如果你只是用戶輸入長度,
Animals [] an=new Animals[n];
聲明時是可以用變數的
或者你直接Animals [] an=new Animals[100];定義一個大數組,要用的時候再new Animals();實例化,或者用LinkedList<Animals> an=new LinkedList<Animals>();定義一個動態數組
『肆』 java字元串數組
import java.util.Arrays;
public class Txe {
public static void main(String[] args) {
//new java.lang.String [3];
//在堆中分配一個String類對象的空間,並將該對象的地址堆入操作數棧。
String [] s1 = new String[4];
String [] s2 = new String[4];
String [] s3 = new String[4];
System.out.println("0:"+s1); //<輸出的是s1的地址>
System.out.println("1:"+s1.equals(s1)); // 為什麼輸出是 true <s1的地址與s1的地址比較,地址是相同的。>
System.out.println("2:"+new String [3].equals("null"));// 為什麼,輸出是 false <用一個地址與一個字元串比較>
System.out.println("3:"+new String[3].equals(null));// 為什麼,輸出是 false <地址與值比較>
System.out.println("4:"+new String[3]);//<輸出地址>
s1[1]="a";
System.out.println("5:"+s1[3]);
System.out.println("6:"+s1[1].equals("a"));
//5,6是我自己忘記了,測試用的,汗!
System.out.println("7:"+s2+" "+s3);//<輸出兩個地址>
System.out.println("8:"+s2.equals(s3)); // <地址不同>
System.out.println("9:"+Arrays.equals(s2,s3));//<這個才是數組值與值的比較,註:我前面導入了Array包。>
System.out.println("10:"+new String[3].equals(new String[3])); // false<每重新分配一次地址都會不一樣>
}
}
結果:
0:[Ljava.lang.String;@192d342
1:true
2:false
3:false
4:[Ljava.lang.String;@6b97fd
5:null
6:true
7:[Ljava.lang.String;@1c78e57 [Ljava.lang.String;@5224ee
8:false
9:true
10:false
你寫了這道題第七分鍾時我就看到了。
不過,用了這么久時間,我才稍稍有點點弄明白,找了N多的資料,問了N多的人。
希望對你有幫助。
『伍』 怎樣在java中定義String數組
string[]
str
=
new
string[]{"aaaa","bbbb","cccc"};//直接初始化
string[]
str
=
new
string[]();//這樣需要定義數組的空間
或者直接定義
string[]
str
=
null;
等你使用的時候在new
string[num]();
數組定義完了如果空間不夠的話還可以擴充空間的,函數我忘了你可以在api文檔查一下
『陸』 java中怎麼把字元串轉化為字元串數組
1,
如果是 「字元串數組」 轉 「字元串」,只能通過循環,沒有其它方法
String[] str = {"abc", "bcd", "def"};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < str.length; i++){
sb. append(str[i]);
}
String s = sb.toString();
2,
如果是 「字元數組」 轉 「字元串」 可以通過下邊的方法
char[] data={'a','b','c'};
String s=new String(data);
3,
使用StringUtils中的join函數。org.apache.commons.lang.StringUtils;
4,
將數組變成字元串
5,
StringUtils.join(str)
// 將數組用逗號分隔變成字元串
StringUtils.join(str, ",")
將字元串變成數組方法:
java.lang包中有String.split()方法,java中通常用split()分割字元串,返回的是一個數組。
特殊,轉義字元,必須加"\"(「.」和「|」都是轉義字元)
『柒』 java String數組初始化問題
並不是出亂碼了,是你把r加入進去了,r是一個String數組,無法直接轉換為String
最後的那句 sb.append(r.toString()); 沒有必要,刪除就可以了