数组是一组具有相同数据类型的数据。作为对象,new关键字允许用于内存分配。首先,熟悉一维数组的创建和使用。
有两种方法可以声明一维数组:
元素类型数组名称[];
元素类型[]数组名称;
元素类型决定数组的数据类型,在java中可以是任意数据类型,声明一个一维数组,比如int arr[];string str[];Int arr[]是声明一个Int数组,数组中的每个元素都是int值。类似地,str[]数组中的每个元素都是字符串类型。
注意:在Java语言中声明数组时,不能指定它的长度(数组中元素的个数)。这是因为数组是一个引用变量,所以当你用它来定义变量的时候,只意味着定义了一个引用变量(也就是设置了一个指针)。这个引用变量还没有指向任何有效的内存,所以在定义数组时不能指定数组的长度。而且由于定义数组只是一个引用变量,并没有指向任何有效的内存空,所以没有内存空来存储数组元素,所以这个数组也不能使用,只能在数组初始化后使用。
为array 空分配内存的语法格式如下:
Array name =新的数组元素类型[数组元素的数量];
比如arr = new int[5];还可以在声明数组的同时为其分配内存,例如:int arr[]= new int[5];
附:一旦用null关键字给几个组分配内存空,每个内存空中存储的内容就是数组元素的值,也就是数组元素有初始值。即使这个内存空中存储的内容是空,这个空也是a,也就是说,不可能只分配内容空而不分配初始值。即使在创建数组对象时没有指定初始值(分配内容空),系统也会自动分配。
附:基本数据类型等包装类的默认初始化值都是null,因为基本数据类型的包装类创建的数组属于引用数组(对象数组),对象数组的默认初始化值都是null。
了解一维数组的声明和创建,二维数组的声明和创建也差不多。二维数组的声明,Intarr[][];二维数组通常用于表示表,第一个下标表示行,第二个下标表示列。直接为二维数组分配内存,如下:a = new int[2][4];
为数组分配内存后,您必须学习如何初始化数组。一维数组有两种初始化形式:
int arr[]=new int[]{1,2,3,4 };
或者int arr[]={1,2,3,4 };
二维数组初始化方法:int myarr[][]={{12,2},{43,45 } };注意,intmyarr[][]={12,2,43,45}的写法是错误的。
接下来通过两段小代码说明如何使用一维数组和二维数组。
第一个示例是使用一维数组输出从1月到12月的天数。代码如下:
public class shuZu{ public static void ***in(String[] args){ int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31}; for (int i=0;i<12;i++){ System.out.println((i+1)+"月有"+ day[i]+"天"); } } }
第二个例子是使用二维数组输出数组中的元素。代码如下:
public class shuZu{public static void ***in(String args[]){ int arr[][]=new int[][]{{1},{2,3},{4,5,6}}; for(int i=0;i<arr.length;i++){ for(int j=0;j<arr[i].length;j++){ System.out.print(arr[i][j]); } System.out.println(); } } }
本文简要介绍了数组的基本内容,然后阐述了经典的数组冒泡排序算法。
冒泡排序原理:相邻两位数比较,1和2与2和3比较,3和4与4和5比较,这样依次比较。如果前数小于后数,则不进行任何操作,如果前数大于后数,则改变两位数的位置。Column 1 >:那么两个数的顺序是2 ^ 1(注:此时的1 ^ 2 ^ 3 ^ 4 ^ 5代表的是索引而不是数组),这样一层循环就可以挑出当前数组中最大的一个数来比较数字,排在数组的末尾。
但是一层循环根本不够。只能挑选出一个最大数,数组中的其他数尚未正确排序。
这里遵循的一个原则是数组中有长度数,需要长度为1的周期。至于这个. length-i,是因为我们第一次比较七个数,第二个只需要比较前六个,第七个肯定是最大的。在这里,我们应该强调为什么有2个for循环以及为什么使用this.length-i。
用下面的例子来做详细的解释:
var array = [8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){ for (var i = 0; i < arr.length; i++){ //这里的i控制循环比较的次数 for (var j = 0; j < arr.length - i; j++){ //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字, //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字 if (arr[j] > arr[j + 1]){ temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } console.log('before: ' + array);//输出[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出[1,2,3,5,6,7,8,9]
var array = [8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){ for (var i = 0; i < arr.length; i++){ //这里的i控制循环比较的次数 for (var j = 0; j < arr.length - i; j++){ //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字, //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字 if (arr[j] > arr[j + 1]){ temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } console.log('before: ' + array);//输出[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出[1,2,3,5,6,7,8,9]
var array = [8,7,9,2,3,5,6,1]; var temp = 0; function sort(arr){ for (var i = 0; i < arr.length; i++){ //这里的i控制循环比较的次数 for (var j = 0; j < arr.length - i; j++){ //这里的j控制参与比较的数字个数,因为每比较一次都会产生一个最大的数字, //那么下次比较的时候就没必要参与比较了,所以每比较一次都会减少一个数字 if (arr[j] > arr[j + 1]){ temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } console.log('before: ' + array);//输出[8,7,9,2,3,5,6,1] sort(array); console.log(' after: ' + array);//输出[1,2,3,5,6,7,8,9]
本文来自半邊陽光投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/651656.html