博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《疯狂java讲义2》读书笔记——数组
阅读量:6080 次
发布时间:2019-06-20

本文共 3077 字,大约阅读时间需要 10 分钟。

hot3.png

没有多维 数组

        java语言里的数组类型是引用类型,因此,数组变量其实是一个引用,这个引用指向真实的 数组内存。数组元素的类型也可以是引用,如果数组元素的引用再次指向真实的数组内存,这种情形看上去很像多位数组。

        定义数组类型的语法:type[] arrName;,这是典型的一维数组的定义语法 ,其中type是数组元素的类型。如果希望数组元素也是一个引用,而且是指向int数组的引用,则可以把type具体成int[],那么上面定义数组的语法就是int([][] arrName)。

        如果把int这个类型扩大到java的所有类型(不包括数组 类型),则出现了定义二维数组的语法:

arrName = new type[]

        java语言采用上面的语法格式来定义二维数组,但它的实质还是一维数组,只是其中数组元素也是引用,数组元素里保存的医用指向一维数组。

        执行初始化:

arrName = new type[length][]

        java中对多维数组的 定义就是来源于此。

  操作数组的工具类

        java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组。

        》int binarySearch(type[] a, type key): 使用二分法查询key元素值在数组a中出现的索引:如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。

        》type[] copyOf(type[] original, int newLength): 这个方法将会把original数组复制成一个新数组,其中length是新数组的长度。

        》boolean equals(type[] a2):   如果a数组和a2数组的长度相等,而且a数组和a2数组的元素也一一相同,该方法将返回true。

        》void sort(type[] a): 该方法对a数组的数组元素进行排序。

        》String toString(type[] a): 该方法将一个数组转换成一个字符串。

        下面是示范程序:

import java.util.Arrays;public class ArraysTest  {	public static void main(String[] args) 	{		//定义一个a数组		int[] a = new int[]{3,4,5,6};		//定义一个a2数组		int[] a2 = new int[]{3,4,5,6};		//a数组和a2数组的长度相等,每个元素依次相等,将输出true		System.out.println("a数组和a2数组是否相等:" + Arrays.equals(a,a2));		//通过复制a数组,生成一个新的b数组		int[] b = Arrays.copyOf(a,6);		System.out.println("a数组和b数组的值是否相等:" + Arrays.equals(a,b));	    //输出b数组的元素,将输出[3,4,5,6,0,0]		System.out.println("b数组的元素为:" + Arrays.toString(b));		//将b数组元素的第三个元素(包括)到第五个数组的元素(不包括)赋值为1		Arrays.fill(b,2,4,1);		//输出b数组的元素,将输出[3,4,1,1,0,0]		System.out.println("b数组的元素为:" + Arrays.toString(b));		//对b数组进行排序		Arrays.sort(b);		//输出b数组的元素,将输出{0,0,1,1,3,4]		System.out.println("b数组的元素为:" + Arrays.toString(b));	}}

数组应用举例

        只挑选一个比较感兴趣的例子:五子棋

import java.io.*;public class Gobang{	//定义一个二位数组来充当棋盘	private String[][] board;	//定义棋盘的大小	private static int BOARD_SIZE = 15;    public void initBoard()	{		//初始化棋盘数据		board = new String[BOARD_SIZE][BOARD_SIZE];		//把每一个元素赋为"+",用于在控制台面画出棋盘		for (int i = 0 ;i < BOARD_SIZE ;i++ )		{			for (int j = 0;j < BOARD_SIZE ;j++ )			{				board[i][j] = "+";			}		}	}//在控制台输出棋盘方法public void printBoard() {	//打印每一个数组元素	for (int i = 0 ;i < BOARD_SIZE ;i++ )    {			for (int j = 0;j < BOARD_SIZE ;j++ )	        {				//打印数组元素后不换行				System.out.print(board[i][j]);	        }			//每打印完一行数组元素后输出一个换行符			System.out.print("\n");	}}public static void main(String[] args)throws Exception {	Gobang gb = new Gobang();	gb.initBoard();	gb.printBoard();	//这是用于获取键盘输入的方法	BufferedReader br= new BufferedReader(new InputStreamReader(System.in));	String inputStr= null;	//br.readerLine():每当键盘上输入一行内容后按住回车键,刚输入的内容将被br读取到	while ((inputStr = br.readLine()) != null)	{		//将用户输入的字符串以逗号(,)作为分隔符,分隔成2个字符串		String[] posStrArr= inputStr.split(",");		//将2个字符串转换成用户下棋的坐标		int xPos = Integer.parseInt(posStrArr[0]);		int yPos = Integer.parseInt(posStrArr[1]);		//把对应的数组元素赋为"o".		gb.board[yPos -1][xPos -1]= "O";		gb.printBoard();		System.out.println("请输入您下棋坐标,应以x,y的格式:");	}}}

*此程序针对于初学者的一个简单范例,里面涉及到java其它基础知识:与用户互动——键盘输入;异常处理。(棋子我不知道这么弄成黑色棋子,所以用大写字母O表示了。)

 

无关事要:本来我准备几天前就写这篇博客的,来记录我的java历程,因为我意志不坚定,拖延症犯了,各种理由搪塞自己;刚好这两天休息就写了这篇博客(很自豪,虽然写的不好),我希望我可以一直坚持下去,努力!

转载于:https://my.oschina.net/u/3007550/blog/779995

你可能感兴趣的文章
APM for .NET评测系列:OneAPM vs SCOM
查看>>
小代码
查看>>
ios页面返回上层页面数据没有更新,可以在上层页面强制加入监听进行更新
查看>>
puppeteer尝试-爬链家
查看>>
如何写出无法维护的代码?
查看>>
MySQL字符集详解
查看>>
netty报错:io.netty.channel.ChannelPipelineException
查看>>
ThinkPHP RBAC如何自动获取所有模块的函数
查看>>
Android学习--06-活动的启动模式
查看>>
Apache Shiro 快速入门实例
查看>>
mysql增删改查
查看>>
Mariadb基于ssl的主从复制
查看>>
WAMP下Apache配置httpd-vhosts虚拟主机多站点
查看>>
intellij idea 使用指南(mac 版)
查看>>
常用的监测系统状态shell脚本
查看>>
sed工具
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Nginx 常用全局变量
查看>>
一个5年运维工程师的新年回首
查看>>
分享30个高品质的抽象网页背景素材
查看>>