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)的更多相关文章

  1. java基础-引用数据类型之一维数组(Array)

    java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...

  2. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  3. java 数组基础学习(一维二维数组)

    1.一维数组 1>静态初始化:数据类型[ ] 变量名 = {元素} 例:int[ ] arr = {1,2} 动态初始化:数据类型[ ] 变量名 = new数据类型[数据长度] 例:int[ ] ...

  4. Java编程基础阶段笔记 day06 二维数组

    二维数组 笔记Notes 二维数组 二维数组声明 二维数组静态初始化与二位初始化 二维数组元素赋值与获取 二维数组遍历 二维数组内存解析 打印杨辉三角 Arrays工具类 数组中常见的异常 二维数组 ...

  5. 《java入门第一季》二维数组三个案例详解

    案例一:遍历二维数组 /* 需求:二维数组遍历 外循环控制的是二维数组的长度,其实就是一维数组的个数行数. 内循环控制的是一维数组的长度,每一行,一维数组元素分别的个数. */ class Array ...

  6. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  7. JAVA中如何创建一个二维数组,然后给二维数组赋值!

    普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ ...

  8. 剑指offer编程题Java实现——面试题3二维数组中的查找

    题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.   下面是我实现的代码 ...

  9. java list map转换成二维数组

    /** * *@Title: ListToArray *@Description: list列表转换成二维数组 *@Author: Administrator *@Since: 2018年1月7日下午 ...

随机推荐

  1. Last Daily Scrum (2015/11/9)

    今晚我们终于完成了新版本的爬虫工作,可以替换掉之前部署在服务器上的那个爬虫了.由于周末大家各种原因导致了我们迭代一的截止日没有完成所有任务,所以今天晚上大家加班加点终于把这一迭代的爬虫项目完成了. 成 ...

  2. 20172308 实验一《Java开发环境的熟悉》实验报告

    20172308 2017-2018-2 <程序设计与数据结构>实验1报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...

  3. 小组冲刺第十一天站立会议(发布Alpha版+网站链接)

    注: “助成”招聘网站链接:http://58.87.74.131:8080/zhucheng 欢迎大家进行评测. 一.任务看板: 二.燃尽图: 三.团队成员合照: 四.任务总结: 今天我们发布网站B ...

  4. 3、昨天的BUG

    基本功能实现了,但是有一些小问题,修改昨天余留的BUG

  5. css3学习笔记一

    首先界面是二维的但也可以有三维的效果.先了解浏览器兼容性问题,火狐加前缀(-moz-)IE加(-MF-)谷歌加(-webkit),简单介绍css3的几个属性. 对于背景来说如果是单纯着一种颜色可以会单 ...

  6. PAT 1001 A+B Fotmat

    源码 1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calcula ...

  7. 【CS231N】5、神经网络静态部分:数据预处理等

    一.疑问 二.知识点 1. 白化 ​ 白化操作的输入是特征基准上的数据,然后对每个维度除以其特征值来对数值范围进行归一化.该变换的几何解释是:如果数据服从多变量的高斯分布,那么经过白化后,数据的分布将 ...

  8. MongoDB安装笔记

    2017年11月17日,在Windows Service 2008R2上成功安装MongoDB. 版本:mongodb-win32-x86_64-2008plus-ssl-3.4.6-signed.m ...

  9. [51单片机] Keil C51中变量的使用方法详解

    引言    8051内核单片机是一种通用单片机,在国内占有较大的市场份额.在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功.由于51内核单片机的存储结构的特殊性,Keil C51中变量 ...

  10. C++编译与链接(2)-浅谈内部链接与外部链接

    发现每次写技术博客时,都会在文章开头处花费一番功夫 ...从前,有一个程序员....他的名字叫magicsoar 为什么有时会出现aaa已在bbb中重定义的错误? 为什么有时会出现无法解析的外部符号? ...