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. 20172321 20172333 2017-2018 暑假作业APP

    20172321 20172333 2017-2018 暑假作业APP 项目介绍 项目成员 吴恒佚 20172321 严域俊 20172333 项目简介 从理论上来说,这是一个贪吃蛇游戏. <贪 ...

  2. Backlog和冲刺结果以及产品Demo市场调研

    Backlog和第一阶段冲刺结果以及产品Demo 博客停更了一段时间,但是我们团队没有闲着,现在一次性汇报团队工作进度,Backlog和第一阶段冲刺结果以及产品Demo. 在一段时间的分工合作以及调整 ...

  3. Eclipse安卓开发环境

    首先,安卓开发就要搭建安卓开发环境,现在可能流行用AS,但是由于个对eclipse恐惧感比较小一点就选择了Eclipse: 大致流程: 1.安装java开发工具包(JDK): 2.Eclipse集成开 ...

  4. Java通用oracle和mysql数据库连接

    Java中oracle数据库连接写一个通用类UBUtil(){} import java.io.InputStream; import java.sql.*; import java.util.Pro ...

  5. Scrum Meeting Beta - 5

    Scrum Meeting Beta - 5 NewTeam 2017/12/4 地点:主楼2楼走廊 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了离线状态进入app的功能 实现离线状态读取本 ...

  6. PAT 甲级 1137 Final Grading

    https://pintia.cn/problem-sets/994805342720868352/problems/994805345401028608 For a student taking t ...

  7. 字符串经过base64编码后的长度与原字符串的长度是什么关系呀?

    beforeEncode为Encode之前的字符串 那么Encode后的字符串长度为: 1.如果beforeEncode.length()是3的整数倍,那么长度为  (beforeEncode.len ...

  8. python 创建目录

    Python对文件的操作还算是方便的,只需要包含os模块进来,使用相关函数即可实现目录的创建. 主要涉及到三个函数 1.os.path.exists(path) 判断一个目录是否存在 2.os.mak ...

  9. Linux限制cpu睿频&限制频率

    .关闭睿频 > /sys/devices/system/cpu/intel_pstate/no_turbo .限制CPU最大频率到50% " | sudo tee /sys/devic ...

  10. Sysprep错误一则

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