Java教程

07Java基础---数组 Arrays类 二维数组

本文主要是介绍07Java基础---数组 Arrays类 二维数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

1.数组

1.1概念

1.2数组的声明 

1.3数组的创建

1.3.1动态创建

1.3.2静态创建

1.4创建数组过程分析

1.5数组的长度

1.6数组的遍历

1.6.1遍历

1.6.2for循环遍历

1.6.3增强for循环

1.6.4for循环遍历数组和增强for循环遍历数组的区别 

2.数组工具类Arrays

 2.1 Arrays.toString(数组)

2.2 Arrays.sort(数组) 

2.4 Arrays.copyOf(数组,新的长度)

3二维数组

3.1 概念

3.2 创建二维数组

3.3 遍历二维数组


1.数组

1.1概念

        数组Array,标志是[ ] ,用于储存多个相同类型数据的集合

        想要获取数组中的元素值,可以通过脚标(下标)来获取

        数组下标是从0开始的,下标的最大值是数组的长度减1

1.2数组的声明 

        第一种方式:

        数组类型[] 数组变量名; //首选方式  

        例如: int[ ] i ;

        第二种方式:

        数组类型 数组变量名[]; //效果相同,但不是首选方法

        例如: int i[ ]; 

1.3数组的创建

1.3.1动态创建

//创建长度为5的数组,int类型默认值为0  
int[] i = new int[5];

1.3.2静态创建

//创建一个长度为5的数组,并且赋值
int[] a = new int[]{1,2,3,4,5};
int[] b = {1,2,3,4,5};  

1.4创建数组过程分析

例如:程序创建数组int[] a = new int[5]; 时发生了什么?

  1. 在内存中开辟连续的空间,用来存放数据,长度是5
  2. 给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
  3. 数组完成初始化会分配一个唯一的地址值
  4. 把唯一的地址值交给引用类型的变量a去保存

注意:

        数组名是个引用类型的变量,它保存着的是数组的地址,不是数组中的数据 

1.5数组的长度

        数组的长度用 length属性来表示,数组一旦创建,长度不可改变
        数组的长度允许为0

1.6数组的遍历

1.6.1遍历

        从头到尾,依次访问数组每一个位置,获取每一个位置的元素

1.6.2for循环遍历

 开始:开始下标0 结束:结束下标length-1 如何变化:++
  for(从下标为0的位置开始 ; 下标的取值 <= 数组的长度-1 ; 下标++){
                循环体;
        }

案例:

 1.输出每个月的天数

package cn.tedu.array;
/**本类用于练习数组的遍历
 * 需求:输出一年中每个月份的天数
 * */
public class TestArrayExec {
	public static void main(String[] args) {
		m ();//本方法用于输出每个月的天数,快速修复快捷键Ctrl+1
	}
	//打印需求:例如 1月有31天
	public static void m () {
		//1.创建数组用来存12个月的天数
		int[] a = {31,28,31,30,31,30,30,31,30,31,30,31};
		
		//2.输出每个月的天数打印到控制台
		//数组的遍历--通过循环的方式--操作的是数组的下标
		//循环开始:a[0]--数组中的第一个元素
		//循环结束:a[a.length-1]--数组中的最后一个元素
		//如何变化:++
		//for(int i = 0 ; i <=a.length-1 ; i++) {
		for(int i = 0 ; i <a.length ; i++) {
			//a[i]--根据下标i来获取数组a中对应位置上元素的值
			System.out.println((i+1)+"月有:"+a[i]+"天");
		}
	}
}

2.遍历数组,存入1到10

    public static void m2() {
		//1.创建数组--动态创建
		int[] a = new int[10];
		
		//2.遍历数组,依次给每个位置赋值
		//循环开始:a[0]--数组中的第一个元素
		//循环结束:a[a.length-1]--数组中的最后一个元素
		//如何变化:++
		for(int i = 0 ; i <= a.length-1 ; i++) {
			//a[i]--根据下标i来获取数组a中对应位置上元素的值
			a[i] = i+1;
		}//for循环结束
		//3.在存入10个数据之后,打印a数组
		System.out.println(a);//[I@15db9742
		//除了char类型的数组,其他类型的数组想要查看具体内容需要借助工具类Arrays
		//Arrays.toString(要打印的数组的名字)来查看数组中的具体内容
		System.out.println(Arrays.toString(a));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
		
	}

1.6.3增强for循环

JDK 1.5 引进的一种新的循环类型, 增强 for 循环( For-Each 循环)语法格式如下:

for(type element: array)
{
    System.out.println(element);
}

 注意:

        element类型必须要和遍历的数组类型一致

案例:

package com.jt.packageday;

public class demo01 {
    public static void main(String[] args) {
        int[] myList = new int[]{1,2,3};
        for(int a:myList){
            System.out.println(a);
        }
    }
}

输出结果:

1
2
3

1.6.4for循环遍历数组和增强for循环遍历数组的区别 

        通过上面的案列可以发现,for循环遍历数组的时候可以对要遍历的数组进行改变,而增强for循环遍历数组,显然不能。

2.数组工具类Arrays

 2.1 Arrays.toString(数组)

把数组里的数据,用逗号连接成一个字符串[值1,值2]

2.2 Arrays.sort(数组) 

对数组进行排序,对于基本类型的数组使用的是优化后的快速排序算法,效率高
对引用类型数组,使用的是优化后的合并排序算法

案列:

package com.jt.packageday;

import java.util.Arrays;

public class demo01 {
    public static void main(String[] args) {
        int[] myList = new int[]{2,3,1};
        Arrays.sort(myList);
        System.out.println(Arrays.toString(myList));
    }

}

 输出:

[1, 2, 3]

 2.4 Arrays.copyOf(数组,新的长度)

        把数组赋值成一个指定长度的新数组
        新数组的长度 大于 原数组, 相当于复制,并增加位置
        新数组的长度 小于 原数组, 相当于截取一部分数据

 案列:

package cn.tedu.array;

import java.util.Arrays;

/**本类用于练习数组的缩容与扩容*/
public class TestArraysCopyOf {
	public static void main(String[] args) {
		//1.创建数组
		int[] from = {1,2,3,4,5};//数组一旦创建,长度不可改变
		
		//2.1 数组的普通复制
		/**copyOf()用于完成数组的复制,两个参数:
		 * 参数1:要复制哪个数组
		 * 参数2:新数组的长度*/
		int[] to = Arrays.copyOf(from, 5);
		System.out.println(Arrays.toString(to));
		
		//2.2数组的扩容
		/**扩容:给数组扩大容量,新数组的长度>原数组的长度
		 * 扩容思路:先创建对应长度的新数组,每个位置上都是默认值0
		 * 然后从原数组中将元素复制到新数组,没有被覆盖的元素还是默认值0*/
		int[] to2 = Arrays.copyOf(from, 10);
		System.out.println(Arrays.toString(to2));
		
		//2.3数组的缩容
		/**缩容:缩小数组的容量,新数组的长度<原数组的长度
		 * 缩容思路:先创建对应长度的新数组,每个位置上都是默认值0
		 * 然后从原数组中复制指定个数的元素到新数组中,类似于截取*/
		int[] to3 = Arrays.copyOf(from, 3);
		System.out.println(Arrays.toString(to3));
		
		//2.4指定首尾截取原数组中的元素
		/**copyOfRange()用于完成数组的截取,3个参数:
		 * 参数1:要截取哪个数组【原数组】
		 * 参数2:从原数组的哪个下标开始
		 * 参数3:到原数组的哪个下标结束
		 * 注意:截取的元素包含开始下标处的元素,不包含结束下标处的元素*/
		int[] to4 = Arrays.copyOfRange(from, 2, 4);
		System.out.println(Arrays.toString(to4));
	}
}

3二维数组

3.1 概念

存放数组的数组,也就是说数组里存的还是数组的数据形式

3.2 创建二维数组

        int[][] a = {{3,5},{7,9},{1,2}};
        创建外部数组,长度是3
        给每个外部数组的位置创建内部数组,每个内部数组的长度是2
        给每个内部数组进行数据初始化
        二维数组生成唯一的地址值
        把地址值交给引用类型变量a来保存 

3.3 遍历二维数组

        for (int i = 0; i < a.length; i++) {//遍历外部数组
        for (int j = 0; j < a[i].length; j++) {//遍历内部数组
        System.out.println(a[i][j]);//依次打印二维数组中每个元素的值
        }
        }
案列:

package cn.tedu.array;

import java.util.Arrays;

/**本类用于打印二维数组中的数据*/
public class TestArrays2 {
	public static void main(String[] args) {
		//1.创建二维数组
		//    3      5    
		//a[0][0] a[0][1]
		//    7       9
		//[1][0] a[1][1] 
		//    1       2      3
		//a[2][0] a[2][1] a[2][2]
		int[][] a = {{3,5},{7,9},{1,2,3}};
		
		//2.遍历二维数组
		for (int i = 0; i < a.length; i++) {
//			System.out.println(Arrays.toString(a[i]));
			for (int j = 0; j < a[i].length; j++) {
				//a[i][j]--根据外部数组的下标和内部数组的下标定位具体的元素
				System.out.print(a[i][j]);
			}
			System.out.println();
		}
	}
}

参考网站:菜鸟----数组

这篇关于07Java基础---数组 Arrays类 二维数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!