Lesson6-数组

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

数组、类、接口是Java中的引用数据类型,和基本数据类型不一样,
数组的元素可以由基本数据类型或者是引用数据类型中的类(??)组成,数组变量也叫对象,和类变量(对象)一样!这就存在一个问题,由基本数据类型为元素组成数组,元素不是对象,数组却是对象;由引用数据类型中的类类型为元素组成数组,元素是对象,数组也是对象;


提示:以下是本篇文章正文内容,下面案例可供参考

一、引用性(类、数组、接口)变量的实质!!!!!和基本数据类型变量的区别

int[] arr;//创建(声明)一个一维数组的引用性变量,没有分配数组空间,只有一个引用性变量的空间 
arr = new int[5];//使用new在内存中(堆还是栈,参考上一节String)创建一个数组对象
                 //参考上一节,还有一种叫做匿名对象,int[] arr3 = {1,2,3,4,5};
                 //并将数组对象的引用赋值给引用性变量arr
//二维数组貌似好像不一样!!!!!

二、一维数组

1.一维数组的创建

1.1声明

数组元素类型 数组名字[ ];   ------C/C++的风格
数组元素类型[ ] 数组名字;   ------Java的风格
int arr[];
int[] arr;

1.2分配内存

数组名字 = new 数组元素的类型[数组元素的个数]
arr = new int[5];

1.3声明的同时分配内存

数组元素的类型 数组名字 = new 数组元素的类型[数组元素的个数]
int[] arr = new int[5];

2.一维数组的初始化(3种初始化的方法)—就是给数组赋值

	//第1种
	int[] arr1 = new int[5];
	arr1[0] = 1;
	arr1[1] = 2;
	arr1[2] = 3;
	arr1[3] = 4;
	arr1[4] = 5;
	//第2种
	int[] arr2 = new int[]{1,2,3,4,5};
	//第3种,匿名对象???
	int[] arr3 = {1,2,3,4,5};
	//错误语法
	int[] arr2 = new int[5]{1,2,3,4,5};

3.一维数组的使用

		int[] day = {31,28,31,30,31,30,31,31,30,31,30,31};
		for(int i = 0; i < day.length; i++)
		{
			System.out.println(day[i]);
		}

三、二维数组

1.二维数组的创建

1.1声明

数组元素类型 数组名字[ ][ ];   ------C/C++的风格
数组元素类型[ ][ ] 数组名字;   ------Java的风格
int arr[][];
int[][] arr;

1.2分配内存

//第1种方法,直接为每一维分配内存
数组名字 = new 数组元素的类型[数组行数][数组列数]
arr = new int[2][3];
//第2种方法,分别为每一维分配内存
arr = new int[2][];
arr[0] = new int[2];
arr[1] = new int[3];

1.3声明的同时分配内存

??????书上没有讲如何操作!!!!!!!

2.二维数组的初始化(3种初始化的方法)—就是给数组赋值

	//第1种
	int[][] arr1 = new int[2][3];
	arr1[0] = new int[]{1,2,3};//一维数组赋值给第一行
	arr1[1][0] = 4;//给第二行赋值
	arr1[1][1] = 5;//给第二行赋值
	arr1[1][2] = 6;//给第二行赋值
	//第2种
	int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
	//第3种,匿名对象???
	int[][] arr3 = {{1,2,3},{4,5,6}};
	//错误语法
	int[][] arr2 = new int[2][3]{{1,2,3},{4,5,6}};

3.二维数组的使用

		char[][] arr = new char[4][5];
		arr[0] = new char[] { '春', '眠', '不', '觉', '晓' };
		arr[1] = new char[] { '处', '处', '闻', '啼', '鸟' };
		arr[2] = new char[] { '夜', '来', '风', '雨', '声' };
		arr[3] = new char[] { '花', '落', '知', '多', '少' };
		System.out.println("--------------横板-----------");
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j]);
			}
			if (i % 2 == 0) {
				System.out.println(",");
			} else {
				System.out.println("。");
			}
		}

		System.out.println("--------------竖版-----------");

		for (int j = 0; j < arr[0].length; j++) {
			for (int i = arr.length - 1; i >= 0; i--) {
				System.out.print(arr[i][j]);
			}
			System.out.println("");
		}
		System.out.println("。,。,");

四、数组的操作

java.util包的Arrays类包含了用来操作数组(如排序和搜索)的各种方法,除了第1个遍历 数组,其他的都用了了Arrays类的静态方法。

1.遍历数组

遍历数组就是获取每一个数组元素,一维数组很简单,下面是针对二维数组,常用的方法是双for循环和双foreach循环。

		///双foreach循环
		for (char a[] : arr) {
			for (char b : a) {
				System.out.print(b);
			}
			System.out.println();
		}

2.填充和批量替换数组元素

Arrays.fill()

		// 填充替换数组元素
		int arr5[] = new int[5];
		Arrays.fill(arr5, 10);//填充
		for (int temp : arr5) {
			System.out.println(temp);
		}
		int arr6[] = {1,2,3,4,5,6,7};
		Arrays.fill(arr6, 2, 5, 0);//批量替换
		for (int temp : arr6) {
			System.out.println(temp);
		}

3.对数组进行排序

Arrays.sort()--------只能升序

		int arr7[] = {1,89,29,9,5,6,0};
		double arr8[] = {1.0,89.0,29.0,9.4,5.2,6.7,0.9};
		Arrays.sort(arr7);
		Arrays.sort(arr8);
		for (int temp : arr7) {
			System.out.print(temp+" ");
		}
		for (double temp : arr8) {
			System.out.print(temp+" ");
		}

4.复制数组

不能直接复制数组名,参考”一、引用性(类、数组、接口)变量的实质“

		// 复制数组
		int arr9[] = {1,89,29,9,5,6,0};
		int arr10[] = arr9;//复制数组名,指向的是同一个地址!!!!!!!
		arr10[0] = 200;
		
		System.out.println("arr9");
		for (int temp : arr9) {
			System.out.print(temp + " ");
		}
		
		System.out.println("\narr10");
		for (int temp : arr10) {
			System.out.print(temp + " ");
		}
		
		int arr11[] = Arrays.copyOf(arr9, 2);
		System.out.println("\narr11");
		for (int temp : arr11) {
			System.out.print(temp + " ");
		}
		
		int arr12[] = Arrays.copyOfRange(arr9, 2, 4);
		System.out.println("\narr12");
		for (int temp : arr12) {
			System.out.print(temp + " ");
		}

5.数组查询

		// 数组查询
		int arr13[] = { 1, 89, 29, 9, 5, 6, 0 };
		Arrays.sort(arr13);
		int index = Arrays.binarySearch(arr13, 3);//不存在返回-插入点
		System.out.println(index);
		index = Arrays.binarySearch(arr13, 0);//存在返回元素索引
		System.out.println(index);

五、数组排序算法

1.冒泡排序

2.直接选择排序

3.反转排序


总结

以上就是对Java中数组相关知识的讲解,后续是类和对象、包装类、数字处理类…的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值