谈到数组,大家都在学习C语言中频繁接触到它,自然并不陌生。数组在内存中表现形式为连续的存储空间,长度是从1开始的,但是下标或者索引就是从0开始的,这点需要记住,不然容易造成数组越界的错误。
对于数组,由于能按照下标数学或者直接指定的下标,我们能快速地访问读取其中的每一个元素;但是数组的内存空间在定义的时候就固定了,不能改变大小,犹如建好的房屋,里面的房间数量已经一定了,不可能再增加。至于数组是属于什么数据类型呢?可以看下图:
Java数据类型图(来自网上):
┏数值型━┳━整数型:byte short int long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型╋ ┗布尔型:boolean
┃ ┏类(class)
┗引用数据类型━━╋接口(interface)
┗数组(array)
从图中可以看出数组是属于引用数据类型的一种!
另外,数组只有一个唯一的属性length,即数组长度,表达式如:array.length
了解一维数组的使用方法,可以看下下面的代码:
public class ArrayOne { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayOne ao=new ArrayOne();//创建对象 int [] array=ao.creatArray(5); ao.printArray(array);//调用打印数组的方法 System.out.println("\n"); ao.maoPao(array);//调用数组冒泡的方法 ao.printArray(array); System.out.println("\n"); } /* * 创建数组的方法 */ public int [] creatArray(int Size) { int [] array=new int[Size];//创建一个整型数组 Random random=new Random();//创建一个随机类对象 //遍历数组,给数组中赋随机值 for(int i=0;i<array.length;i++) { array[i]=random.nextInt(50);//给数组中元素赋0至50之间的随机一个数 } return array; } /* * 打印数组的方法 */ public void printArray(int [] array) { //遍历数组,输出数组元素 for(int i=0;i<array.length;i++) { System.out.print(array[i]+"\t");//输出元素的值 } } /* * 数组冒泡排序的方法 */ public int [] maoPao(int [] array) { //循环遍历数组 for(int i=0;i<array.length;i++) {//j从i+1开始 for(int j=i+1;j<array.length;j++) { if(array[i]>array[j])//如果前面的元素大于后面的元素 {//交换元素 int temp=array[i]; array[i]=array[j]; array[j]=temp; } } } return array; } }
二维数组的使用同样可以参照下面代码:
public class ArrayTwo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArrayTwo at=new ArrayTwo();//创建对象 int [][] array=at.creatArray(5,5); at.printArray(array);//调用打印数组的方法 } /* * 创建数组的方法 */ public int [][] creatArray(int row,int column) { int [][]array=new int[row][column];//创建一个整型二维数组 Random random=new Random();//创建随机类对象 //遍历数组,给数组元素赋随机值 for(int i=0;i<array.length;i++) { for(int j=0;j<array[i].length;j++) { array[i][j]=random.nextInt(50);//赋1到50之间的随机值 } } return array; } /* * 打印数组的方法 */ public void printArray(int [][] array) { //遍历数组,输出元素值 for(int i=0;i<array.length;i++) { for(int j=0;j<array[i].length;j++) { System.out.print(array[i][j]+"\t");//输出元素值 if(j==array[i].length-1) { System.out.print("\n"); } } } } }
此外,如果想要对一维数组进行排序(不用冒泡法),其中一种方法如下:
public class ArraySort { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ArraySort as=new ArraySort();//创建对象 int [] array=as.creatArray(10);//调用创建数组的方法 as.sort(array);//调用数组排序的方法 as.printArray(array);//调用打印数组的方法 } /* * 创建数组的方法 */ public int [] creatArray(int Size) { int [] array=new int[Size];//创建整型一维数组 Random random=new Random();//创建随机类对象 //遍历数组,给数组元素赋随机值 for(int i=0;i<array.length;i++) { array[i]=random.nextInt(40);//赋值 } return array; } /* * 数组排序的方法 */ public int[] sort(int [] array) { //遍历数组 for(int i=0;i<array.length;i++) { int max=array[i]; for(int j=i+1;j<array.length;j++) { if(array[i]>array[j]) { int temp=array[i]; array[i]=array[j]; array[j]=temp; } if(array[j]>max) { //找每次比较后的最大值 max=array[j]; } } } return array; } /* * 打印数组的方法 */ public void printArray(int [] array) { //遍历数组,输出元素 for(int i=0;i<array.length;i++) { System.out.print(array[i]+"\t");//输出信息 if(i==array.length-1) { System.out.println(); } } } }
如果你了解二维数组的知识后,可以完成一些相关练习如:二维数组找出最大值,输出每一个最大值所在行和列。
代码如下:
public class FindMax extends ArrayTwo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub FindMax fm=new FindMax();//创建对象 int [][] array=fm.creatArray(5, 5);//调用创建数组方法 fm.printArray(array);//调用打印数组的方法 fm.findMax(array);//调用找最大值的方法 } public void findMax(int [][] array) { int row = 0,column=0; int max=array[0][0]; //循环遍历数组 for(int i=0;i<array.length;i++) { for(int j=1;j<array[i].length;j++) { if(max<array[i][j]) { max=array[i][j]; row=i+1; column=j+1; } } } System.out.println("最大值是"+max+"所在的行是"+row+",列是"+column); findRepeat(array,row-1,column-1); } /* * 寻找重复最大值方法 */ public void findRepeat(int [] []array,int row,int column) { int m,n; //循环遍历数组 for(int i=0;i<array.length;i++) { for(int j=1;j<array[i].length;j++) { if(array[row][column]==array[i][j]) { m=i; n=j; m++; n++; System.out.println("最大值是"+array[i][j]+"所在的行是"+m+",列是"+n); } } } } }
相关推荐
在Java编程语言中,数组是一种基础且重要的数据结构,它允许程序员存储同类型的多个元素。本文将深入探讨Java中数组的各种应用,旨在帮助初学者理解并掌握数组的使用。 一、数组定义与初始化 在Java中,数组可以...
java数组的介绍以及怎么用,用在什么地方
我对Java中数组的方法做了一下总结,希望能帮到各位
array用法
### Java中数组的声明 #### 一、一维数组的声明与创建 在Java中,数组是一种特殊的数据结构,用于存储相同类型的多个元素。数组在内存中是连续存储的,并且...希望本文能够帮助读者更好地掌握Java数组的相关知识。
Java中的数组是一种特殊的变量,它能够存储同一类型的多个值,这些值通过索引来访问。数组在Java中扮演着基础且重要的角色,它们是程序中数据结构的基础构建块。以下是关于Java中数组的详细说明: 一、一维数组的...
Java 中数组的定义及使用方法详解 数组是 Java programming 语言中的一种基本数据结构,用于存储一组相关的变量。数组可以是一维数组、二维数组或多维数组,数组的每个元素的数据类型都是相同的。使用数组可以避免...
Java中数组与集合的相互转换实现解析 Java中数组和集合是两种不同的数据结构,数组是一种固定长度的数据结构,而集合是一种可变长度的数据结构。它们之间的转换是非常重要的,在实际开发中经常会遇到这种情况。...
1. **类型一致性**:数组中的所有元素必须具有相同的类型,无论是基本数据类型(如`int`, `double`)还是引用类型(如`String`, `Object`)。 2. **长度固定**:一旦数组被创建,其长度就不可更改。这意味着在创建...
这个方法把 ArrayList 的元素 Copy 到一个新的数组中。 在使用 ArrayList 时,需要注意线程同步的问题,如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用 lock 来保持线程同步。同时,...
java中数组查找的常见算法
Java数组是Java编程语言中的基本数据结构之一,用于存储固定数量的同类型元素。了解和熟练掌握数组的使用是学习Java的重要环节。本篇练习题涵盖了数组的基本概念、操作和异常处理,下面是针对题目中涉及知识点的详细...
Java中数组的定义与使用
Java中数组和对象数组的区别是什么.txt
在Java编程语言中,数组是一种特殊的数据结构,用于存储同一类型的数据集合。在这个文档中,我们专注于一维数组的实例,主要探讨了如何创建、初始化和输出一维数组的元素。以下是详细的知识点解析: 1. **数组声明*...
本文详细介绍了Java中数组反转的几种方法,并探讨了如何使用多线程技术来优化数组反转过程。通过合理地设计多线程任务和同步机制,可以显著提高数组反转的效率。这些技术的应用不仅限于数组反转,还可以扩展到其他...
讲述Java中数组的基本使用以及简单排序_Array
主要介绍了java中数组的使用,适合理不清概念的读者使用,还有些关于栈、堆的使用。
对数组的总结和分析,通过这个结构记住它,在开发的过程中使用