精华内容
下载资源
问答
  • JAVA中如何动态改变数组长度 动态数组 arraycopy
    千次阅读
    2021-02-12 17:19:48

    展开全部

    java中的数组一旦被定义长e5a48de588b662616964757a686964616f31333337393533度是不允许修改长度的,如果题主希望实现类似的功能可以采用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修改数组长度

    千次阅读 2021-02-12 11:07:55
    java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码.[java] view plaincopyprint?import java.lang.reflect.Array;/*** Description: This ...

    java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码.

    [java] view plaincopyprint?

    import java.lang.reflect.Array;

    /**

    * Description: This class is used to adjust array length.

    * @author e421083458

    *

    */

    public class ArrayTest {

    /**

    * @param args

    */

    public static void main(String[] args) {

    int a[]= new int[]{0,1,2,3,4,5};

    int b[]= new int[]{0,1,2,3,4,5};

    a = (int[]) arrayAddLength(a,2);

    b = (int[]) arrayReduceLength(b,2);

    //out print array lenght

    System.out.println(a.length);

    for (int i=0;i

    System.out.print(a[i]);

    }

    System.out.println();

    System.out.println(b.length);

    for (int i=0;i

    System.out.print(b[i]);

    }

    }

    /**

    * Description: Array add length

    * @param oldArray

    * @param addLength

    * @return Object

    */

    public static Object arrayAddLength(Object oldArray,int addLength) {

    Class c = oldArray.getClass();

    if(!c.isArray())return null;

    Class componentType = c.getComponentType();

    int length = Array.getLength(oldArray);

    int newLength = length + addLength;

    Object newArray = Array.newInstance(componentType,newLength);

    System.arraycopy(oldArray,0,newArray,0,length);

    return newArray;

    }

    /**

    * Description: Array reduce lenght

    * @param oldArray

    * @param reduceLength

    * @return Object

    */

    public static Object arrayReduceLength(Object oldArray,int reduceLength) {

    Class c = oldArray.getClass();

    if(!c.isArray())return null;

    Class componentType = c.getComponentType();

    int length = Array.getLength(oldArray);

    int newLength = length - reduceLength;

    Object newArray = Array.newInstance(componentType,newLength);

    System.arraycopy(oldArray,0,newArray,0,newLength);

    return newArray;

    }

    }

    展开全文
  • 此项实现了java数组不方便使用的优化,修护了数组不可更改长度的说话,面向对象的编程思想,小小提示可以当工具类使用
  • Java数组长度为什么不能改变

    千次阅读 2019-03-04 18:33:30
    定义出来的数组a 长度为0,已经是定长了,之后再给它赋值是不可以的,因为它的长度定义出来之后是不可改变的了。所以在使用数组的时候,一定要注意长度,不能超过这个长度,负责就数组下表越界了。 如下代码: ...

    Java中的数组是定长的!你这样int[] a ={}; 定义出来的数组a 长度为0,已经是定长了,之后再给它赋值是不可以的,因为它的长度定义出来之后是不可改变的了。所以在使用数组的时候,一定要注意长度,不能超过这个长度,负责就数组下表越界了。

    如下代码:

    public class ddd {
    	
          public static void main(String[] args){
        	  int num=5;
        	  Student[] s2=new Student[num];
        	  System.out.println(s2.length);//输出结果为:5
        	  num=6;
        	  System.out.println(s2.length);//输出结果为:5
          }
    }
    

    由上代码段可以看出Java语言数组有定长特性,长度一旦指定,不可更改 

     和水杯道理一样,买了一个2升的水杯,总容量就为2升,不能多也不能少

    除非你再买一个4升的水杯,这样才能装更多容量的水

    如下代码:

    public class ddd {
    	
          public static void main(String[] args){
        	  
        	  Student[] s1=new Student[10];//买了一个10升的水杯
        	  System.out.println(s1.length);//水杯能装10升的水
        	  s1=new Student[20];//觉得10升少,去买了个20升的水杯
        	  System.out.println(s1.length);//水杯能装20升的水了
          }
    }
    

    s1=new Student[20]并不是改变了原数组的长度,而是重新在堆中创建了一个新的数组,把标签s1撕下来贴到了新数组上面而已。原来的数组长度并没有改变,没有标签的原数组内存空间会按照回收机制被回收。

    所以 综上所述

    java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。如果对需要用的数组的长度不确定,有两种解决办法:
    第一种是在数组初始化的时候长度申请的足够大,这样做会造成内存空间的浪费,一般不推荐使用。
    第二种是用java中提供的集合的方式存储数据,如List,Set和Map类型的对象存储数据,一方面这些类型的对象的长度都是动态增长的,另一方面这些类中提供了很多便于操作数据的方法,因此在对所需存储数据的多少不确定的时候,第二种方法比第一种方法更优秀。

    展开全文
  • java如何增加数组长度

    千次阅读 2021-02-12 21:39:49
    遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子);...我首先想到的就是数组,但java中的数组是定长的,无法动态增加长度。如果要扩充数组,那就只能通过重新定义数...

    遇到一个面试题:在不使用list的add方法的情况下,动态的添加元素(大概是这个样子);

    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,需学习arraylist的相关知识(http://www.cnblogs.com/ITtangtang/p/3948555.html);

    我首先想到的就是数组,但java中的数组是定长的,无法动态增加长度。如果要扩充数组,那就只能通过重新定义数组,把旧数组内容拷贝到新数组中。

    例如:

    1、定义一个旧数组

    int[] arrOld =new int[2];//旧数组定义

    2、要扩充数组长度到3,需要重新定义数组

    int[] arrNew =new int[arrOld.length*2];//定义新数组,增加一倍的长度

    for(int i=0;i

    arrNew[i] = arrOld[i];//把旧数组中的元素拷贝到新数组中

    }

    大概有这么个思路,具体如何实现,有空再给出一个完整的解决方法;

    题如下:

    /**

    *在不使用list的add的情况下将element添加到list中

    */

    public  class testAdd(Object element){

    }

    Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度-*

    ylbtech-Java-Runoob-高级教程-实例-数组:03. Java 实例 – 获取数组长度 1.返回顶部 Java 实例 - 获取数组长度  Java 实例 本文我们将为大家介绍如何使用数 ...

    Java修改数组长度

    java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码.  [java] view plai ...

    找出整数数组中出现次数超过数组长度一半的元素(Java)

    Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...

    灵魂拷问:Java如何获取数组和字符串的长度?length还是length()?

    限时 1 秒钟给出答案,来来来,听我口令:"Java 如何获取数组和字符串的长度?length 还是 length()?" 在逛 programcreek 的时候,我发现了上面这个 ...

    JAVA为什么不能通过构造函数传参来设置数组长度。

    今天我们来说说 JAVA通过构造函数传递的参数来设置数组长度的问题. 问题在于我们没有明确知晓JVM的运行顺序.在new对象的时候,先调用构造函数,但是并没有将执行构造函数的代码,随机之后就初始化了 ...

    [Java]获取byte数组的实际使用长度

    背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...

    C++ 数组长度 以及 数组名作为参数传递给函数 以及 为什么不在子函数中求数组长度

    在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有 ...

    Java列表、数组、字符串

    列表(list) list中添加,获取,删除元素 添加方法是:.add(e): 获取方法是:.get(index): 删除方法是:.remove(index), 按照索引删除: .remove(Obj ...

    JAVA 基本数据结构--数组、链表、ArrayList、Linkedlist、hashmap、hashtab等

    概要 线性表是一种线性结构,它是具有相同类型的n(n≥0)个数据元素组成的有限序列.本章先介绍线性表的几个基本组成部分:数组.单向链表.双向链表:随后给出双向链表的C.C++和Java三种语言的实现. ...

    随机推荐

    iOS之绘制虚线

    /*   ** lineFrame:     虚线的 frame   ** length:        虚线中短线的宽度   ** spacing:       虚线中短线之间的间距   ** co ...

    listview的用法

    带标题和内容的 private String[] mtitle={"姓名","年龄","生日",};private String[] mar ...

    Python-8 元组tuple

    #1 特殊的列表:元组 元组中的元素不可改变 #2 创建.访问 >>> tuple1=(1,2,3) >>> tuple1=1,2,3 >>> t ...

    mongo(五)副本集

    mongo(五)副本集 配置文件 1-3为三个存储节点,其实一个为Primary,两个secondary作为备份,4为仲裁节点 # mongod.conf #where to log logpath= ...

    好博客分享 go需要运行容器? 不需要

    http://blog.csdn.net/wsl211511/article/details/51645324 粗浅看 Tomcat中设计模式分析 http://www.infoq.com/cn/ar ...

    PHP从数据库获取的下拉树

    多平台Client TCP通讯组件

    Beetle.NetPackage是一个多平台Client Socket TCP通讯组件(Apache License 2.0),组件制统一的对象协议制定规则,可以灵活方便地通过对象来描述TCP通讯交 ...

    CentOS使用nginx部署https服务

    nginx安装参考:https://www.cnblogs.com/taiyonghai/p/6728707.html 自签证书生成参考:https://gmd20.github.io/blog/op ...

    作业要求 20181204-5 Final阶段贡献分配规则及实施

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2479 贡献规则 贡献分分配规则: 组内一共八名同学,贡献分共计80分. ...

    文本相似度-BM25算法

    BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms app ...

    展开全文
  • 动态改变数组长度/** * Reallocates an array with a new size, and copies the contents* * of the old array to the new array.* * @param oldArray the old array, to be reallocated.* * @param newSize the ...
  • // 解决数组长度不可变的问题 // 因为数组在定义的时候已经给定了长度,所以如果有新的元素加入,数组的本身已经放不下了 // 这时候就需要重新将原数组的元素拿出来重新定义数组,将旧元素和新元素重新赋值给新的...
  • System.out.println("b长度:"+b.length); b = a; System.out.println("b长度:"+b.length); } ``` 运行结果: ``` b长度:10 b长度:4 ``` 说明:修改了b的的引用地址,当第二次添加数据时候,b...
  • 使用变长数组,改变数组长度

    千次阅读 2017-05-12 13:01:02
    Java中的数组是定长的,一旦经过初始化声明后就不可改变长度。事实上,可以通过对数组扩容“婉转”地解决该问题。代码如下: 定义expandCapacity方法: public static [ ] expandCapacity(T[ ] datas , int ...
  • 大家了解什么是数组长度吗?什么是数组下标吗?经常有人将这两个词混淆,今天呢,小编给小伙伴们带来了有关数组的相关知识,就让我们一起了解了解吧。有的人说数组是可以改变,有的人说数组是不可以。然而我在使用的...
  • 今天小编就为大家分享一篇Java不指定长度的二维数组实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 改变长度删除数组中的元素,程序完全可以运行,方便大家学习交流
  • 数组一旦创建,程序运行期间,长度不可改变 ** 代码: package com.company; public class Main { public static void main(String[] args) { int[] arrayA = new int[3];//数组的动态初始化 int[] arrayB = {1,...
  • 数组长度、遍历数组、求最值和数组元素反转
  • java修改数组长度/大小

    万次阅读 2013-01-22 13:53:27
    java中没有关于修改数组长度的api,在此本人提供了修改数组长度的两个函数:arrayAddLength()和arrayReduceLength().详细见代码. import java.lang.reflect.Array; /** * Description: This class is used to ...
  • 数组一旦创建,程序运行期间,长度不可改变。 public class ArrayLength { public static void main(String[] args) { int[] arrayA = new int[3]; int[] arrayB = {1,2,3,4,5,6,7,8,9,0,11,22,33,44,55,66,77,88...
  • 解答java中如何求数组长度

    千次阅读 2020-05-22 21:39:06
    方法很简单,只要数组名称.length就可以了。下面举个例子 但是记住,数组一旦创建,在程序运行期间,长度不允许改变。除非你new一个数组
  • java中关于数组长度

    千次阅读 2020-07-07 15:51:18
    数组一旦创建,程序运行期间,长度不可改变 代码展示 public static void main(String[] args) { int[] arrayA=new int[3]; int[] arrayB={1,2,3,4,5,6,7,8,9,0,2,3,3,4,4,55}; int len=arrayB.length; System...
  • 得到数组的长度在java里是很简单的,那就是:数组名.length,我们来看...是的,但是有的时候还是会出现那种,我们不知道数组长度的情况,比如,一个函数的参数是数组的时候(我们以后会说到函数),再比如,如果数 组...
  • 为什么Java数组长度不可改变

    千次阅读 2018-08-22 13:59:08
    假设数组内存如上图所示,那么当我们增加数组长度时,就可能导致别的变量被覆盖,导致出错。 这时,有人会想,那减少长度也是可以的呀,但是这会出现一个现象,那就是突然,空出来一个内存空间。 如果内存空间一...
  • JAVA数组的定义

    千次阅读 2021-02-12 13:15:23
    JAVA一维数组一,注意不可添加数组元素不可改变数组长度一个数组中的说有元素必须数据类型相同二,创建方法三种1直接添加元素类型[] 数组名 = {元素,元素,元素,……};int[] arr={1,2,3,4};2先定义数组长度再添加...
  • 获取数组长度的格式; 数组名称.length public class shuzu { public static void main(String[] args) { int[] arrayA = new int[3];//动态初始化 int[] arrayb = {1,2,3,4,5,6,7,8,9,5,6,4,6,5,9,4,6,4,6,6};
  • 声明数组长度声明数组长度能够能力短期的是降低企业偿债,声明数组中下列业务。能够改变险的企业特定统风非系是(,长度中下列事项。那么8年年提高(资产的净甲公率比司2收益,声明数组总资转率...
  • 这时就只能改变数组里的数值而不能改变它的长度了.Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,988
精华内容 63,995
关键字:

java改变数组长度

java 订阅