‘壹’ java中如何动态改变数组长度 动态数组 array
java中的数组一旦被定义长度是不允许修改长度的,如果题主希望实现类似的功能可以采用ArrayList。ArrayList的底层结构就是数组。当ArrayList实例化时会默认设置一个长度,当长度不够用时会自动扩展现有长度的1/2.(假设初始数组长度为10,现在变成了15)
System.array(Object src,int srcPos,Object dest,int destPos,int length )能够实现数组复制的功能。
假设有数组a(src),数组b(dest),我们希望把a数组中从下标为2(srcPos)长度为3(length)的元素复制到b的下标为4(destPos)开始的元素中。java代码示例如下:
inta=[1,3,5,7,9];
intb=[2,4,6,8,0,2,4];
System.array(a,2,b,4,3);
//最终b的内容为[2,4,6,8,5,7,9];
但是如果注意API的话会发现array有几个限制
1、a,b的元素类型必须相同(int和Integer这里也是需要区分的)
2、数组不能越界,也就是srcPos+length不能超过a的长度;desPos+length也不能超过b的长度,否则就会报数组越界的一场。这也说明了无法实现数组长度的动态扩展。
‘贰’ JAVA二维数组如何使用array
array
public static void array(Object src,
int srcPos,
Object dest,
int destPos,
int length)
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
只能复制一维数组
‘叁’ java中array怎么使用
System.array拷贝数组,
array(Object src,int srcPos,Object dest,int destPos,int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到
dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length
参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的
destPos 到 destPos+length-1 位置。
int[] res=new int[]{1,2,3,4,5};
int[] des=new int[]{6,7,8,9,10};
System.array(res,0,res,0,3);
TextView TV= (TextView) findViewById(R.id.text);
StringBuffer SB=new StringBuffer();
for (int i=0;i<res.length;i++){
SB.append(res[i]);
}
TV.setText(SB.toString());123456789
打印结果12345;
如果参数 src 和 dest 引用相同的数组对象,则复制的执行过程就好像首先将
srcPos 到 srcPos+length-1 位置的组件复制到一个带有
length 组件的临时数组,然后再将此临时数组的内容复制到目标数组的 destPos 到
destPos+length-1 位置一样。
int[] res=new int[]{1,2,3,4,5};
int[] des=new int[]{6,7,8,9,10};
System.array(res,1,res,0,3);
TextView TV= (TextView) findViewById(R.id.text);
StringBuffer SB=new StringBuffer();
for (int i=0;i<res.length;i++){
SB.append(res[i]);
}
TV.setText(SB.toString());123456789
假如这样的话就是23445.。。。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int[] res=new int[]{1,2,3,4,5};
int[] des=new int[]{6,7,8,9,10};
System.array(res,1,des,0,3);
TextView TV= (TextView) findViewById(R.id.text);
StringBuffer SB=new StringBuffer();
for (int i=0;i<des.length;i++){
SB.append(des[i]);
}
TV.setText(SB.toString());
//System.out.print(des.toString());
}
}
打印结果是234910.
好明显的道理就是我们是为了得到目标数组,原数组只起被复制的功能,我们打印一万遍源数组还是不变的。但是我们要考虑的是,我们复制的长度再加上目标数组的起始位置不能大于目标数组的长度,
System.array(res,1,des,4,3);1
我们不能从目标数组第四位加起,还截取3,那么就.:数组下标越界了。
所以要慎重。
‘肆’ JAVA中复制数组的方法是什么求详解并举例子!光举例子不给
在JAVA中可以使用array()方法来复制数组。其格式如下:
System.arraycoppy(sArray,intsrcPos,dArray,intdestPos,intlength)
该方法将指定的源数组sArray中的length个元素复制到目标数组dArray中,复制从原数组sArray的指定位置srcPos开始,把原数组中的元素复制到目标数组中,目标数组的位置从destPos位置处开始向后。
复制数组举例:
publicclassLi{
publicstaticvoidmain(Stringargs[]){
intk,a1[]={5,4,3,2,1};
inta2[],a3[];
a2=a1;
a3=newint[7];
for(k=0;k<a1.length;k++)
System.out.print("a1["+k+"]="+a1[k]+" ");
System.out.println();
for(k=0;k<a2.length;k++){
a2[k]+=2;
System.out.print("a2["+k+"]="+a2[k]+" ");
}
System.out.println();
System.array(a2,2,a3,1,3);//从a2数组第2个元素开始复制3个元素
for(k=0;k<a3.length;k++)
System.out.print("a3["+k+"]="+a3[k]+" ");
System.out.println();
}
}
运行结果:
够详细了吧
‘伍’ java中的array问题
System.array是native的方法,所以无法得知
不过既然是array,自然是复制数组的元素
但是请你注意,你的数组元素是数组,也就是说是引用类型。
intArray 和intArrayBak 是两个数组,但是他们的元素是指向同一个的:
System.out.println(intArray[2]==intArrayBak[2]);
结果为true
别被2元数组迷惑,它只不过是一个元素为数组的数组而已
‘陆’ 类 ArrayCopy 是公共的, 应在名为 ArrayCopy.java 的文件中声明
在一个.java中只能有一个public修饰的类 而且这个类就是文件名
‘柒’ 一个在Java中关于array()方法~~~~~是什么意思,
利用java.util.Arrays的Of方法来进行数组的拷贝
String[] from = { "3", "4", "5", "2", "1" };
String[] to = Arrays.Of(from, from.length);
‘捌’ java中 array问题
System.array()没有返回值的
所以楼主这么做是错的
api里
static void array(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
所以,楼主如果想打印出来,就把dest打印出来就行了。。
因为是复制到dest中的。。
‘玖’ java array怎么用
byte[] data1="hello world".getBytes();
byte[] data2 = "2000".getBytes();
byte[] data3 = new byte[data1.length+data2.length];
System.array(data1,0,data3,0,data1.length);
System.out.println(new String(data3));
//1.要拷贝复制的原始数据
//2.原始数据的读取位置(从原始数据哪个位置开始拷贝)
//3.存放要拷贝的原始数据的目的地
//4.开始存放的位置()
//5.要读取的原始数据长度(拷贝多长)
System.array(data2,0,data3,data1.length,data2.length);
System.out.println(new String(data3));
System.out.println(data2.length);
byte[] head = new byte[data2.length];
//拷贝data3的后4位到head中
System.array(data3,data3.length-4,head,0,head.length);
System.out.println(new String(head));
‘拾’ Java 怎样用array把两个数组合并为一个数组或者有其他方法合并
package cn.;
import java.util.Random;
public class ArrayCopyDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rd = new Random();//定义随机数变量
int []array = new int[10];//创建第一个一维数组
int []barray = new int[20];//创建第二个一维数组
//创建目标数组,目标数组的容量尽量满足能容纳两个源数组的容量之和。
int []carray = new int[array.length+barray.length];
for(int i = 0;i<array.length;i++){//用随机数给第一个数组的元素进行赋值
array[i] = rd.nextInt(20);
}
for(int i = 0;i< barray.length;i++){//用随机数给第二个数组的元素进行赋值
barray[i] = rd.nextInt(30);
}
System.array(array,0,carray,0,array.length);//把第一个数组拷贝到目标数组中
System.array(barray,0,carray,array.length,barray.length);//把第二个数组拷贝到目标数组中
for(int i=0;i<carray.length;i++)//打印目标数组的每一个元素
{
System.out.print(carray[i]+"\t");
if((i+1)%10==0){//每行输出是个数组元素
System.out.println();
}
}
}
}