「java如何改变数组」java改变数组存放的数组元素的数据类型

博主:adminadmin 2023-01-21 18:03:07 354

本篇文章给大家谈谈java如何改变数组,以及java改变数组存放的数组元素的数据类型对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA中如何动态改变数组长度 动态数组 arraycopy

java中的数组一旦被定义长度是不允许修改长度的,如果题主希望实现类似的功能可以采用ArrayList。ArrayList的底层结构就是数组。当ArrayList实例化时会默认设置一个长度,当长度不够用时会自动扩展现有长度的1/2.(假设初始数组长度为10,现在变成了15)

System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length )能够实现数组复制的功能。

假设有数组a(src),数组b(dest),我们希望把a数组中从下标为2(srcPos)长度为3(length)的元素复制到b的下标为4(destPos)开始的元素中。java代码示例如下:

int a = [1,3,5,7,9];

int b = [2,4,6,8,0,2,4];

System.arraycopy(a,2,b,4,3);

//最终b的内容为[2,4,6,8,5,7,9];

但是如果注意API的话会发现arraycopy有几个限制

1、a,b的元素类型必须相同(int和Integer这里也是需要区分的)

2、数组不能越界,也就是srcPos+length不能超过a的长度;desPos+length也不能超过b的长度,否则就会报数组越界的一场。这也说明了无法实现数组长度的动态扩展。

java中怎么实现可变数组

java中的数组是不可变的,所以要实现可变数组是不可能的了。如果非要改变数组的长度,那么也只能重新开辟一个新的数组然后将长度设定为想要的,然后放弃原来的数组,当然这个放弃的数组,如果没有被引用,它会很快就被GC掉。

java中有一个方法:System.arraycopy

通常我们都使用的是Arrays.copyOf,但你去看API就知道,其实Arrays.copyOf调用的也正是System.arraycopy

public static int[] copyOf(int[] original, int newLength) {

        int[] copy = new int[newLength];

        System.arraycopy(original, 0, copy, 0,

                         Math.min(original.length, newLength));

        return copy;

    }

java使用方法改变数组的值

package com.vortex.test.type;

public class ArrayUtilE {

/**

*

* @param arr 需要改变的数组

* @param index 需要改变的下标

* @param newValue 新的值

* E 泛型: 数组对象类型:例如 String、Integer或者自定义对象类型

* @return

*/

public E[] chageValue(E[] arr,int index,E newValue){

try{

arr[index] = newValue;

}catch(Exception e){

System.out.println(e.getMessage());

}

return arr;

}

public static void main(String[] args) {

ArrayUtilString au = new ArrayUtilString();

String[] arr = {"1","2","3","4"};

System.out.println("修改前");

for(int i=0;iarr.length;i++){

String val = arr[i];

System.out.println("第"+i+"个元素 为"+val);

}

arr = au.chageValue(arr, 0, "100");

System.out.println("修改后");

for(int i=0;iarr.length;i++){

String val = arr[i];

System.out.println("第"+i+"个元素 为"+val);

}

ArrayUtilUser user_au = new ArrayUtilUser();

User[] user_arr = {new User("张三",22),new User("李四",23),new User("王五",21)};

System.out.println("修改前");

for(int i=0;iuser_arr.length;i++){

User u = user_arr[i];

System.out.println("第"+i+"个元素 name="+u.getName()+" age="+u.getAge());

}

user_arr = user_au.chageValue(user_arr, 0, new User("赵六",25));

System.out.println("修改后");

for(int i=0;iuser_arr.length;i++){

User u = user_arr[i];

System.out.println("第"+i+"个元素 name="+u.getName()+" age="+u.getAge());

}

}

}

class User{

private String name;

private int age;

public User(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

java怎样对数组里面的数据进行增、删、查、改?

您好, 删除delete(a,4); 删除index=4的数据,即a[4]=4 删除\x0d\x0a 批量删除delete(a,2)删除所有a[i]=2的数据,即a[2] 、a[6]、 a[7]删除\x0d\x0a原题就这么写的,两个方法名一样,参数一样,功能却不一样。\x0d\x0aclass TestArray{\x0d\x0apublic static void main(String[]args){\x0d\x0a int[] a ={0,1,2,3,4,5,2,2,1};\x0d\x0a print(add(a,9,2));\x0d\x0a print(delete(a,3));\x0d\x0a select(a,2);\x0d\x0a print(change(a,2,98));\x0d\x0a print(deleteAll(a,2)); \x0d\x0a}\x0d\x0a//增\x0d\x0apublic static int[] add(int[] array,int num,int index){\x0d\x0aint[] result=new int[array.length+1];\x0d\x0afor(int i=0,j=0;i

回答于 2022-11-16

关于java如何改变数组和java改变数组存放的数组元素的数据类型的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。