初识Java:面向对象程序设计基础入门(4)【长文】数组,字符串,集合框架类(向量,映射,哈希表)_掌握数组、字符串、向量和哈希表的使用-程序员宅基地

技术标签: 长文  

I.数组

1.定义

严格来说,数组并不是本章所介绍的库类。它更接近于C语言当中的数组概念(采用指针来指向一连串处于一个集合内的多个同类型的元素),直接采用类型-变量名语句完成定义。

char a[];
char []b;

特别指出:

char []a,b,c;
char a[],b[],c[];
char []a,[]b,[]c;

这三个语句是等价的。
允许在定义之初初始化赋值:

char []c={'a','b','c','d','e'};

等价于:

char c[]=new char(5);
char c[0]='a';
char c[1]='b';
char c[2]='c';
char c[3]='d';
char c[4]='e';

java的数组下标从零开始

2.创建实例对象

与C语言不同的是,定义数组并不需要声明空间,仅在建立数组对象时必须采用构造方法声明空间。在C语言当中:

char a[10];
char *b;
b=(char *)malloc(10*sizeof(char));

这样的语句才能有效地定义出数组。而Java中:

char c=new char(5);

Java中不必声明空间,但是声明并初始化之后空间也就分配完毕,不能使用或访问其他的空间
正确示例:

char a[]= {'a','b','c','d'};
System.out.println(a[3]);

错误示例:

char a[]= {'a','b','c','d'};
a[4]='e';
System.out.println(a[4]);

报错为:
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4 at whatever.w.main(w.java:7)
仅仅赋值或者调用都会报错。

3.引用数据类型数组

当数组元素的数据类型是引用数据类型(类,接口,数组类型),a[i]表示一个引用。尚未赋值时,默认值为null。

String s[]=new String[3];
s[0]=new String("abc");

其中的s[0]就是一个对String类的引用。也可以:

String s[]= {new String("abc"),new String("def"),new String("ghi")};

4.多维数组

1.创建多维数组对象的方法

(1)直接创建多维数组对象

int [][]matrix=new int[2][2];

(2)从高维开始逐渐创建数组对象
比如一个存储器的锁存器阵列为256* 128* 8,我们要定义一个三维数组表示之。

int [][][]matrix;
matrix=new int[256][][];
for(int i=0;i<256;i++)matrix[i]=new int[128][];//matrix有256个元素,每个元素matrix[i]有128个元素
for(int i=0;i<256;i++)
	for(int j=0;j<128;j++)matrix[i][j]=new int[8];//每个matrix[i][j]都有八个整型元素

高维数组的各个元素都是数组,且元素个数未必要一样
(3)数组初始化语句

int [][][]matrix= {
  
   {
  
   {1,2},{3,4}},{
  
   {5,6},{7,8}},{
  
   {9,10},{11,12}}};

在这里,有:
matrix[0][0][0]=1;
matrix[0][0][1]=2;
matrix[0][1][0]=3;
matrix[0][1][1]=4;
matrix[1][0][0]=5;
matrix[1][0][1]=6;
matrix[1][1][0]=7;
matrix[1][1][1]=8;
matrix[2][0][0]=9;
matrix[2][0][1]=10;
matrix[2][1][0]=11;
matrix[2][1][1]=12;

2.多维数组引用实例:三阶幻方

三阶幻方是将1-9这些数字填入九宫格的游戏,要求九个位置上的数字满足每行,每列,每条对角线上的三个数字都是相等的(可见等于15)。
这里给出一设计,不再详述内容:

package whatever;

public class Grid {
	int board[][];
	public Grid()
	{
		board=new int[3][3];
	}
	public void outputGrid()
	{
		for(int i=0;i<=2;i++)
		{
			for(int j=0;j<=2;j++)
			{
				System.out.print(board[i][j]+" ");
			}
			System.out.print("\n");
		}
	}
	public void initGrid()
	{
		int add=1;
		for(int i=0;i<=2;i++)
		{
			for(int j=0;j<=2;j++)
			{
				board[i][j]=add;
				add++;
			}
		}
	}
	public boolean isLastData()
	{
		int check=9;
		for(int i=0;i<=2;i++)
		{
			for(int j=0;j<=2;j++)
			{
				if(board[i][j]!=check)return false;
				check--;
			}
		}
		return true;
	}
	public void nextData()
	{
		for(int i=board.length-1;i>=0;i--)
		{
			for(int j=board[i].length-1;j>=0;j--)
			{
				if(board[i][j]==9)board[i][j]=1;
				else 
					{
						board[i][j]++;
						return;
					}
			}
		}
	}
	public boolean isDuplicate()
	{
		int digit[]=new int[10];
		for(int k=0;k<=9;k++)
		{
			digit[k]=0;
		}
		for(int i=0;i<=2;i++)
		{
			for(int j=0;j<=2;j++)
			{
				digit[board[i][j]]+=1;
			}
		}
		for(int t=1;t<=9;t++)
		{
			if(digit[t]!=1)return true;
		}
		return false;
		
	}
	public boolean isAnwser()
	{
		
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Quaint_Senator/article/details/88861020

智能推荐

0719学习总结(文件流的输入输出)_请综合输入输出流、文件流和字符串流、特别是文件流中指针相关函数进行文件随机位-程序员宅基地

文章浏览阅读482次。1.输入输出流常用的有:iostream 包含了对输入输出流进行操作所需的基本信息:fstream 用于用户管理的文件的I/O操作。strstream 用于字符串流I/O。stdiostream 用于混合使用C和C + +的I/O机制时,例如想将C程序转变为C++程序。iomanip 在使用格式化I/O时应包含此头文件。2.在iostream头文件中定_请综合输入输出流、文件流和字符串流、特别是文件流中指针相关函数进行文件随机位

鸿蒙osbeta2.0上手上手,鸿蒙OS 2.0上手视频曝光,Mate40系列首批无缘,界面与EMUI一致...-程序员宅基地

文章浏览阅读47次。原标题:鸿蒙OS 2.0上手视频曝光,Mate40系列首批无缘,界面与EMUI一致华为在今天正式召开鸿蒙OS 2.0开发者沟通会,此次沟通会将会讨论鸿蒙OS 2.0的各种相关开发问题。对于普通消费者来说,开发者的事情并不是大家关心的。作为消费者最关心的还是鸿蒙OS 2.0啥时候能够适配自己的手机。 在华为召开开发者大会的同时,华为也在今天正式放出了鸿蒙OS 2.0手机开发者Beta版。目前已经有博...

Jenkins首次安装推荐插件出错 No such plugin: cloudbees-folder 超详细解决方案-程序员宅基地

文章浏览阅读6.8k次,点赞2次,收藏12次。我的环境:腾讯云 CentOS7 轻量应用服务器docker run -u root -itd -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins-master jenkinsci/blueocean当我首次通过镜像启动一个 Jenkins 容器后,访问服务器 公网ip:8080 访问 Jenkin._no such plugin: cloudbees-folder

JSP入门-基本语法_用于为其他动作提供附加信息的动作是-程序员宅基地

文章浏览阅读392次。JSP入门-基本语法_用于为其他动作提供附加信息的动作是

DNS服务器搭建_server registered via geo dns in ap-east-1-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏59次。本篇是关于DNS服务器的搭建配置教程!_server registered via geo dns in ap-east-1

7.2(stm32以太网)_w25qxx_write_nocheck-程序员宅基地

文章浏览阅读3.2k次。《7.2》1.SPI的写入整个扇区W25QXX_Write_NoCheck()--->W25QXX_Write_Page()--->SPI1_ReadWriteByte(); void W25QXX_Write_NoCheck(pBuffer , addr,num) { u8 pageremain; pageremain = addr - addr%256;_w25qxx_write_nocheck

随便推点

ROS命令_ros查找功能包-程序员宅基地

文章浏览阅读2.7k次。文章目录1.功能包、功能包集相关2.工作空间1.功能包、功能包集相关(1) rospack find turtlesim:查找turtlesim包的路径/opt/ros/noetic/share/turtlesim(2) rosls turtlesim:可获取功能包下面的文件列表cmake images msg package.xml srv(3) rosstack find [stack_name]:查找已经在系统中安装过的某个功能包集(4)roscd turtlesim:进入某个文_ros查找功能包

hadoop_connecting to 192.168.128.130:22... could not conn-程序员宅基地

文章浏览阅读412次。连接xshell错误信息如下Connecting to 192.168.128.130:22...Could not connect to '192.168.128.130' (port 22): Connection failed.最有可能的原因是在配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 的时候使用的IPADDR =192.168.128.130 , 这个IP地址不在虚拟机VMware8本身的net 连接的ip范围内,解决步骤如下_connecting to 192.168.128.130:22... could not connect to '192.168.128.130' (

CentOS7 安装 PHP7 完全详细教程_centos7 命令安装php7-程序员宅基地

文章浏览阅读2w次,点赞3次,收藏16次。CentOS7的默认PHP版本是PHP5,但是如果我们要安装PHP7,不需要将现有的PHP5删除,只要将PHP升级到PHP7即可。使用 yum provides php 命令可以获取CentOS7的PHP包安装情况。显示的是在现有的安装源中能够安装的最新版本为:php-5.4.16-46.el7.x86_64在安装PHP7之前,建议先升级更新一下CentOS7的安装包:yum -y upd..._centos7 命令安装php7

偏差平方和说明什么_什么是平方误差和均方误差-程序员宅基地

文章浏览阅读7.1k次。展开全部均方误差是指参数估计636f70793231313335323631343130323136353331333431373161值与参数真值之差平方的期望值,记为MSE。MSE是衡量“平均误差”的一种较为方便的方法,MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。误差平方和又称残差平方和、组内平方和等,根据n个观察值拟合适当的模型后,余下未能拟合部份..._参参数偏差平方和

nginx mysql php源码编译_snowy +nginx-程序员宅基地

文章浏览阅读87次。lamp架构=Linux/unix/windows(操作系统)+apache/nginx……+mysql/pgsql +php/python/golang。开发能力要自己努力。起码需要一些语言基础。不懂代码何以精通?不堪官方源码何以做到熟悉?nginxnginx有官方网站:www.nginx.comtar zxf nginx-1.18.0.tar.gz ##解压。解压之后里面有configure,表示他是开源的。./configure --help ##查看一些参数 _snowy +nginx

Rancher备份&&还原_rancher还原db-程序员宅基地

文章浏览阅读834次。Rancher备份&&还原一、Rancher 备份1、备份# !/bin/bash# /opt/backup/backup-rancher.shDATE=$(date +%Y%m%d%H%M)echo "备份rancher数据"echo "1.拷贝容器内数据"IMAGE_ID=`docker ps |grep rancher:v2.5.8|awk '{print $1}'`docker cp $IMAGE_ID:/var/lib/rancher /opt/ba_rancher还原db

推荐文章

热门文章

相关标签