一、认识数组

1、容器的概念

​用于存储数据的一块内存称为容器,生活中有很多容器,例如水杯,衣柜,以及存放“东西”

​存放在容器中的数据,称为“元素”

2、为什么会存在数组呢?

​假如现在存储全班同学的成绩,全班40人,按照定义变量的思维,需要定义40个double类型的数据变量,每次从40个变量中找一个变量,操作很麻烦,java中可以定义以和数据类存放40个人的成绩,使用数据类型存储

​数组定义:它是相同数据类型的有序集合

3、数据特点

数组的长度固定(数据的长度一旦声明,就不能改变)

数组中存储的元素数据类型必须相同

数组的元素 通过下标访问,且下标默认从0开始

数组类型属于引用数据类型,数组的元素类型 既可以是基本数据类型也可以是引用数据类型

4、数组的创建方式

方式一

数组存储的数据类型 [] 数组名 = new 数组存储的数据类型 [长度]

详解:

​数组存储的数据类型:创建数组容器中可以存储说明数据类型(基本数据类型、引用数据类型)

​[]:表示数组

​数组名:给数组起名字,遵循标识符规则

​new:创建数组的关键字

​[长度]:数组的长度,这个长度定义后不可改变 可表示为array.length

例如

int [] arr = new int[3];

new出来的空间在堆内存中,数组是引用数据类型,存在内存地址

内存解析:在堆内存中开票一段连续的3个长度的int类型的内存空间,并由arr变量指向这块内存地址(换句话说rr输出就是这个内存的地址)

方式二

数据类型 [] 数组名 = new 数据类型 []{元素1,元素2,元素3.。。。。 }

这里的数组长度就是元素的个数自动分配大小

int[] arr = new int[]{99 .97 .95};

或者

int arr [] = new int[]{90,95,96,94}

方式三

数据类型 [] 数组名 = {元素1,元素2,元素3.。。}

注意:这里的元素类型必须满足数组的元素数据类型

char [] arr = {'a','b','c'}

或者

char arr [] = {'a','b','c'}

5、数组的访问

​数组的访问通过索引访问

索引(下标):每一次数组的元素都有一个编号,这个编号从0开始,这个编号称为数组的索引,通过数组名[索引]访问到数组的元素

例如:访问数组的第二个元素:数组名[1];

数组的长度:数组的长度声明以固定,访问数组的长度:数组名.length

​数组的最大索引 = 数组长度 - 1

数组元素的赋值:通过索引可以给元素赋值 数组名[索引] = 值 将数据赋值给指定索引的元素

二、动态数组

1、数组的定义

​用于存储相同数据类型的一组连续的存储空间

2、数组的特点

​数组的长度一旦定义,则不可改变

​访问数组元素需要通过下标(索引)访问,下标从零开始

​数组是引用数据内存,内存分布在堆内存中,数组的变量存储在内存地址

3、动态数组

​由于数组的长度定义后不能改变,所谓“动态数组”是可以增加数据长度,所以java实现动态数组是改变数组变量指向不同的内存地址,本质并没有将数组的长度改变

​动态数组的本质:将内存空间的改变,以及指向数组内存地址的改变

操作1:数组添加新元素,可添加在最后面,也可以添加到指定位置

/**

* 添加元素,(添加到末尾)

*/

public static int[] addEle(int []array ,int num){

//初始数组 添加的元素

// int array [] = {10,9,3,2,1};

//1、创建临时数组的长度

int [] tempArray = new int[array.length+1];

//2\将目标数组的元素 copy到 临时数组的内存中

for (int i=0;i

tempArray[i]=array[i];

}

//3、将添加的元素放入临时数组中

tempArray[tempArray.length-1]=num;

//4、将目标数组的地址 指向 临时数组的地址

array=tempArray; //由于tempArray 是局部变量 方法执行完内存自动回收

// 如果不返回 没有地址指向tempArray的内存

// 如果返回并接受 说明这块内存地址仍然使用

return array;

}

/**

* 将元素num 添加到指定index的位置

* @param args

*/

public static int [] addEle(int [] arr,int num,int index){

//1、创建临时数组的大小

int [] tempArray = new int[arr.length+1]

//2、便利arr

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

//如果i

if (i

tempArray[i]=arr[i];

}else if (i==index){

tempArray[i]=num;

}else{

//i>index

tempArray[i]=arr[i-1];

}

}

//赋值

arr=tempArray;

return arr;

}

public static void main(String[] args) {

//扩容数组

// int [] array = {5,4,3};

// //动态扩容一个

// array=addEle(array,2);

// for (int i=0;i

// System.out.println(array[i]);

// }

// System.out.println(array.length);

//插入到指定下标

int[]arrary={10,9,3,2,1};

arrary = addEle(arrary,5,5);

System.out.println(Arrays.toString(arrary)); // 直接输出数组的每一个元素

}

操作2:可删除元素 删除指定下标元素

/**

* 删除指定下标的数组元素,删除后面的向前缩进一个

*/

public static int [] Ele(int arr[],int index){

//1、创建一个新的临时数组

int tempArray [] =new int[arr.length-1];

for (int i=0;i

if (i

tempArray[i]=arr[i];

}else {

tempArray[i]=arr[i+1];

}

//i=3 temparray[3]=arr[4];

//i=4 temparray[4]=arr[4+5];

}

//赋值

arr=tempArray;

return arr;

}

public static void main(String[] args) {

int array []={10,5,4,7,8,6};

array=Ele(array,3);

System.out.println(Arrays.toString(array));

}

三、二维数组

1、二维数组定义

​在一维数组中定义每一个元素也是一个数组元素,这样的数组称为“二维数组”多维数组就是在一维数组上再次定义二维数组或 三位数组 等。

一维数组定义

int [] array = { 1, 2 , 3}

二维数组定义

//定义三个长度的二维数组,其数组的每一个元素是一个一维数组

int [][] arrays = {{} ,{} ,{}} ;

或者

int [][] arrays = new int [3][2]; // 左边的【】中表示二维数组的长度 ,其中2可以省略,3 不能省略

// 注意: 等号左边有几个【】 就表示几维

// 1、定义二维数组

int [][] array;

// 定义时给二维数组赋值 3个长度的二维数组 里面的一维数组的长度不一定相等

int [][] array2 = {{1,2,3},{4,5},{7,8}};

// 定义时只指定大小 不给定初始值

int [][] array3 = new int[3][]; // 等价 {{},{},{}}

// array3[0][0]=1; // 赋值时 空指针异常 ,因为里面的一维数组是空的

//定义一个3个长度的二维数组,里面的元素长度是2

int array4 [][] = new int[3][2];

//给元素赋值

array4[0][0] =1;

// 输出二维数组中的所有元素

for(int i=0;i

// System.out.println(array4[i]);

for(int j=0;j

System.out.println(array4[i][j]);

}

}

2、二维数组的应用

1、定义5*5的矩阵,计算最大值最小值

2、五子棋游戏

java 动态二维数组_Java数组、动态数组、二维数组的应用相关推荐

  1. java中数据结构的应用_Java集合入门 (二)常用数据结构和应用场景-数组

    Java极客  |  作者  /  铿然一叶 这是Java极客的第 48 篇原创文章 一.数组的特点 1.数组大小固定 2.一个数组只能存储相同数据类型 3.随机访问性能高 4.存储空间连续,这样可以 ...

  2. java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  3. java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  4. java 打印三维数组_Java基础第三天_数组

    1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个 ...

  5. java 可变参数列表 数组_java可变参数列表如何填充数组?

    在对于数组的填充上,我们可以运行参数的传递,把数组作为可变参数的列表进行调整.对于一些参数个数和类型未知的时候,这种方法就能帮助我们解决填充数组的难题,因为这种方法并不需要提前知道.下面我们就可变参数 ...

  6. java for数组遍历数组_Java foreach操作(遍历)数组

    语法: 我们分别使用 for 和 foreach 语句来遍历数组 运行结果: 练习: import java.util.Arrays; public class HelloWorld { public ...

  7. java打印二维数组_Java中如何打印二维数组

    在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...

  8. java随机生成不重复的数组_Java生成不重复的随机数组的方法

    一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个01之间的double类型小数,将其乘以一个数,比如25,就能得到一个025范围内的随机数,这个在j2m ...

  9. java判断输入值是否在数组_java判断特定值是否在数组中的方法

    java判断特定值是否在数组中的方法: 使用List:public static boolean useList(String[] arr, String targetValue) { return ...

  10. 输出英文字母java数组_JAVA语言之通过生成随机数组来转化为字母进行输出的类...

    本文主要向大家介绍了JAVA语言之通过生成随机数组来转化为字母进行输出的类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 今天又写了一个通过生成随机数组来转化为字母进行输出的类,但是 ...

最新文章

  1. 大家有没有推荐不错开源的小程序商城?这几个不要错过
  2. 大连海事大学计算机系王兴元,王兴元,
  3. 提问与回答:全国大学生智能汽车竞赛的第十五届的7月中旬问答
  4. 径向基神经网络_谷歌开源Neural Tangents:5行代码打造无限宽神经网络模型,帮助“打开ML黑匣子”...
  5. GaussDB T 强体验:通过 DBeaver/RazorSQL/DbVisualizer工具连接数据库(附测试账号)
  6. 利用MapShaper将.shp文件转换成JSON文件
  7. 世界各国各地区名称代码对应表
  8. mysql 间隙锁_MySQL间隙锁问题
  9. 【叁】量化思维--复利
  10. c语言求定积分的程序,C语言求定积分
  11. java前端开发简历_web前端工程师简历
  12. html+antd 本地化
  13. oracle12c不使用cdb模式,Oracle 12c实现手工建库而非CDB及CDB创建的方法
  14. 教你如何用PQ魔法师调整硬盘分区大小
  15. 1U、2U、标准19寸机架是什么意思?这篇文章讲的很明白
  16. 2017-01-01 调停者模式
  17. 正在工作的程序员,生活状态都很苦逼?
  18. 2019中国信息安全自主可控行业政策盘点及网络安全行业分析
  19. 什么耳机适合跑步、挑选五款最佳的跑步耳机推荐
  20. 零基础入门学习python笔记-day1:程序开发谋定而后动

热门文章

  1. Dockertest 极速搭建集成测试环境神器
  2. 在腾讯、阿里、字节技术岗工作十年能挣普通公务员一辈子的钱吗?
  3. 一文搞懂Path环境变量
  4. 皇御贵金属:黄金价格趋势图分析方法有哪些?
  5. objectarx面域
  6. Tomcat配置外网访问
  7. @InitBinder的使用
  8. Adobe的印刷品排版编辑软件 InDesign(Id) 2023版本下载与安装教程
  9. html里怎么把搜索框点击时变色,input搜索框鼠标放上或划过表单边框变色
  10. 2020-12-01微信小程序