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. 实验五Java网络编程及安全

    实验五 Java网络编程及安全 结对伙伴:20135231林涵锦(负责服务器方)http://www.cnblogs.com/20135213lhj/  实验目的与要求: 1.掌握Java网络编程的方 ...

  2. Task 4.4二维环形数组求最大子矩阵之和

    任务: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数 ...

  3. SqlHelper类的编写

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  4. Java 使用 DBCP mysql 连接池 做数据库操作

    需要的jar包有 commons-dbutils , commons-dbcp , commons-pool , mysql-connector-java 本地database.propertties ...

  5. ACM数论之旅17---反演定理 第一回 二项式反演(神说要有光 于是就有了光(´・ω・`))

    终于讲到反演定理了,反演定理这种东西记一下公式就好了,反正我是证明不出来的~(-o ̄▽ ̄)-o 首先,著名的反演公式 我先简单的写一下o( ̄ヘ ̄*o) 比如下面这个公式 f(n) = g(1) + g ...

  6. linux中inittab文件详解

    init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/ ...

  7. DB磁盘满导致Zabbix Server Crash一例

    故障描述 今天线上zabbix出现几次数据中断的情况,经排查为DB服务器磁盘空间不足导致的.还好我们目前我们zabbix,falcon两套监控系统并存,哈哈. 故障排查过程没什么技术含量,简单的将故障 ...

  8. 腾讯下载的视频qlv格式转化为MP4格式

    最近在看腾讯视频的时候发现下载下来的视频格式都是qlv格式,且不能用其他播放器播放,甚是恼怒,网上找了很多方法都很繁琐,于是自己写了一个小程序来处理这个问题.把下载下来的qlv格式转化为MP4格式 首 ...

  9. P4596 [COCI2011-2012#5] RAZBIBRIGA

    题目描述 四个等长的单词可以放在一起构成一个正方形,两个单词水平放置,两个竖直放置.水平单词只能从左往右读,竖直的单词只能从上往下读.四个角共用一个字母. 图中是由单词HLAD,NIVA,HSIN,D ...

  10. JVM类加载机制详解(二)类加载器与双亲委派模型

    在上一篇JVM类加载机制详解(一)JVM类加载过程中说到,类加载机制的第一个阶段加载做的工作有: 1.通过一个类的全限定名(包名与类名)来获取定义此类的二进制字节流(Class文件).而获取的方式,可 ...