热点新闻
Java数组
2023-07-06 02:38  浏览:462  搜索引擎搜索“富博农业网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在富博农业网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

数组:

数组是具有多个连续存储的相同数据类型的变量组成的集合体。

数组元素:

构成一个数组的每一个数据都是数组元素。

数组下标:

表示数组元素在数组中的位置,用整数表示,从0开始,依次加一,也可以叫做索引(index),下标的界限为0到数组长度(数组大小)-1,下标如果是负数,或者下标超过了数组长度-1,会发生越界(ArrayIndexOutOfbounds)。

使用数组的步骤:

1.定于数组
2.为数组元素分配内存
3.数组元素初始化
4.使用数据

数组长度:

数组中元素的个数,也称为数组大小,获取数组长度的方法为数组名.length,数组的长度是在为数组分配内存时确定大小,大小不可以改变,如果需要扩大或者缩小,需要重新定义一个数组。

数组的定义和使用:

数据类型 []数组名; 或者 数据类型 数组名[]; 定义数组本质上就是向JVM虚拟机申请数据。JVM将内存划分为栈、堆、方法区几个区域,不同的区域存储不用类别的数据。JVM在定义数组时是将数组的名称存储在栈中,栈是一个先进后出的数据结构。指出数组元素的个数,通过new运算符,让系统为数组元素分配内存空间,数组元素存储在堆中。数组元素的初始化就是第一次赋值,没有初始化的数组元素为默认值。

数组的数据结构(线性表):

全名为线性存储结构,使用线性表存储数据的方式可以理解为把所有数据用一根线串起来,存储到物理空间中。

数组的排序:

排序算法有很多种,常用的有冒泡排序、插入排序、选择排序、快速排序、堆排序、归并排序、希尔排序、二叉树排序、计时排序等等。

列举几个我学过的例子:

冒泡排序代码案例

public static void main(String[] args) { int score[] =new int[80000]; // 定义数组大小 Random random =new Random(); for (int i =0; i < score.length; i++) { score[i] = random.nextInt(80000); // 随机生成数组元素 } long start = System.currentTimeMillis(); // 开始计时 for (int i =0; i < score.length-1;i++){ for (int j =0;j < score.length-i-1;j++){ if (score[j] > score[j +1]) { int tmp = score[j]; score[j] = score[j +1]; score[j +1] = tmp; //数据进行两两比较,较小的放在前面,较大的放在后面,依次类推,直至全部确定位置,排序完毕 } } } long end = System.currentTimeMillis();// 计时结束 System.out.println(end-start);// 输出排序所用的时间 } 数据进行两两比较,较小的放在前面,较大的放在后面,依次类推,直至全部确定位置,排序完毕。

插入排序代码案例

public static void main(String[] args) { int arr[] =new int[80000]; // 定义数组大小 for (int i=0 ;i <80000;i++){ arr[i] = (int)(Math.random()*80000); // 随机生成数组元素 } long start = System.currentTimeMillis(); //计时开始 for (int i =0; i < arr.length ; i++) { int j = i; while(j >0){ if(arr[j] < arr[j-1]){ int tmp; tmp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = tmp; j--; } else{ break; } } } // 从第二个数据开始,依次和前面的数据进行两两比较,比前面的数据小则继续进行比较,比前面的数据大则插入到该数据的后方,到了下标为0的位置则直接插入,依次类推,直至全部确定位置,排序完毕。 long end = System.currentTimeMillis(); //计时结束 System.out.print(end - start); // 输出排序所用时间 } 从第二个数据开始,依次和前面的数据进行两两比较,比前面的数据小则继续进行比较,比前面的数据大则插入到该数据的后方,到了下标为0的位置则直接插入,依次类推,直至全部确定位置,排序完毕

选择排序案例代码

public static void main(String[] args) { int arr[] =new int[80000]; // 定义数组的大小 Random input =new Random(); for (int i =0; i < arr.length; i++) { arr[i] = input.nextInt(80000); // 随机生成数组元素 } long start = System.currentTimeMillis(); // 计时开始 for (int i =0; i < arr.length-1; i++) { int minIndex = i; int min = arr[i]; for (int j = i+1; j < arr.length; j++) { if (arr[j] < min) { min = arr[j]; minIndex = j; } } int tmp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = tmp; } // 选中下标为0的数据和后面的数据两两进行比较,如果后者比前者小,则记录后者的下标,然后用后者和后面的数据进行两两比较,一轮比较完成后,最后那个被记录下标的元素与第一个数据比较,较小则交换位置并且确定位置,之后选中下标为1的数据进行上述操作,每比较一轮确定一个数据的位置,直至全部确定,排序完毕。 long end = System.currentTimeMillis(); //计时结束 System.out.println(end-start); // 输出排序所用的时间 System.out.println(Arrays.toString(arr)); // 输出随机生成数组元素的数组 } 选中下标为0的数据和后面的数据两两进行比较,如果后者比前者小,则记录后者的下标,然后用后者和后面的数据进行两两比较,一轮比较完成后,最后那个被记录下标的元素与第一个数据比较,较小则交换位置并且确定位置,之后选中下标为1的数据进行上述操作,每比较一轮确定一个数据的位置,直至全部确定,排序完毕

使用数组时的常见问题:

(1)下标越界异常

例如一个拥有五个元素的数组,下标分别为0、1、2、3、4,输出时下标不能大于4,输出的下标大于4时,系统会提示运行该程序时发生了java.labg.ArrayIndexOutOfBoundsException异常,表示下标越界了,数组下标超过0——数组长度-1的范围的值就会发生下标越界异常。

(2)没有分配内存空间

例如一个数组score[] = null;输出时系统提示运行该程序时发生了java.lang.NullPointerException异常,表示空指针异常,这个程序只为数组名在栈中分配了内存,但是没有在堆中为数组元素分配内存。

(3)语法错误

数组类型 数组名[] //中括号中不允许写长度;数组类型 数组名 = new 数组类型[] {数组元素} //直接为数组元素初始化不允许指定数组长度;错误类型:数组类型 数组名[];换行 数组名 = {数组元素} //直接初始化数组元素的代码必须写在同一行。

二维数组

定义方法:数据类型 [][]数组名 或者 数据类型 数组名[][],第一个[]表示第一维,第二个[]表示第二维。

二维数组中数据的元素类型必须相同,表示一个一维数组,这个一维数组的每一个元素又是一个一维数组。

Arrays类

常用方法:

1.equals(数组名1,数组名2) 返回类型为boolean 用于比较两个数组是否相等。

2.sorry(数组名) 返回类型为void 对数组的元素进行排序。

3.toString(数组名) 返回类型为String 把一个数组转换成一个字符串。

4.fill(数组名1,元素值) 返回类型为void 把数组的所有元素都赋值成元素值。

5.copyOf(数组名1,length) 返回类型与数组1数据类型相同 把数组复制成一个长度为length的新数组。

6.binarySearch(数组名,元素值) 返回类型为int 查询元素值在数组中的下标。

数组的输出:

Systom.out.print(数组名称) 这样输出的是数组的内存地址编号 Systom.out.print(Arrays.toString) 这样输出的是数组元素

发布人:776d****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发