导航:首页 > 编程语言 > 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中添加不定长内容相关的资料

热点内容
买房哪个网站好 浏览:913
打完新冠疫苗下载什么app可以查到 浏览:879
海信电视用哪个app看网络电视 浏览:96
编程什么时候流行的 浏览:683
自学编程新手看什么书 浏览:180
linux全盘tar 浏览:454
ps文件命名自动输入怎么办 浏览:467
iphone6plus切图 浏览:822
iphone6没有提示更新 浏览:41
cc网络图教程 浏览:650
u盘无法剪切文件到电脑里 浏览:497
中海达静态数据大概多少内存 浏览:599
苹果6s手机文件管理器 浏览:107
qq头像非主流女生捂脸 浏览:736
java判断string编码 浏览:941
excel工资簿如何匹配相同数据 浏览:159
视频课程学习有哪些app 浏览:375
铁模编程怎么学 浏览:298
数学网络研修研究问题有哪些 浏览:677
stl文件怎么打印 浏览:427

友情链接