精华内容
下载资源
问答
  • 今天做项目遇到一个这样的问题,我要把查询出来结果放在数组,String[] array = new String[?] ,但数组的大小是不可预知的,更不能把length NEW 成常量,怎么办?...下面是从网上检索到的具体用法:Java动态数组...

    今天做项目遇到一个这样的问题,我要把查询出来结果放在数组里,String[] array = new String[?] ,但数组的大小是不可预知的,更不能把length NEW 成常量,怎么办?其实也很简单,我们也经常用的,就是把ArrayList当作动态数组来用就可以了,DEMO:ArrayList array = new ArrayList();

    下面是从网上检索到的具体用法:

    Java动态数组是一种可以任意伸缩数组长度的对象,在Java中比较常用的是ArrayList,ArrayList是javaAPI中自带的java.util.ArrayList。下面介绍一下ArrayList作为Java动态数组的用法。

    1.语法:

    add()是添加一个新的元素,

    remove()删除一个元素,

    size()获得ArrayList的长度。

    ArrayList的下标是从0开始。

    2.示例代码

    package wang48.jiaocheng;

    import java.util.ArrayList;

    public class JavaArrayList

    {

    public static void main(String[]args)

    {

    //Java动态数组的初始化

    ArrayList al=new ArrayList();

    //向Java动态数组中添加数据

    al.add("a");

    al.add("b");

    al.add("c");

    //输出Java动态数组

    for(int i=0;i

    {

    String alEach=(String)al.get(i);

    System.out.println(alEach);

    }

    //删除数组中的某个元素,删除第二个元素

    al.remove(1);

    //修改Java动态数组,把新的元素放到第二个位置

    al.add(1,"2");

    输出Java动态数组

    for(int i=0;i

    {

    String alEach=(String)al.get(i);

    System.out.println(alEach);

    }

    }

    }

    输出如下:

    a

    b

    c

    a

    2

    c0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • ## 数组 ###### 1、介绍####> **数组概念**:是一种容器,可以同时存放多个数据值> **数组特点**:> 1.数组是一种引用数据类型>...动态初始化(指定长度)> `数据类型[] 数组名称 = new...

    ## 数组 ##

    #### 1、介绍####

    > **数组概念**:是一种容器,可以同时存放多个数据值

    > **数组特点**:

    > 1.数组是一种引用数据类型

    > 2.数组当中的多个数据类型必须统一

    > 3.数组长度(`数组名称.length`)在程序运行期间不可改变

    > **数组的初始化**:

    > 1.动态初始化(指定长度)

    > `数据类型[] 数组名称 = new 数据类型 [数组长度];`

    > `int[] array01 = new int[300];`

    > 2.静态初始化(指定内容)

    > `数据类型[] 数组名称 = new 数据类型[]{元素1,元素2,元素3,元素4....}`

    > `int[] array02 = new int[]{1,2,3,4,5};`

    > 3.精简格式(静态初始化)

    > `数据类型[] 数组名称 = {元素1,元素2,元素3,元素4....}`

    > `int[] array02 = {1,2,3,4,5};`

    > 4.引用指向数组

    > 将array01数组的地址值给array02

    > `int[] array02 = array01;`

    > 5.注意事项

    > 静态初始化没有指定长度,但是依然会自动推算得到的长度

    > 静态初始化标准格式可以拆分为成为两个步骤

    > 静态初始化一但使用精简格式就不能拆分成两个步骤

    > 直接打印数组名称,得到的是数组对应的内存地址哈希值

    > 数组作为方法的参数时,传递进去的其实是数组的地址值

    >

    > 5.访问数组元素

    > 格式:`数组名称[索引值]`

    > 索引值:就是一个int数字,从0开始,一直到数组长度-1为止

    #### 2、Java中内存划分 ####

    > Java内存划分成为5个部分:

    > a)**栈**:存放的都是方法中局部变量,方法运行一定要在栈当中

    > 局部变量:方法参数,或者是方法\{\}内部的便来给你

    > 作用域:一旦超出作用域,立刻从栈内存中消失

    > b)**堆**:凡是new的东西都在堆当中

    > 堆内存里面的东西都有一个地址值:16进制,里面的数据都有默认值 、

    > c)**方法区**:存放.class相关信息,包含方法信息

    > d)**本地方法栈**:与操作系统相关

    > e)**寄存器**:与寄存器相关

    #### 3、相关代码####

    public static void main(String[] args) {

    int[] array01 = new int[]{ 2,1,4,6,5,3,0,6,7,8,9};

    int[] array02 = array01;

    System.out.println("数组长度为:" + array02.length); //数组长度为:11

    System.out.println("-----------------------------------------------------------------");

    System.out.print("数组遍历→ ");

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

    System.out.print(array02[i] + " | "); //数组遍历→ 2 | 1 | 4 | 6 | 5 | 3 | 0 | 6 | 7 | 8 | 9 |

    }

    System.out.println();

    System.out.println("-----------------------------------------------------------------");

    System.out.print("数组最大值为:");

    int bignum = array02[0];

    for (int i = 1; i < array02.length; i++){

    bignum = array02[i] > bignum ? array02[i] : bignum;

    }

    System.out.println(bignum); //数组最大值为:9

    System.out.println("-----------------------------------------------------------------");

    System.out.print("数组反转之后遍历→ ");

    int max = array02.length-1;

    int spare = 0;

    for (int i = 0; i <= (array02.length-1)/2; i++){

    spare = array02[i];

    array02[i] = array02[max];

    array02[max] = spare;

    max--;

    }

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

    System.out.print(array02[i] + " | ");

    }

    }

    ![在这里插入图片描述][20200725111434240.png]

    #### 4、数组工具类Arrays ####

    > * java.util.Arrays是一个与数组相关的工具类,里面提供了大量静态方法,用来实现数组常见的操作

    > * `public static String to String(数组)`:将参数数组变成字符串

    > * `public static void sort(数组)`:按照默认升序对数组元素进行排序

    相关代码:

    import java.util.Arrays;

    public class a30_数组工具类Arrays {

    public static void main(String[] args) {

    //将数组变成字符串

    String[] arr01 = { "s","t","r","ing"};

    String str01 = Arrays.toString(arr01);

    System.out.println("将数组变成字符串:" + str01);

    int[] arr02 = { 1,2,3,65,4,3,76,1,2};

    Arrays.sort(arr02);

    System.out.println("数组按升序排列:" + Arrays.toString(arr02));

    }

    }

    ![在这里插入图片描述][20200805165552138.png]

    ##### 练习(字符串排序倒序输出) #####

    代码:

    import java.util.Arrays;

    public class a31_练习字符串排序倒序输出 {

    public static void main(String[] args) {

    String text01 = "ash5jJASKLD2sjadklJDA34SILd1asj512li";

    char arr01[] = text01.toCharArray();

    Arrays.sort(arr01);

    for (int i = arr01.length - 1; i >= 0; i--) {

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

    }

    }

    }

    ![在这里插入图片描述][20200805171527581.png]

    [20200725111434240.png]: /images/1613551702235.png

    [20200805165552138.png]: /images/1613551690707.png

    [20200805171527581.png]: /images/1613551678561.png

    展开全文
  • foreach循环时动态数组里添加数据,有一次做项目中,foreach的时候需要动态数组里添加数据(我们这里随便举个例子)结果:哎?奇了怪了,这说明foreach循环时可以动态的往数组里添加数据,为什么$arr的数据确实被...

    foreach循环时动态往数组里添加数据,有一次做项目中,foreach的时候需要动态往数组里添加数据(我们这里随便举个例子)

    653ae6460f13edbcc53d6e9d03e492af.png

    结果:

    bVsnkr

    哎?奇了怪了,这说明foreach循环时可以动态的往数组里添加数据,为什么$arr的数据确实被添加上了,但是没有被foreach循环出来呢?

    网上查找得知,foreach循环的其实是数组的拷贝,而不是该数组本身,如果是数组拷贝的话,肯定是改变数组之前进行的拷贝,根据运行结果得知

    虽然循环中确实改变了原有的数组,但循环的是拷贝的数组(也就是老的数组),所以你无法循环到新添加的元素

    好吧,暂且忍了

    如果foreach的时候用引用赋值,新添加的数据就可以被循环出来了

    bVsnku

    结果:

    bVsnkw

    而foreach($arr as &$v){···}的时候,此方法将以引用赋值而不是拷贝一个值,$v和$arr[$k]指向同一内存地址,此时foreach循环的是原数组, 数组的指针也是在原数组中移动的,所以新添加的数据可以被循环出来,值的变化也直接影响数组本身的值

    那既然&的时候,foreach直接循环的是原数组,那我这样呢?

    bVsnk6

    结果:

    bVsnk7

    既然&的时候,直接操作的是原数组,为什么unset($v)之后,原数组不变呢?

    foreach($arr as &$v){···}的时候,相等于$v=&$arr[$k]

    $arr[$k]和$v同时指向$arr[$k]的内存地址,即便是unset($v),仅仅是删除了$v对内存空间的引用,并没有删除$arr[$k]对内存地址的引用,所以$arr[$k]依然健在,$arr自然也就没变化,所以应该这样

    bVsnk8

    结果:

    bVsnk9

    还有一点需要注意:&$k什么结果

    bVsnlb

    结果:

    bVsnlh

    意思是:键不能被引用,压根就没有这种语法格式

    如果您阅读过此文章有所收获,请为我顶一个,如果文章中有错误的地方,欢迎指出。

    相互学习,共同进步!

    展开全文
  • 数组 1、概念 ...动态初始化赋值只指定数组长度,是由系统给他赋值 //这里就创建了一个int整型的,长度为3的数组,即里面可以存放3个int型的数据 int arr[] = new int[3]; (2)静态初始化 静态初始...

    数组

    1、概念
    存储同一类型数据的不同元素集合

    2、特点
    每个数组存储的数据类型必须一致,而且数组不仅可以存储基本数据类型,也可以存储引用数据类型。

    3、格式
    在这里插入图片描述
    4、初始化
    (1)动态初始化
    动态初始化赋值只指定数组长度,是由系统给他赋值

    //这里就创建了一个int整型的,长度为3的数组,即里面可以存放3个int型的数据
    int arr[] = new int[3];
    

    (2)静态初始化
    静态初始化指定每个元素的初值,由系统给决定数组长度。

    //创建了一个int整型数组,里面的值是1,2,3,所以长度为3
    int arr[]=new int[]{1,2,3};
    

    5、索引
    数组的每个元素都有自己的编号,这个编号就是索引,这里要注意一点,数组的编号不是从1开始,而是从0开始,你要想有一个1-10的int型数组,它的1对应的索引为0,一定不要记错。

    6、二维数组
    (1)格式

    数据类型[][] 数组名 = new 数据类型[二维数组的长度/包含的一维数组的个数][每个一维数组的长度];
    
    例如:定义了一个整型的二维数组,其中包含5个一维数组,每个一维数组可以存储5个整数
    int[][] arr = new int[5][5];
    

    (2)概念
    简单的来说,你可以把二维数组的每一个元素都理解成一个一位数组,比如上面举例的arr[5][5],这里第一个中括号你可以列为行数,第二个中括号你可以理解为列,就是如下图,第一个[]是竖着的0-4共五个元素,而每一个元素都对应着第二个[]的0-4五个元素。
    在这里插入图片描述

    展开全文
  • 从我写博客的那一天起,我就在思考如何通过通俗易懂的话让看到文章的童鞋立马能明白我讲解的什么,即使文章很长若是层层递进定不会感到枯燥乏味,所以我脑海一直在高度不停旋转着去找合适的例子。关于集合学习将...
  • Java中实现数组动态扩容的两种方法java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量。我们可以通过两种方法...
  •  java数组总的来说有两种定义方法一种是型如:  int [] array=new int[10]; 的定义 这种定义相当于将声明  int [] array;与赋值  array=new int [10];写在了一起。 还有另一种方法是:  int [] array=...
  • 泛型数组列表,主要是为了解决运行时动态更改数组的问题平常我们会定义一个部门里面的人员的一个数组,但是在实际业务当中,这个数组的大小往往是不确定的,如果定义过大,那么会浪费空间,定义过小,又不够用,因为...
  • java数组6_Java-6 数组

    2021-03-09 02:10:14
    1.数组用来存储一组相同数据类型的集合(容器)。...声明数组格式数据类型[] 数组名数据类型 数组名[]数组声明int[] arr1.1动态数组初始化动态初始化// 数据类型[] 数组名 new 数据类型[长度]int[] arr=new int[4];...
  • Java集合 之 动态数组

    2010-12-08 19:44:45
    1、如何创建动态数组,并且为用户提供了动态扩展数组长度的接口 2、修改在数组指定位置添加元素 3、该数组适应于多线程环境 4、为该类添加删除一个元素的方法    该类的优点:  1. 顺序表因为采用顺序...
  • 一、多维数组Java 语言提供了支持多维数组的语法。如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个表格,类似于一个 Excel表格。以二维数组来讨论,可以看成一维数组array1 中又作为另一个...
  • java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量。 我们可以通过两种方法来实现数组动态扩容,一种是...
  • Java启程】数组

    2020-05-20 17:05:30
    我们在之前的数据类型与类型转换提到过,数组是一种引用数据类型。数组的作用是能够存储多个相同数据类型数据,一般用[]来标识。 Java数组的声明方式可以是数据类型[] 数组名,也可以是数据类型 数组名[],但...
  • 动态数组

    2020-08-30 16:36:56
    本篇博客就主要记录记录我对几种常用的动态数组的理解,主要包括C++ stl的vector,java中的ArrayList,redis中的SDS(动态字符串,本质上就是动态字符数组) 并且主要讨论它们的扩容机制。 C++ stl —— vector ...
  • 今天做一个题,我不知道怎么初始化数组的长度,由于我不知道初始化为多少,到最后我输出的时候,显而易见,会输出一些0如果你在java里面想用数组,但是你不知道数组的长度那么请你用Set ArrayList 等等。。。。。。...
  • Java基础:数组

    2021-03-23 21:07:32
    数组 数组:存储同一种数据类型多个元素的固定容器 数组的特点: 数组的长度是固定不变 存储的元素必须是多个(注意:数组里面可以没有元素,也可以含有唯一的元素,这样的数组没有任何意义) ...动态初始化
  • Java中的数组定义

    2018-08-20 01:09:43
    首先,对于数组Java里面建立数组主要有两种方式: /* * 基本数据类型的创建。数组一定是先分配了空间再赋值 * 如果在分配空间的时候初始化,这叫静态初始化,也就是使用{}赋值 * 如果在分配空间的...
  • 1.概念描述: vector名为动态数组 有些时候想开一个数组,但是却不知道应该开多大长度的数组合适,因为我们需要用到的数组很可能会根据情况变动。...C++中动态数组写作vector,Java中写作ArrayList,C...
  • duwenquan-方形LOGO.pngjava中数组数组是指一组数据的集合,数组中的每个数据...数组的定义与初始化定义及动态初始化方式一,java推荐用法: type [] 变量名 = new type[数组中元素的个数];//举例int[] a = new in...
  • (本人很菜,所以以下本文若让您觉得太简单or有问题,请轻拍板砖。欢迎在评论区提出你的问题or补充or解答)今天在敲代码的时候,发现一个奇妙的点:(1)关于...java里是可以不给二维数组定义列数的。直接上代码:b...
  • java的多维数组

    2021-03-09 20:43:06
    二维数组 可以理解为一个数组里面嵌套了另一个数组 如何程序的概念都应该在程序中体现和分析 ... 动态的表示 */ int[][] a=new int[2][5]; //定义了外面数组长度为2,里面每一个数组长度为5 a[0][0]=
  • Java中的数组深入学习

    2019-06-02 08:47:40
    Java数组封装ArrayList,实现动态扩容。 数组 特性 数组的为什么查找的时间复杂度为O(1) 首先它是连续的内存空间,定位的时候是通过首地址加上所谓的偏移量(数据size*offset) 数组是一个对象,继承了Object里面...
  • 2、数组是一个引用数据类型,数组的变量只是一个引用,数组元素和数组变量在内存是分开存放的。 (二)初始化 1、静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。 2、动态...
  • Java基础-数组

    2019-10-24 21:04:52
    数组初始化 一维数组中,里面的每一个元素,都是一个基本类型; int arr[] = new int[]{1,2,3,4};... //动态初始化 //数据类型[] 数组名称 = new 数据类型[数组长度]; 二维数组中,里面的每一个元...
  • java学习笔记数组

    2016-05-11 18:04:23
    使用java数组分为两步,声明数组和分配内存给该数组。 int [ ] attr=new int [6];// int 整形数组 int,数组名attr, new 动态开辟 int[6],数组大小为6,里面存放6个元素,下标0-5。实例public class Test {
  • java之对象数组与管理

    2019-05-29 23:20:20
    对象数组就是数组的每个元素都是类的对象,赋值时先...动态数组: 1、数组是一种线性数据结构。 2、数组不适合做删除、插入等操作,适合添加、查找、遍历。 示例: import java.util.Arrays; public class Demo {...
  • Java反射八 数组

    2017-05-01 15:59:57
    在jdk java.lang.reflect 包下,专门提供了一个类 public final class Array 用来动态的创建和访问数组.
  • java 队列与泛型——动态数组的实现原理 学习本文需要用到的知识:java数组 1、思路推理 众所周知,在很多编程语言中,数组的大小一旦确定,在定义后是不可以改变的。如果数组储存满了之后还想往数组里面储存元素...
  • C语言中动态分配数组(一维)当初学Pascal的时候就想过这个问题:如何动态的定义及使用数组呢?记得一般用数组的时候都是先指定大小的。当时问老师,老师说是不可以的。后来又问了一位教C++的老师,他告诉我在C++用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 878
精华内容 351
关键字:

java里动态数组

java 订阅