一、一维数组和二维数组

这是一个一维数组, 里面的每一个元素,都是一个基本类型int

int a[] =new
int[]{1,2,3,4,5};

这是一个二维数组,里面的每一个元素,都是一个一维数组

所以二维数组又叫数组的数组

int b[][] = new
int[][]{

{1,2,3},

{4,5,6},

{7,8,9}

};

二、初始化二维数组

public class HelloWorld {

public static
void main(String[] args) {

//初始化二维数组,

int[][] a = new
int[2][3]; //有两个一维数组,每个一维数组的长度是3

a[1][2] = 5;  //可以直接访问一维数组,因为已经分配了空间

//只分配了二维数组

int[][] b = new
int[2][]; //有两个一维数组,每个一维数组的长度暂未分配

b[0]  =new
int[3]; //必须事先分配长度,才可以访问

b[0][2] = 5;

//指定内容的同时,分配空间,没有指定有几个一维数组,也没有指定数组的长度

int[][] c = new
int[][]{

{1,2,4},

{4,5},

{6,7,8,9}

};

}

}

三、练习--二维数组

题目:

定义一个5X5的二维数组。 然后使用随机数填充该二维数组。

找出这个二维数组里,最大的那个值,并打印出其二维坐标

0-100的 随机整数的获取办法有多种,下面是参考办法之一:

(int) (Math.random() * 100)

Math.random() 会得到一个0-1之间的随机浮点数,然后乘以100,并强转为整型即可。

实现效果:

官方示例代码:

public class HelloWorld {

public static
void main(String[] args) {

int a[][] = new
int[5][5];

// 初始化这个数组

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a[i].length; j++) {

a[i][j] = (int) (Math.random() * 100);

}

}

// 打印这个数组的内容:

for (int[] row : a) {

for (int each : row) {

System.out.print(each + "\t");

}

System.out.println();

}

int max = -1;// 最大值

// 最大值的坐标

int target_i = -1;

int target_j = -1;

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a[i].length; j++) {

if (a[i][j] > max) {

max = a[i][j];

target_i = i;

target_j = j;

}

}

}

System.out.println("找出来最大的是:" + max);

System.out.println("其坐标是[" + target_i + "][" + target_j + "]");

}

}

个人整理代码:

public class Array06 {

public static
void main(String[] args) {

TwoDimensionalArrayExercise();

}

public static
void InitializeATwoDimensionalArray(){

// 初始化二维数组

int[][] a = new
int[2][3];//意思是创建了一个有两个一维数组的二维数组,每个一维数组的长度是3

a[1][2] = 5; // 可以直接访问一维数组,因为已经分配了空间

//只分配了二维数组

int [][] b = new
int[2][];  // 有两个一维数组,每个一维数组的长度暂未分配

b[0] = new
int[3];  //必须事先对一维数组进行分配长度,才可以访问

b[0][2] = 5;

// 指定内容的同时,分配空间

int [][]  c = new
int[][]{

};

}

public static
void TwoDimensionalArrayExercise(){

int [][] a = new
int[5][5];

// 初始化这个数组

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a.length; j++) {

a[i][j] = (int)(Math.random()*100); //Math.random() 会得到一个0-1之间的随机浮点数

}

}

// 打印这个数组的元素值

for (int[] twoEach : a) {

for (int oneEach : twoEach) {

System.out.println(oneEach);

}

System.out.println("--------------------------------------------");

}

int max = -1;   //假定,初始的需要寻找的最大值为-1   (给这个不可能出现的值,方便后面寻找变换)

// 最大值的坐标

int target_i = -1;

int target_j = -1;

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a.length; j++) {

if (a[i][j] > max) {

max = a[i][j];

target_i = i;

target_j = j;

}

}

}

System.out.println("找出来的二维数组最大值是:" + max);

System.out.println("该最大值的坐标是:[" + target_i + "," + target_j +"]");

}

}

Java知识系统回顾整理01基础06数组06二维数组的更多相关文章

  1. Java知识系统回顾整理01基础04操作符06三元运算符

    一.三元运算符 表达式?值1:值2 如果表达式为真 返回值1 如果表达式为假 返回值2 if语句学习链接:if语句 public class HelloWorld { public static vo ...

  2. Java知识系统回顾整理01基础03变量06变量的作用域

    一.变量根据所处的位置对应不同的名称 变量处于不同的位置,有不同的名称 名称分别是  字段,属性 参数 局部变量 不同名称的变量,其作用域是不一样的 二.字段,属性,Field 当一个变量被声明在类下 ...

  3. Java知识系统回顾整理01基础06数组07数组工具类Arrays

    一.Arrays简介 Arrays是针对数组的工具类,可以进行 排序,查找,复制填充等功能. 大大提高了开发人员的工作效率. 二.Arrays提供的数组复制方法 与使用System.arraycopy ...

  4. Java知识系统回顾整理01基础06数组01创建数组

    一.数组定义 定义:数组是一个固定长度的,包含了相同类型数据的 容器 二.声明数组 int[] a; 声明了一个数组变量. []表示该变量是一个数组 int 表示数组里的每一个元素都是一个整数 a 是 ...

  5. Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序

    一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...

  6. Java知识系统回顾整理01基础06数组03排序

    一.选择法排序 选择法排序的思路: 把第一位和其他所有的进行比较,只要比第一位小的,就换到第一个位置来 比较完后,第一位就是最小的 然后再从第二位和剩余的其他所有进行比较,只要比第二位小,就换到第二个 ...

  7. Java知识系统回顾整理01基础06数组02初始化数组

    一.分配空间与赋值分步进行 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { int[] a ...

  8. Java知识系统回顾整理01基础06数组05复制数组

    数组的长度是不可变的,一旦分配好空间,是多长,就多长,不能增加也不能减少 一.复制数组 把一个数组的值,复制到另一个数组中 System.arraycopy(src, srcPos, dest, de ...

  9. Java知识系统回顾整理01基础06数组04增强型for循环

    增强型for循环在遍历一个数组的时候会更加快捷 一.增强型for循环 注:增强型for循环只能用来取值,却不能用来修改数组里的值 public class HelloWorld { public st ...

随机推荐

  1. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  2. Android Studio相关目录

    Android Studio的Android SDK的安装路径 /Users/XXX/Library/Android/sdk/ nox_adb.exe connect 127.0.0.1:62001 ...

  3. 发送信息到邮箱的第三方扩展库PHPMailer使用方法

    一.下载 使用composer下载PHPMailer :composer require phpmailer/phpmailer 二.使用实例 use PHPMailer\PHPMailer\PHPM ...

  4. 【原创】如何优雅的转换Bean对象

    背景 我们的故事要从一个风和日丽的下午开始说起! 这天,外包韩在位置上写代码-外包韩根据如下定义 PO(persistant object):持久化对象,可以看成是与数据库中的表相映射的 java 对 ...

  5. Activiti7 流程部署

    首先先绘制一个流程图 创建bpmn文件 然后绘制好节点 然后修改节点信息 指定负责人 点击背景,修改ID和名称 保存 然后重命名成xml 使用diagram打开 导出png 然后包xml改回bpmn ...

  6. 用于测试 JsonAnalyzer2 1.01版的测试用例

    14. 原文={"animal":"ca,t","color":"ora:nge","isMale" ...

  7. 转贴:修改springboot控制台输出的图案

    Post from:https://blog.csdn.net/WXN069/article/details/90667668 修改springboot控制台输出的图案1.在src\main\reso ...

  8. adb安装apk包提示protocol failure问题

    截图来自CSDN,待验证

  9. 现有 Vue.js 项目快速实现多语言切换的一种思路

    Web 项目多语言(i18n,即国际化)是比较常见的需求,常规的做法大概有以下几种: 每种语言单独开发页面,适用于 CMS 之类的网站 多语言文本和页面结构分离,运行时动态替换.适用于单页应用(SPA ...

  10. 国产化之路-麒麟V10操作系统安装.net core 3.1 sdk

    随着芯片国产化,操作系统国产化,软件国产化的声浪越来越高,公司也已经把开发项目国产化提上了日程,最近搞来了台长城的国产化电脑主机,用来搞试验,安装的是麒麟V10的操作系统,国产化折腾之路就此开始,用的 ...