java 动态二维数组_Java数组、动态数组、二维数组的应用
一、认识数组
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数组、动态数组、二维数组的应用相关推荐
- java中数据结构的应用_Java集合入门 (二)常用数据结构和应用场景-数组
Java极客 | 作者 / 铿然一叶 这是Java极客的第 48 篇原创文章 一.数组的特点 1.数组大小固定 2.一个数组只能存储相同数据类型 3.随机访问性能高 4.存储空间连续,这样可以 ...
- java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java枚举类型数组_Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- java 打印三维数组_Java基础第三天_数组
1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个 ...
- java 可变参数列表 数组_java可变参数列表如何填充数组?
在对于数组的填充上,我们可以运行参数的传递,把数组作为可变参数的列表进行调整.对于一些参数个数和类型未知的时候,这种方法就能帮助我们解决填充数组的难题,因为这种方法并不需要提前知道.下面我们就可变参数 ...
- java for数组遍历数组_Java foreach操作(遍历)数组
语法: 我们分别使用 for 和 foreach 语句来遍历数组 运行结果: 练习: import java.util.Arrays; public class HelloWorld { public ...
- java打印二维数组_Java中如何打印二维数组
在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...
- java随机生成不重复的数组_Java生成不重复的随机数组的方法
一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个01之间的double类型小数,将其乘以一个数,比如25,就能得到一个025范围内的随机数,这个在j2m ...
- java判断输入值是否在数组_java判断特定值是否在数组中的方法
java判断特定值是否在数组中的方法: 使用List:public static boolean useList(String[] arr, String targetValue) { return ...
- 输出英文字母java数组_JAVA语言之通过生成随机数组来转化为字母进行输出的类...
本文主要向大家介绍了JAVA语言之通过生成随机数组来转化为字母进行输出的类,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 今天又写了一个通过生成随机数组来转化为字母进行输出的类,但是 ...
最新文章
- 大家有没有推荐不错开源的小程序商城?这几个不要错过
- 大连海事大学计算机系王兴元,王兴元,
- 提问与回答:全国大学生智能汽车竞赛的第十五届的7月中旬问答
- 径向基神经网络_谷歌开源Neural Tangents:5行代码打造无限宽神经网络模型,帮助“打开ML黑匣子”...
- GaussDB T 强体验:通过 DBeaver/RazorSQL/DbVisualizer工具连接数据库(附测试账号)
- 利用MapShaper将.shp文件转换成JSON文件
- 世界各国各地区名称代码对应表
- mysql 间隙锁_MySQL间隙锁问题
- 【叁】量化思维--复利
- c语言求定积分的程序,C语言求定积分
- java前端开发简历_web前端工程师简历
- html+antd 本地化
- oracle12c不使用cdb模式,Oracle 12c实现手工建库而非CDB及CDB创建的方法
- 教你如何用PQ魔法师调整硬盘分区大小
- 1U、2U、标准19寸机架是什么意思?这篇文章讲的很明白
- 2017-01-01 调停者模式
- 正在工作的程序员,生活状态都很苦逼?
- 2019中国信息安全自主可控行业政策盘点及网络安全行业分析
- 什么耳机适合跑步、挑选五款最佳的跑步耳机推荐
- 零基础入门学习python笔记-day1:程序开发谋定而后动