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. BugPhobia展示篇章:学霸在线系统Alpha阶段展示

    0x00:序言 1 universe, 9 planets, 204 countries,809 islands, 7 seas, and i had the privilege to meet yo ...

  2. Java程序设计实验 实验五

    课程:Java程序设计实验   班级:1353  姓名:符余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015. ...

  3. ubuntu16.04+opencv3.0.0

    基本步骤: http://blog.csdn.net/xuezhisdc/article/details/48691797 报错: http://www.jianshu.com/p/68ac83436 ...

  4. 学习Web Service、wcf、webapi的区别

    csdn:关于wcf,webservice,webapi或者其他服务或者接口有什么区别. wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们 ...

  5. python learning2.py

    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] # 取前3个元素的笨方法 r = [] n = 3 for i in range(n): r.appe ...

  6. 消息队列第二篇:MessageQueue实战(课程订单)

    上一篇:消息队列介绍 本篇一开始就上代码,主要演练MessageQueue的实际应用.用户提交订单(消息发送),系统将订单发送到订单队列(Order Queue)中:订单管理系统(消息接收)端,监听消 ...

  7. Sysprep错误一则

    准备搭建一台基于Windows2008的域控,通过ISO文件装完系统后,照例使用Windows Update打全了补丁.同时,考虑到经常使用Powershell,所以手动再装上了PS5.1 .因为准备 ...

  8. 开源自己实现一个.net rpc框架 - Machete.Rpc

    Machete.Rpc Machete.Rpc 是一个轻量级的Rpc(远程过程调用的)框架.底层代理使用了Emit提高了效率,底层通信采用DotNetty框架以提升通信的效率.目前正在逐步完善中. G ...

  9. java递归方法求数组最大元素

    一直对递归写法不是很熟悉,特写一个增进理解 /** * Created by Administrator on 2017-11-01. */ public class recursion { priv ...

  10. 【JQuery】JQuery属性

    一.前言         接着上一章的内容,继续本章的学习. 二.内容 $().jquery 返回的字符串包含jquery的版本号 jQuery.fx.interval 改变以毫秒计的动画运行速率 j ...