java字符串数组扩容,新人学java
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字符串数组扩容,新人学java相关的知识,希望对你有一定的参考价值。
package com.test3;
public class DoubleSize
public static void ds(String[] a)
String[] NewA = new String[a.length*2];
for(int i=0;i<a.length;i++)
NewA[i]=a[i];
a=NewA;
public static void main(String[] args)
// TODO Auto-generated method stub
String[] a="abc","bbb","ccc";
DoubleSize.ds(a);
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
System.out.print(a.length);
为什么输出长度还是3
我想实现的事一个方法能使字符串数组扩大1倍,然后在main函数里调用
//方法内部不能改变参数的值,但是可以改变参数指向的值
//这样写没有改变a,但是可以改变a[0]
/**
*
* @param a
* @param index
*/
public static void ds(String[][] a,int index)
String[] NewA = new String[a[index].length*2];
for(int i=0;i<a[index].length;i++)
NewA[i]=a[index][i];
a[index]=NewA;
public static void main(String[] args)
// TODO Auto-generated method stub
String[][]a=new String[2][];
String[] a1="abc","bbb","ccc";
a[0]=a1;
DoubleSize.ds(a,0);
for(int i=0;i<a[0].length;i++)
System.out.println(a[0][i]);
System.out.print(a[0].length);
参考技术B 同学NewA是指向局部变量的引用,而将数组a传到ds()函数后,在ds()函数里的a只是主函数a的一个复制并不是原来的a,当ds()调用完毕后,ds()中的NewA和a都会被回收,而主函数中的a保持不变追问
请问怎么改能达到我说的效果?
追答怎么个意思?ds()的方法声明可不可以改?
追问可以~只要实现我说的就行 谢谢了
追答public class Main
public static void main(String[] args)
String[] a="abc","bbb","ccc";
a=ds(a);
for(int i=0;i<a.length;i++)
System.out.println(a[i]);
System.out.print(a.length);
public static String[] ds(String[] a)
String[] NewA = new String[a.length*2];
for(int i=0;i<a.length;i++)
NewA[i]=a[i];
return NewA;
abc
bbb
ccc
null
null
null
6
所以由String组成的数组也不会改变,即使你在静态方法只写个a = null;
在main里面的输出结果也不会变, 这是String数组的特性,记住即可
Java数组扩容
第一种 int[] arr2=new int[arr1.length*2] //新数组的长度
第二种 int[] arr2=java.util.Arrays.copyOf(原数组名,新数组的长度);
第三种 int[] arr2=new int[arr1.length*2] System.arraycopy(原数组名,起始下标,新数组名,起始下标,复制长度);
小例
package com.xuefei.arrayTest; /** * * @author 雪飞oubai * 数组扩容 */ public class BigArray { public static int[] addArray(int[] arr1) { int[] arr2=new int[arr1.length*2]; //新数组长度 for(int i = 0 ; i < arr1.length ; i++) { arr2[i] = arr1[i]; } return arr2; } public static void main(String[] args) { int[] arr ={1,2}; int[] bigarr = addArray(arr); System.out.println(bigarr.length); } }
以上是关于java字符串数组扩容,新人学java的主要内容,如果未能解决你的问题,请参考以下文章
Java学习之IO流(其他操作流 操作基本数据类型操作字节数组操作字符数组操作字符串)