首页 > 编程知识 正文

Java字符串数组,java值类型和引用类型的区别

时间:2023-05-04 15:35:08 阅读:41507 作者:3515

Java将二维数组视为数组的数组。 也就是说,二维数组是一个特殊的一维数组,其每个元素也是一维数组。 虽然Java不直接支持二维数组,但可以定义数组元素是一维数组的一维数组,以获得相同的效果。 声明二维数组的语法如下:

类型阵列[ ] [ ];

type[][]天线阵;

其中type表示二维数组的类型,数组表示数组名称,第一个大括号表示行,第二个大括号表示列。

分别声明int和char类型的数组。 代码如下。

int[][] age; char[][] sex;

初始化二维数组

可以初始化二维数组,并且与一维数组一样,可以通过三种方法指定元素的初始值。 这三种方式的语法如下。

array=new type[][]{值1,值2,值3,…,值n};

array=new type[][]{new结构方法(参数列),…};

type[][] array={{第一行第二列的值,…},{第二行第一列的值,第二行第二列的值,…},…};

例1

用第一种方法声明int类型的二维数组,并初始化该二维数组。 代码如下。 int[][] temp; temp=new int [ ] [ ] { 1,2 },{ 3,4 }; 上面的代码创建了两行两列的二维数组temp,并初始化了数组中的元素。 图1显示了该数组的存储器结构。

图12维排列存储器结构

用第二种方法声明int类型的二维数组,初始化二维数组。 代码如下。

int[][] temp; temp=newint[]{{newint(3(1),newint )、{newint )、new int ) }; 用第三种方法声明int类型的二维数组,初始化数组。 代码如下。

int [ ] [ ] temp={ 1,2 },{ 3,4 };

获取各个要素

在上一节中,我们用三种方法创建并初始化了两行两列的int类型数组temp。 如果需要获取二维数组中元素的值,也可以使用下标表示。 语法如下:

array[i-1][j-1]; 其中,array表示数组名称,I表示数组的行数,j表示数组的列数。 例如,要获取第二行第二列中元素的值,请使用temp[1][1]。 这是因为数组下标的起始值为0,所以必须将行和列下标减少1。

例2

用下标获取class_score数组中第2行第2列元素的值和第4行第1列元素的值。 代码如下。

publicstaticvoidmain (string (args ) double ) ) class _ score={ { 10.0,99,99 },{ 100,98,97 },{ 100,98,} system.out.println ('第4行第1列元素的值: ' class_score[3][0] ); }执行上述代码后,输出如下。

第二行第二列元素的值: 98.0

第4行第1列元素的值: 99.5

获取所有元素

在一维数组中直接使用数组的length属性获取数组元素的数量。 另一方面,二维数组直接使用length属性获取数组的行数。 如果在指定索引后添加一个length (如array [0].length ),则表示该行包含多少个元素或列数。

检索二维数组中的所有元素时,最简单最常用的方法是使用for语句。

例3

使用for循环语句遍历double类型的class_score数组中的元素,并输出每行各列中元素的值。 代码如下。

publicstaticvoidmain { string [ ] args } { double [ ] [ ] class _ score={ 100,99,99 },{ 100,98,97 },{ 100,1119 } iclass_score.length; I ) (/扫描线for(intj=0; jclass_score[i].length; j () system.out.println (class _ score [ ' I ' ] ) j ' )='class_score[I][j] ); }}上述代码使用嵌套的for循环语句输出二维数组。 输出二维数组时,第一个for循环语句表示行循环,第二个for循环语句表示列循环,从而实现检索二维数组中每个元素的值的功能。

执行上述代码后,输出结果如下。

class_score[0][0]=100.0

class_score[0][1]=99.0

class_score[0][2]=99.0

class_score[1][0]=100.0

class_score[1][1]=98.0

C

lass_score[1][2]=97.0
class_score[2][0]=100.0
class_score[2][1]=100.0
class_score[2][2]=99.5
class_score[3][0]=99.5
class_score[3][1]=99.0
class_score[3][2]=98.5
例 4
假设有一个矩阵为 5 行 5 列,该矩阵是由程序随机产生的 10 以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

public class Test11{ public static void main(String[] args) { //创建一个二维矩阵 int[][] matrix=new int[5][5]; //随机分配值 for(int i=0;i<matrix.length;i++) { for(int j=0;j<matrix[i].length;j++) { matrix[i][j]=(int)(Math.random()*10); } } System.out.println("下面是程序生成的矩阵n"); //遍历二维矩阵并输出 for(int k=0;k<matrix.length;k++) { for(int g=0;g<matrix[k].length;g++) { System.out.print(matrix[k][g]+""); } System.out.println(); } } }

在该程序中,首先定义了一个二维数组,然后使用两个嵌套的 for 循环向二维数组中的每个元素赋值。其中,Math.random() 方法返回的是一个 double 类型的数值,数值为 0.6、0.9 等,因此乘以 10 之后为 10 以内的整数。最后又使用了两个嵌套的 for 循环遍历二维数组,输出二维数组中的值,从而产生矩阵。

运行该程序的结果如下所示。
34565
96033
48741
10583
63985
获取整行元素
除了获取单个元素和全部元素之外,还可以单独获取二维数组的某一行中所有元素的值,或者二维数组中某一列元素的值。获取指定行的元素时,需要将行数固定,然后只遍历该行中的全部列即可。
例 5
编写一个案例,接收用户在控制台输入的行数,然后获取该行中所有元素的值。代码如下:

public static void main(String[] args){ double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}}; Scanner scan=new Scanner(System.in); System.out.println("当前数组只有"+class_score.length+"行,您想查看第几行的元素?请输入:"); int number=scan.nextInt(); for(int j=0;j<class_score[number-1].length;j++) { System.out.println("第"+number+"行的第["+j+"]个元素的值是:"+class_score[number-1][j]); } }

执行上述代码进行测试,输出结果如下所示。
当前数组只有4行,您想查看第几行的元素?请输入:
3
第3行的第[0]个元素的值是:100.0
第3行的第[1]个元素的值是:100.0
第3行的第[2]个元素的值是:99.5
获取整列元素
获取指定列的元素与获取指定行的元素相似,保持列不变,遍历每一行的该列即可。
例 6
编写一个案例,接收用户在控制台中输入的列数,然后获取二维数组中所有行中该列的值。代码如下:

public static void main(String[] args){ double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}}; Scanner scan=new Scanner(System.in); System.out.println("您要获取哪一列的值?请输入:"); int number=scan.nextInt(); for(int i=0;i<class_score.length;i++) { System.out.println("第 "+(i+1)+" 行的第["+number+"]个元素的值是"+class_score[i][number]); } }

执行上述代码进行测试,如下所示。
您要获取哪一列的值?请输入:
2
第 1 行的第[2]个元素的值是99.0
第 2 行的第[2]个元素的值是97.0
第 3 行的第[2]个元素的值是99.5
第 4 行的第[2]个元素的值是98.5

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。