java基础-引用数据类型之二维数组(Array)
java基础-引用数据类型之二维数组(Array)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
之前我们学习过了Java的一维数组,所谓的二维数组就是元素是一堆一维数组的数组,换句话说,就是数组中的数组,数组里面存储的还是数组。数组中的元素类型可以是基本数据类型,也可以是引用数据类型,当元素类型是一维数组时,就构成了二维数组。
一.二维数组的定义
定义方式和以为数组很相似,比如“int[][] arr = new int[3][4];”,其中“[3]”表示:二维数组中,有三个一维数组,“[4]”表示三个一位数组的长度都是4。这也就意味着这个二维数组可以存储12个int类型的数字。接下来我们给大家介绍一下数组的定义方式
1>.定义方式一,指定二维数组的长度和一维数组的长度;
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class arrayArrayDemo{
public static void main(String[] args){
int[][] arr = new int[3][4]; //当然你也可以定义多维的,比如三维四维的数字,但是不建议这么干!
System.out.println(arr);
System.out.println(arr[1]);
System.out.println(arr[2][3]);
}
}
2>.只指定二维数组的长度(不推荐使用)
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class arrayArrayDemo1{
public static void main(String[] args){
String[][] arr = new String[3][]; //二维数组中定义三个以为数组,每个数组长度没有指定。
arr[0] = new String[5];
arr[1] = new String[10]; //每次在使用时,必须要用关键字new创建数组的长度方可使用。
arr[2] = new String[3];
arr[2][1] = "yinzhengjie";
for(int index = 0;index<arr[2].length;index++){
System.out.println(arr[2][index]);
}
}
}
3>.直接初始化二维数组和一维长度
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class arrayArrayDemo2{
public static void main(String[] args){
int[][] arr = {{1,2,3},{4,5,},{6,7,8,9},{0}}; System.out.println(arr[2][1]); }
}
二.二维数组内存图
以下是二维数组存储的简要内存图:

三.二维数组的遍历
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class arrayArrayDemo2{
public static void main(String[] args){
int[][] arr = {{1,2,3},{4,5,},{6,7,8,9},{0}}; //外循环,遍历的是二维数组
for(int i = 0;i<arr.length;i++){
//内循环,遍历的是每一个一维数组,因此长度因为:arr[i].length
for(int j = 0;j < arr[i].length;j++){
System.out.println(arr[i][j]);
}
}
}
}
四.小时牛刀
1>.公司年销售额求和
例如要统计一下公司三个销售小组中每个小组的总销售额以及公司的销售额。如下所示:
第一个小组销售额为:220,604,505,730万元。
第二个小组销售额为:201,110,202,301,330万元。
第三个小组销售额为:807,202,205,450,651,606,903万元。
第四个小组销售额为:307,408,970万元。
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class arrayArrayDemo3{
public static void main(String[] args){
int[][] arr = new int[4][];
arr[0] = new int[]{220,604,505,730};
arr[1] = new int[]{201,110,202,301,330};
arr[2] = new int[]{807,202,205,450,651,606,903};
arr[3] = new int[]{307,409,970}; int groupSummation = 0,totalCompany = 0;
int[] groupArrary = new int[4]; //外循环,遍历二维数组
for(int groupNumber = 0;groupNumber<arr.length;groupNumber++){
//内循环,遍历一维数组
for(int groupMember = 0;groupMember <arr[groupNumber].length;groupMember++){
groupSummation += arr[groupNumber][groupMember];
}
//将每个小组的销售总额加起来。
groupArrary[groupNumber] = groupSummation;
System.out.printf("第[%d]小组的销售总额是:[%d]\n",groupNumber+1,groupSummation);
//将当前小组的销售总额清空,方便计算下一个小组的销售总额度。
groupSummation = 0;
} //公司总的销售额度
for(int groupNumber = 0;groupNumber<groupArrary.length;groupNumber++){
totalCompany+=groupArrary[groupNumber];
}
System.out.printf("公司的销售总额是:[%d]\n",totalCompany);
}
}
2>.随机点名器
随机点名器,即在全班同学中随机的打印出一名同学名字,要做的随机点名器,它具备以下3个内容:
a>.存储所有同学姓名;
b>.总览全班同学姓名;
c>.随机点名其中一人,打印到控制台;
班级名单如下:
第[1]组成员:尹正杰 周杰伦 张杰
第[2]组成员:张娜拉 邓紫棋 古天乐 刘德华
第[3]组成员:刘邦 项羽 项少龙
以下被点名的学员是:
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ import java.util.Random; public class callName{
public static void main(String[] args){
String[][] nameList = {{"尹正杰","周杰伦","张杰"},{"张娜拉","邓紫棋","古天乐","刘德华"},{"刘邦","项羽","项少龙"}}; System.out.println("班级名单如下:");
for(int i=0;i<nameList.length;i++){
System.out.format("\t\t第[%d]组成员:",i+1);
for(int j =0;j<nameList[i].length;j++){
System.out.print(nameList[i][j]+"\t");
}
System.out.println();
} System.out.println("以下被点名的学员是:");
int index = getIndex(nameList);
int nameIndex = getIndex(nameList[index]);
System.out.printf("\t\t被点名的学员是第[%d]组的[%s]\n",index+1,nameList[index][nameIndex]);
} //用于确定随机的二维数组的索引
public static int getIndex(String[][] args){
int index;
Random ran = new Random();
index = ran.nextInt(args.length);
return index ;
} //用于确定一维数组的索引
public static int getIndex(String[] args){
int index;
Random ran = new Random();
index = ran.nextInt(args.length);
return index ;
}
}
3>.杨辉三角形案例
还记得我们上学那会数学里面学习的二项式通式吗?如:"(a+b)^2"和"(a+b)^3"以及"(a+b)^n"他们展开的二项式通式的系数吗?我们就可以用二维数组来实现,代码如下:
/*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class YangHuiDemo{
public static void main(String[] args){
int[][] arr = new int[8][];
//变量二维数组,动态给每个元素赋值
for(int i = 0;i<arr.length;i++){
arr[i] = new int[i + 1]; //给每个元素赋值
for(int j = 0;j<arr[i].length;j++){
if(j == 0 || j == arr[i].length - 1){
arr[i][j] = 1;
}else{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
}
} for(int i = 0;i<arr.length;i++){
for(int j = 0;j<arr[i].length;j++){
System.out.print(arr[i][j] + "\t");
}
System.out.println();
} }
}
java基础-引用数据类型之二维数组(Array)的更多相关文章
- java基础-引用数据类型之一维数组(Array)
java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...
- Java基础-引用数据类型之集合(Collection)
Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...
- java 数组基础学习(一维二维数组)
1.一维数组 1>静态初始化:数据类型[ ] 变量名 = {元素} 例:int[ ] arr = {1,2} 动态初始化:数据类型[ ] 变量名 = new数据类型[数据长度] 例:int[ ] ...
- Java编程基础阶段笔记 day06 二维数组
二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...
- 《java入门第一季》二维数组三个案例详解
案例一:遍历二维数组 /* 需求:二维数组遍历 外循环控制的是二维数组的长度,其实就是一维数组的个数行数. 内循环控制的是一维数组的长度,每一行,一维数组元素分别的个数. */ class Array ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- JAVA中如何创建一个二维数组,然后给二维数组赋值!
普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ ...
- 剑指offer编程题Java实现——面试题3二维数组中的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 下面是我实现的代码 ...
- java list map转换成二维数组
/** * *@Title: ListToArray *@Description: list列表转换成二维数组 *@Author: Administrator *@Since: 2018年1月7日下午 ...
随机推荐
- 面向对象OO第9-11次作业总结
面向对象OO第9-11次作业总结 1.关于规格化设计的调研程序规格说明:对程序所应满足的要求,以可验证的方式作出完全.精确陈述的文件.“规格说明”一词与其他工业产品的“规格说明书”有相似的含义.不过, ...
- Hibernate笔记③--集合映射、组合映射、联合主键、查询案例
lazy 懒加载 默认为proxy 继承映射 discriminant column="type" type="string" 集合映射 生成表的语句: ...
- linshi18
#include<iostream> using namespace std; int n,m,k; #define max 100 char mmap[max][max]; int mm ...
- java项目 相对路径(本项目的地址)
File file=new File(""); String abspath=file.getAbsolutePath(); System.out.println(abspath) ...
- quartusII13.0使用教程
1.新建工程项目,填写项目存储路径和工程名,不要出现中文路径 2.添加已存在文件(可选),在[File name]下选择已经存在的工程项目,利用[Add]或[Add all]命令添加文件到新工程,点击 ...
- 搭建zabbix详细步骤
关闭selinux和防火墙 selinux关闭: 1 命令查看出selinux的状态sestatus -v2 临时关闭 selinuxsetenforce 03 永久关闭selinuxvi /etc/ ...
- jsp 页面和 jsp标记
一个jsp页面可由5种元素组成 html标记 变量和方法的声明 java程序片 java表达式 <%!变量和方法的声明%> 被声明的方法和变量在整个jsp页面都可以访问,为全局变量 当多个 ...
- DotNetty 跨平台的网络通信库
长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架.终于微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点, ...
- 用友时空B/S表单外挂(接口)程序操作说明文档
用友时空B/S表单外挂(接口)程序 一.B/S表单接口需求 众所周知,用友时空KSOA支持B/S架构.且移动商务.在线门店,都是完全基于B/S架构的. B/S架构的优越性在于没有本地客户端和本地数据, ...
- mybatis的setting
在mybaits中,setting的的配置参数如下(如果不在配置文件中配置将使用默认值): 设置参数 描述 有效值 默认值 cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关 tr ...