Java基础05—数组
2021-01-20 17:14
标签:不能 index 资料 入门 二维数组 内存分配 输出 数字 截取 参考资料:《Java从入门到精通》/明日科技编著. 4版. 北京:清华大学出版社,2016 数组是具有相同数据类型的一组数据的集合,每个元素具有相同的数据类型。在Java中同样将数组看作一个对象,虽然基本数据类型不是对象,但是由基本数据类型组成的数组却是对象。 一维数组实质上是一组相同类型数据的线性集合。 (1) 先声明,再用new进行内存分配 声明数组后,还不能立即访问它的任何元素,想要使用数组,还要为它分配内存空间。在数组分配内存空间时,必须指定数组的长度。 上述代码表示创建一个拥有5个元素的整型数组,并且将创建的数组对象赋值给引用变量arr,即引用变量arr引用这个数组。 说明:使用new关键字为数组分配内存时,整型数组中各个元素的初始值为0。 (2) 声明的同时为数组分配内存 上述代码创建了一个整型数组,同时指定了数组的长度。 数组的初始化有两种形式: 如果一维数组中的各个元素都是数组,那么它就是一个二维数组。二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素的行,第二个下标代表元素的列。 二维数组可以看作特殊的一维数组,因此,二维数组的创建也有两种方式: (1)先声明,再用new关键字进行内存分配 同一维数组一样,二维数组在声明时也没有进行内存空间分配,同样需要使用new关键字来分配内存,然后才可以访问各个元素。 (2)声明的同时为数组分配内存 上述代码创建了二维数组,二维数组arr包含了2个长度为4的一维数组。 上述代码创建了二维数组,二维数组array包含了2个长度分别为2和3的一维数组。 输出一个5行10列且所有元素为0的矩阵。 说明:对于整型二维数组,分配内存后系统自动给每个元素赋予初始值0 遍历数组就是获取数组中的每个元素,通常使用for循环来完成。 数组中的元素定义完成后,可以通过Arrays类的静态方法fill()来对数组中的元素进行替换。该方法通过各种重载形式可以完成对任意类型的数组元素的替换。 注意:Arrays.fill()方法只能针对一维数组进行操作。 通过Arrays类的静态方法sort()可以实现对数组的排序。sort()方法提供了多种重载形式,可对任意类型的数组进行升序排序。 注意:String类型的数组是根据字典编排顺序排序的,因此数字排在字母前面,大写字母排在小写字母前面。 Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制。 (1) copyOf ( int[] a, newlength ) 方法 (2) copyOfRange ( int[] a, int formIndex, int toIndex ) 常见的排序算法,即冒泡算法、直接选择排序和反转排序。 1.方法一(找最大值) 编写Java程序,将二维数组的行列互调显示出来。 例如: 显示结果为: 程序代码如下所示: Java基础05—数组 标签:不能 index 资料 入门 二维数组 内存分配 输出 数字 截取 原文地址:https://www.cnblogs.com/xuliang-daydayup/p/12900898.html
一、一维数组
1、创建一维数组
int arr[]; //声明int类型的一维数组
String str[]; //声明String类型的一维数组
arr = new int[5]; //创建有5个元素的整型数组
str = new String[4];
int month[] = new int[12];
2、 初始化一维数组
int arr[] = new int[]{1,2,3,4,5};
int arr2[] = {2,3,4,5};
二、二维数组
1、二维数组的创建
int arr[][]; //声明一个int型二维数组
arr = new int[2][4]; //分配内存
int arr[][] = new int[2][4];
int array[][] = new int[2][];
//分别为每一维分配内存
array[0] = new int[2]; //长度为2
array[1] = new int[3]; //长度为3
2、二维数组的初始化
int myarr[][] = {{2,4}, {6,8,10}};
3、二维数组的使用
public class Matrix {
public static void main(String[] args) {
int a[][] = new int[5][10];
for(int i=0; i
三、数组的操作
1、遍历数组
public class Matrix {
public static void main(String[] args) {
//创建二维数组并赋初始值
int a[][] = new int[][]{{1},{2,3},{4,5,6}};
for(int i=0; i
2、填充替换数组元素
int b[] = new int[5]; //新建一个数组
Arrays.fill(b,8); //数组中所有元素填入数字8
for(int i=0; i
int b[] = new int[]{1,1,1,1,1};
Arrays.fill(b, 1, 2, 8); //b[1]元素被替换
for(int i=0; i
int[][] map = new int[4][5];
Arrays.fill(map,-1); //执行失败
3、对数组进行排序
int c[] = new int[]{23,12,5,15,7};
Arrays.sort(c); //升序排序
for(int i=0; i
4、复制数组
int d[] = new int[]{12,2,4,15,7};
int e[] = Arrays.copyOf(d,6); //新的数组长度为6
for(int i=0; i
int d[] = new int[]{12,2,4,15,7};
int e[] = Arrays.copyOfRange(d,1,3);
for(int i=0; i
4、数组排序算法
(1)冒泡排序
public class BubbleSort {
public static void main(String[] args) {
//创建一个数组
int arr[] = new int[]{32,34,45,2,75,3,5,73,41,33};
//创建一个冒泡排序的对象
BubbleSort bubbleSort = new BubbleSort();
//调用sort()方法对数组进行排序
bubbleSort.sort(arr);
//调用showArray()方法显示排序后的数组
bubbleSort.showArray(arr);
}
//冒泡排序的算法
public void sort( int[] arr1 ){
for(int i = 1; i arr1[j+1]){ //判断第二个元素是否大于第一个
//后面元素与前面元素替换
int temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
}
}
}
}
//显示数组中的所有元素
public void showArray( int[] arr2 ){
for(int i=0; i
(2)直接选择排序
public class SelectSort {
public static void main(String[] args) {
//创建一个数组
int arr[] = new int[]{2,5,12,65,32,41};
//创建一个SelectSort类的实例
SelectSort selectSort = new SelectSort();
//调用sort()方法进行冒泡排序
selectSort.select(arr);
//调用showArray()方法显示数组所有元素
selectSort.showArray(arr);
}
//直接排序算法
public void select(int[] arr1){
int index; //index变量保存最大值的索引
for(int i=1; i arr1[index]){
index = j;
}
}
/*
将最大值与循环的最后一位元素进行替换
替换完成,即最后一位元素确认,不在变化
*/
int temp = arr1[arr1.length - i];
arr1[arr1.length - i] = arr1[index];
arr1[index] = temp;
}
}
//显示数组中的所有元素
public void showArray( int[] arr2 ){
for(int i=0; i
public class SelectSort {
public static void main(String[] args) {
//创建一个数组
int arr[] = new int[]{12,45,36,5,65,17,80,1};
//创建一个SelectSort类的实例
SelectSort selectSort = new SelectSort();
//调用sort()方法进行直接选择排序
selectSort.select(arr);
//调用showArray()方法显示数组所有元素
selectSort.showArray(arr);
}
//直接排序算法
public void select(int[] arr1){
int index;
for(int i=0; i
(3)反转排序
public class ReverseSort {
public static void main(String[] args) {
//创建一个数组
int arr[] = new int[]{10,20,30,40,50,60,70};
//创建ReverseSort类的对象
ReverseSort reverseSort = new ReverseSort();
//使用reverse()方法进行反转排序
reverseSort.reverse(arr);
//使用showArray()方法显示所有数组元素
reverseSort.showArray(arr);
}
//反转排序算法
public void reverse(int[] arr1){
int temp; //定义临时变量,负责完成字符的替换
/*
反转是数组对边元素的替换,即第一位与最后一次替换,第二位与倒数第二位替换
所有只要循环数组长度的半数次,如数组长度为7,则只需循环3次。
*/
for(int i=0; i
四、实践与练习
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9
public class Convert {
public static void main(String[] args) {
int arr[][] = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
//显示转换前所有的数组元素
for (int i = 0; i
上一篇:Spring事务传播机制详解
下一篇:Java复习总结(一)思维导图