一、什么是数组?
数组中都是相同数据类型的数据
数组中的数据具有顺序
数组属于复合数据类型
二、一维数组
1.定义一维数组
格式:数据类型 数组名称[ ]; 或者 数据类型 [ ]数组名称
数组定义与变量的定义相似,只需要”[ ]”与变量区分,因此上”[ ]”就是数组的标志。
名称前面/后面出现一个”[ ]”就是一维数组,有两个就是二维数组,两个以上就是多维数组2.创建一个一维数组
创建数组的本质就是确定数组的具体存储空间
格式:
1.先定义后创建
定义:数据类型 数组名称[ ]; 或者 数据类型 [ ]数组名称;
创建:数组名称 = new 数据类型[存储的空间];
2.定义+创建
格式:数据类型 数组名称[ ] = new 数据类型[存储的空间];
数据类型 [ ]数组名称 = new 数据类型[存储的空间];3.如何为一维数组赋值
1.逐个赋值—-就是挨个为数组的每一个存储空间存放数据值。【需要数组的下标】
数组的下标–因为数组是按照顺序保存数据,此时每一个存储空间就有一个顺序
格式:数组名称[下标] = 数据值;
注意:当保存在数组中的数据超过数组指定的存储空间就是会出错
2.直接赋值—就是在创建数组的时候将数据值保存到数组中
2.1数据类型 数组名称[ ] = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n};
创建数组的时候不能指定存储空间
2.2数据类型 [ ]数组名称 = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n};4.从一维数组中取值
只要我们能够得到数组的存储位置,就可以得到数组中的数据值
格式:数组名称[下标];5.一维数组的length属性
如果数组通过直接赋值的方式创建,那么length属性就表示元素个数。
如果数组通过定义创建的方式创建,那么length属性就表示创建数组时给出的空间大小,与数组 的元素个数无关。6.循环遍历一维数组
for循环、while、do“while、for增强遍历
例如:public class ArrayDemo{ public static void main(String args[]){ //一维数组 /* 如何创建一个一维数组? 创建数组的本质就是确定数组的具体存储空间 格式: 1.先定义后创建 定义:数据类型 数组名称[ ]; 或者 数据类型 [ ]数组名称; 创建:数组名称 = new 数据类型[存储的空间]; 2.定义+创建 格式:数据类型 数组名称[ ] = new 数据类型[存储的空间]; 数据类型 [ ]数组名称 = new 数据类型[存储的空间]; */ //先定义后创建 int arr1[]; arr1=new int[3]; //定义+创建 int arr2[] =new int[4];//int []arr2=new int[4]; /* 如何给一维数组赋值? 1.逐个赋值----就是挨个为数组的每一个存储空间存放数据值。【需要数组的下标】 数组的下标--因为数组是按照顺序保存数据,此时每一个存储空间就有一个顺序 格式:数组名称[下标] = 数据值; 注意:当保存在数组中的数据超过数组指定的存储空间就是会出错 2.直接赋值---就是在创建数组的时候将数据值保存到数组中 2.1数据类型 数组名称[ ] = new 数据类型[ ]{数值1,数值2,数值3,·,数值n}; 创建数组的时候不能指定存储空间 2.2数据类型 [ ]数组名称 = new 数据类型[ ]{数值1,数值2,数值3,,·····,数值n}; */ //逐个赋值 arr1[0]=1; arr1[1]=2; arr1[2]=3; //直接赋值 String arrcha[]=new String[]{"fxt","ch","htt","gyq"}; /* 一维数组中取值 只要我们能够得到数组的存储位置,就可以得到数组中的数据值 格式:数组名称[下标]; */ System.out.println("arrcha[1]="+arrcha[1]);//arrcha[1]=ch /* 一维数组的length属性 如果数组通过直接赋值的方式创建,那么length属性就表示元素个数。 如果数组通过定义创建的方式创建,那么length属性就表示创建数组时给出的空 间大小,与数组的元素个数无关。 */ //数组通过直接赋值时的length System.out.println("arrcha的length="+arrcha.length);//4 //数组通过定义创建的方式创建 double douarr[]=new double [3]; douarr[0]=12.5; System.out.println("douarr的length="+douarr.length);//3 //循环遍历一维数组 String arrcha1[]=new String[]{"fxt","ch","htt"}; //for循环遍历 for(int i=0;i<arrcha1.length;i++){ System.out.println("for--"+arrcha1[i]); } //while循环 int j=0; while(j<arrcha1.length){ System.out.println("while--"+arrcha1[j]); j++; } //do{}while();循环 int k=0; do{ System.out.println("do{}while()--"+arrcha1[k]); k++; }while(k<arrcha1.length); //增强for循环 for( String name : arrcha1){ System.out.println("增强for循环--"+name); } } }
三、 二维数组
1.如何创建一个二维数组?
二维数组可以保存一个类似表格一样的数据,所以我们可以认为二维数组就是一个表格。
1.先定义,后创建
数据类型 数组名称[][];
数据类型 [][]数组名称;
数组名称=new 数据类型[表格行][行中的列];
2.定义+创建
数据类型 数组名称[][] = new 数据类型[表格行][行中的列];
数据类型 [][]数组名称 = new 数据类型[表格行][行中的列];2..如何为二维数组赋值?
1.逐个赋值—就是挨个为数组的每一个存储空间存放数据值。
2.直接赋值—就是在创建数组的时候将数据值保存到数组中。3.如何从二维数组中取值?
只要我们能够得到数组的存储位置,就可以得到数组中的数据值。
格式:数组名称[行][列];4..二维数组的length属性 — 行数
格式:数组名称.length;5..循环遍历二维数组—使用双层循环结构,外层控制行,内层控制列
例如:public class Array2Demo{ public static void main(String args[]){ //二维数组 //二维数组可以保存一个类似表格一样的数据,所以我们可以认为二维 //数组就是一个表格 /* 创建一个二维数组 1.先定义,后创建 数据类型 数组名称[][]; 数据类型 [][]数组名称; 数组名称=new 数据类型[表格行][行中的列]; 2.定义+创建 数据类型 数组名称[][] = new 数据类型[表格行][行中的列]; 数据类型 [][]数组名称 = new 数据类型[表格行][行中的列]; */ //.先定义,后创建 int arr1[][]; arr1=new int[2][3]; //定义+创建 int arr2[][]=new int[2][3];//int [][]arr2=new int[2][3]; /* 二维数组赋值 1.逐个赋值---就是挨个为数组的每一个存储空间存放数据值。 2.直接赋值---就是在创建数组的时候将数据值保存到数组中。 2.1数据类型 数组名称[][]=new 数据类型[][]{ {数据值1,数据值2,......数据n}, {数据值1,数据值2,......数据n}}; 2.2数据类型 数组名称[]={ {数据值1,数据值2,...数据n}, {数据值1,数据值2,...数据n}}; */ //逐个赋值 arr1[0][0]=1; arr1[0][1]=2; arr1[0][2]=3; arr1[1][0]=4; arr1[1][1]=5; arr1[1][2]=6; //直接赋值 int arr4[][] = {{1,2,3},{4,5,6}}; /* 二维数组中取值 只要我们能够得到数组的存储位置,就可以得到数组中的数据值。 格式:数组名称[行][列]; */ System.out.println("arr4[1][1]="+arr4[1][1]); /* 二维数组的length属性 -- 行数 格式:数组名称.length */ System.out.println("arr4.length="+arr4.length);//2 //循环遍历二维数组---使用双层循环结构,外层控制行,内层控制列 //for循环遍历 for(int i=0;i<arr4.length;i++){ for(int j=0;j<3;j++){ System.out.println("for循环--arr4["+i+"]["+j+"]="+arr4[i][j]); } } //while int k=0; while(k<arr4.length){ int o=0; while(o<3){ System.out.println("while循环--arr4["+k+"]["+o+"]="+arr4[k][o]); o++; } k++; } //增强for循环 for(int intarr[] : arr4){ for(int num : intarr){ System.out.println("增强for循环--"+num); } } } }
四、认识Arrays类【数组的帮助类】
Arrays类位于java.util包中,主要包含了操纵数组的各种方法
Arrays常用函数(都是静态的)
1.void Array.sort(Object[] array) 对数组按照升序排序
2.void Array.sort(Object[] array, int from, int to)
对数组元素指定范围进行排序(排序范围是从元素下标为from,到下标为to-1的元素进行排序)
3.Arrays.fill(Object[] array,Object object)可以为数组元素填充相同的值
4.Arrays.fill(Object[] array,int from,int to,Object object)对数组的部分元素填充一个 值,从起始位置到结束位置,取头不取尾
5.Arrays.toString(Object[] array)返回数组的字符串形式
例如:import java.util.Arrays; public class ArraysDemo{ public static void main(String args[]){ //创建一个数组 int arr[][] = {{3,1,2},{6,8,9}}; for(int arr1[] : arr){ Arrays.sort(arr1); for(int num : arr1){ System.out.println("Arrays---"+num); } } } }
五、数据的内存结构
1.在数据内存结构有区别
内存分为栈区和堆区
基本数据类型:只能在栈区区保存数据
复合数据类型:在内存的栈区和堆区都有数据,只不过栈区保存的是数据的存储位置,真正的数据在推去存放。
2.在计算机执行时的速度
由于计算机在执行时总是先从内存栈区获取数据,而复合数据在栈区获得的是数据的位置要再去堆区再能拿到数据。
因此基本数据类型的执行速度比复合数据类型快。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79847.html