java数组

数组

数组的定义:相同类型数据的有序集合;相同类型的若干数据,按照一定的先后次序排列组合;从0开始计数

dataType[]  arrayRefVar =new dataType[arraySize]
s索引需要从0开始

内存

声明数组
创建数组
给数组赋值

静态初始化   创建+赋值都实现了
	int[] a={1,2,3,...}
动态初始化
	int[] b =new int[10];
	b[0]=1;
	...
		包含默认初始化  默认为数组值为0

1.数组的长度是确定的
2.元素必须是相同类型,不允许出现混合类型
3.数组元素可以是任何数据类型
4.数组变量属于引用类型
5.数组本身就是对象,java中的对象是在堆中

小结:
*数组是相同数据类型(数据类型可以为任意类型)的有序集合
*数组也是对象。数组元素相当于对象的成员变量
*数组长度是确定的,是不可变的。ArrayIndexOutofBounds是表示发生数组越界

数组的使用

//jdk1.5
int[] nums = { 1, 2, 3, 4, 5, 6 };
		for (int array : nums) {
			System.out.println(array);
		}

多维数组

		int[][] array= {{1,2},{2,3},{3,4},{4,5}};
		
		for(int i=0;i<array.length;i++) {
			for(int j=0;j<array[i].length;j++) {
				System.out.print(array[i][j]);
			}
		}
Arrays.toString(a);  获取数组元素
Arrays.sort(a);  数组排序  
Arrays.fill(a,0);  数组填充

冒泡排序(降序排列)

比较数组中相邻的两个元素,第一个数比第二个数大,我们就交换他们的位置,每次比较后都产生除一个最大的数字,下一轮可以减少一次排序

public static void main(String[] args) {
		int[] b = { 1, 8, 3, 7, 5, 6 };

		int[] sort =sort(b);
		System.out.println(Arrays.toString(sort));
	}
	
	public static int[] sort(int[] array) {
		for(int i=0;i<array.length-1;i++) {
			Boolean flag=false;
			int a=0;
			for (int j = 0; j < array.length-1-i; j++) {
				if (array[j]>array[j+1]) {
					a=array[j];
					array[j]=array[j+1];
					array[j+1]=a;
					flag=true;
				}
			}
			if (flag==false) {
				break;
			}
		}
		return array;
	}

稀疏数组

*一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
*记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

	// 稀疏数组 0:没有 1:黑棋
	public static void main(String[] args) {
		int[][] array1 = new int[11][11];
		array1[1][2] = 1;
		array1[2][3] = 2;
		System.out.println("输出原始的数组");

		for (int[] ints : array1) {
			for (int anInt : ints) {
				System.out.print(anInt + "\t");
			}
			System.out.println();
		}

		// 转换为稀疏数组保存
		// 获取有效值的个数
		int sum = 0;
		for (int i = 0; i < array1.length; i++) {
			for (int j = 0; j < array1.length; j++) {
				if (array1[i][j] != 0) {
					sum++;
				}
			}
		}
		System.out.println("有效值个数" + sum);

		// 创建一个稀疏数组
		int[][] array2 = new int[sum + 1][3];

		array2[0][0] = 11;
		array2[0][1] = 11;
		array2[0][2] = sum;

		// 遍历二维数组,将非零的值,存放稀疏数组中
		int count = 0;
		for (int i = 0; i < array1.length; i++) {
			for (int j = 0; j < array1[i].length; j++) {
				if (array1[i][j] != 0) {
					count++;
					array2[count][0] = i;
					array2[count][1] = j;
					array2[count][2] = array1[i][j];
				}
			}
		}
		System.out.println("输出稀疏数组");
		
		for (int i = 0; i < array2.length; i++) {
			System.out.println(array2[i][0] + "\t"
							+ array2[i][1] + "\t" 
							+ array2[i][2] + "\t");
		}
		
		System.out.println("=================================");
		//还原
		int[][] array3=new int[array2[0][0]][array2[0][1]];
		//给元素还原
		for (int i = 1; i < array2.length; i++) {
			 array3[array2[i][0]][array2[i][1]]=array2[i][2];
		}
		System.out.println("输出还原的数组");

		for (int[] ints : array3) {
			for (int anInt : ints) {
				System.out.print(anInt + "\t");
			}
			System.out.println();
		}	
	}

视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值