導航:首頁 > 編程語言 > java中添加不定長內容

java中添加不定長內容

發布時間:2023-10-01 11:36:57

1. java定義數組必須指定長度嗎

必須指定長度,長度可以在中括弧里用數字表示,也可以在後面用大括弧直接賦元素值來獲得長度。

不指定長度會編譯錯誤,不是造成什麼資源浪費。

int[]a=newint[6];//直接給數組長度,但元素各值默認是0
int[]b=newint[]{1,2,3,};//給數組元素賦值,元素個數就是數組長度

2. java裡面聲明方法裡面的參數可以不確定數目嗎

可以,這就是的不定長參數,下面進行簡要介紹:
先看兩個簡單的例子,來感受一下Java的不定長度參數
第一個例子:
public class VariArgs {
public static void main(String[] args) {
test();
test("aaa");
test("aaa", "bbb");
test("aaa", "bbb", "ccc");
}
public static void test(String... args) {
System.out.println(args.getClass());
for (String arg : args) {
System.out.println(arg);
}
}
}
第二個例子:
public class VariArgs {
public static void main(String[] args) {
test("aaa");
test("aaa", "bbb");
test("aaa", "bbb", "ccc");
}
public static void test(String arg, String... args) {
System.out.println(arg);
System.out.println("----------------");
for (String s : args) {
System.out.println(s);
}
}
}

從上面可以看出,如果一個方法的參數定為不定參數的話,這個參數可以根據參數個數動態生成一個數組,然後傳入方法執行。
不過,不定參數有兩個規定:第一,方法的參數列表中最多隻有一個不定長度的參數;第二,就是不定長度的數組的位置必須是最後一個參數。不然不能通過編譯。
對於第一個規定,是因為如果有多於一個不定長度的參數,當真正調用這個方法的時候,JVM、將不知道前面的不定長度參數有多長, 下一個參數是從哪裡開始.
對於第二個參數也是一樣,編譯器不知道不定長度參數的長度,無法確定從哪裡開始下一個參數。

3. 請詳細說一下java中append()的方法.

Java中的append( )方法其實是創建了一個新的數組,擴大了長度,將需要添加的字元串給復制到這個新的數組中。

JAVA中Stringbuffer有append( )方法:

而Stringbuffer是動態字元串數組,append( )是往動態字元串數組添加,跟「xxxx」+「yyyy」相當『+』號。

跟String不同的是Stringbuffer是放一起的,String1+String2和Stringbuffer1.append("yyyy")雖然列印效果一樣,但在內存中表示卻不一樣、

String1+String2 存在於不同的兩個地址內存,Stringbuffer1.append(Stringbuffer2)放再一起。

StringBuffer是線程安全的,多用於多線程。

(3)java中添加不定長內容擴展閱讀

查看StringBuffer的append()方法

如圖所示代碼

1、進入append方法

@Override

public synchronized StringBuffer append(String str) {

toStringCache = null;

super.append(str);

return this;

}

其中toStringCache是Cleared whenever the StringBuffer is modified.

2、進入AbstractStringBuilder的append()方法

public AbstractStringBuilder append(String str) {

if (str == null)

return appendNull();

int len = str.length();

ensureCapacityInternal(count + len);

str.getChars(0, len, value, count);

count += len;

return this;

}

如果參數str為空返回appendNull(); 該方法最終返回return this.

3、進入ensureCapacityInternal()方法

private void ensureCapacityInternal(int minimumCapacity) {

// overflow-conscious code

if (minimumCapacity - value.length > 0) {

value = Arrays.Of(value,

newCapacity(minimumCapacity));

}

}

Of(char[] original, int newLength)的方法查JDK幫助文檔可知:復制指定的數組,復制具有指定的長度。

4、進入String的getChars()方法

public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {//0,len=5,value=[hello],count=5

if (srcBegin < 0) {

throw new (srcBegin);

}

if (srcEnd > value.length) {

throw new (srcEnd);

}

if (srcBegin > srcEnd) {

throw new (srcEnd - srcBegin);

}

System.array(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);

}

5、最終調用的是System.array的方法:

public static void array(Object src,

int srcPos,

Object dest,

int destPos,

int length)

/*src - 源數組。

srcPos - 源數組中的起始位置。

dest - 目標數組。

destPos - 目的地數據中的起始位置。

length - 要復制的數組元素的數量。

*/

System.array([world], 0, [hello], 5, 5);

將指定源數組中的數組從指定位置復制到目標數組的指定位置。

4. 如何用java語言創建不定長動態數組

如果是String型其實你可以先把要放入數組中的的元素放進一個StringBuffer里,用分隔符分割,在需要的時候轉化成String在用.split()方法分割放進String[]數組里,這樣快,需要的代碼也不多,int型的話,可以用同樣的方法實現,只是數據類型轉化可能會影響速度。數組好像不支持動態變數的。

5. java中輸入一個長度不定的數組該怎麼做

長度未知的數組 也就是不確定長度的數組 可以用ArrayList

閱讀全文

與java中添加不定長內容相關的資料

熱點內容
word文件夾前面有個符號 瀏覽:350
把word轉換成語音 瀏覽:220
linuxfile文件 瀏覽:454
如何用網路打普通電話 瀏覽:463
linux進程打開的文件 瀏覽:134
新購u盤無法儲存文件 瀏覽:553
5s要不要升級ios93 瀏覽:926
小米手機助手怎麼關閉自動升級 瀏覽:24
外星人能不能升級到win10系統盤 瀏覽:652
加入java信任站點 瀏覽:486
好用的急救知識app 瀏覽:524
什麼是網路適配器驅動文件名 瀏覽:717
吉林文件箱多少錢 瀏覽:113
ae模板版本 瀏覽:204
手機qq步數功能在哪裡 瀏覽:721
c程序設計04737 瀏覽:403
女孩什麼年齡學編程 瀏覽:976
安慶如何做網路營銷推廣 瀏覽:620
什麼是數據標准化 瀏覽:708
aecc三維功能實例視頻教程 瀏覽:719

友情鏈接