1 引言

每一种编程语言都有其自身的数组概念,大同小异,都是为了存储一堆数据,而Java的数组是用来存储相同类型的数据,如声明一个arr[10]数组,可以用来代替声明10个变量。

2 声明和创建数组

在使用数组之前,必须得声明和创建数组,下面看下如何声明和创建数组。

声明数组

dataType[] array; // 首选的方法

dataType array[]; // 效果相同,但不是首选方法,为了让C或C++程序员能够更快速地了解Java

示例:

int[] array;

int array[];

创建数组

方法一:

array = new dataType[arraySize];

创建类型为dataType,数量为arraySize的数组,并赋值给array变量。

示例:array = new int[10];

方法二:

array = {value0, value1, value2 ... valuek};

直接创建数组并给数组中的各个元素赋值value0,value1,value2...valuek。

示例:array = {10, 20, 30, 40, 50};

说明:

array[0] -> 10

array[1] -> 20

array[2] -> 30

array[3] -> 40

array[4] -> 50

数组是通过数组索引来访问的,从0到arraySize-1,如array[0]到array[arraySize-1]。

我们可以直接通过如下方式,声明和创建数组:

int[] array = new int[10];

// 当然也可以如下这三种方法
int array[] = new int[10];
int array[] = {10, 20, 30};
int[] array = {10, 20, 30};

使用数组

由于数组的元素类型和数组大小都是确定的,所以使用数组时可以直接使用for循环或者增强型for循环。

public class MyList {

    public static void main(String[] args) {
int[] mylist = { 2, 3, 4, 5, 6, 7, 8 }; // 普通的for循环
for (int i = 0; i < mylist.length; i++) {
System.out.println(mylist[i]);
} System.out.println("------------------------黄金分割线--------------------------"); // 增强型for循环
for (int item : mylist) {
System.out.println(item);
}
} }

4 多维数组

多维数组可以看做是数组的数组,例如二维数组就是一个特殊的一维数组,二维数组中的每一个元素都是一个一维数组。

例如 int[][] list = {{2, 3, 4}, {12, 13, 14}}; 就是一个 new int[2][3] 的二维数组,创建两个长度为3的一维数组。

下面来看个实例:

public class MyFirst {

    public static void main(String[] args) {
int isize = 2;
int jsize = 5;
// 二维数组的声明,并且创建二维数组和赋值
int[][] arrList = new int[2][5]; // 赋值并打印出二维数组中的每一个值
for(int i=0; i<isize; i++) {
for(int j=0; j<jsize; j++) {
// 通过Math.random()创建随机小数,乘于10并且转为整型,则表示获取0到9的随机整数
arrList[i][j] = new Double(Math.random() * 10).intValue();
System.out.println("数组元素arrList[" + i + "][" + j + "]值为:" + arrList[i][j]);
}
} // 计算二维数组的所有值的总和
int sum = 0;
for(int i=0; i<isize; i++) {
for(int j=0; j<jsize; j++) {
sum += arrList[i][j];
}
}
System.out.println("sum:" + sum); // 比较出二维数组中的最大值
int max = arrList[0][0];
for(int i=0; i<isize; i++) {
for(int j=0; j<jsize; j++) {
if (max < arrList[i][j]) {
max = arrList[i][j];
}
}
}
System.out.println("max:" + max); } }

5 练习

通过for循环将九九乘法表打印出来,并将九九乘法表得出的各个结果保存到一个二维数组中。

在本次练习中,我们需要学会怎么去分析问题,怎么去把一个大问题划分为多个小问题,然后再逐个击破。这是我们以后开发项目时最基本的思维方式。在这里,我们或许还需要另外一种思维方式,以结果为导向的思维方式。

结果展示:

思路:

1.首先我们得想象一下最终打印出来的九九乘法表模样,或者说是构造,即以结果为导向的思维方式。

2.需要以一个二维数组来存储,那么这个二维数组的大小肯定就已经确定了是 new int[9][9] 。

3.这里一共有九行九列数据,故我们可以用一个长度为9的大循环包裹表示9行,在大循环中再用一个小循环表示一行中的每一列。

4.经过观察,我们还可以发现每一行中的列数都不同,故我们需要每完成一行的循环后,令列数加一。

代码如下:

public class MyList {

    public static void main(String[] args) {
int minVal = 1;
int maxVal = 9;
int size = 9;
int[][] list = new int[size][size]; // 每一行的大循环
for (int i=minVal; i<=maxVal; i++) {
// 一行中每一列的小循环
for(int j=1; j<=i; j++) {
list[j-1][i-1] = j*i;
System.out.print(j + "*" + i + "=" + list[j-1][i-1] + " ");
}
System.out.println();
} } }

基础篇-1.5Java的数组的更多相关文章

  1. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  2. vue基础篇---修改对象或数组的值,页面实时刷新

    这个问题估计大家很难想到,如果一个数组[1,2,3,4],然后我们v-for遍历,我们改变数组的值,arr[1] = 5 ,难道不应该改变么?按理说根据vue的特性应该是改变的,但是事实上确实数组已经 ...

  3. 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)

    目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...

  4. iOS10 推送必看(基础篇)

    虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可以看看,有耐心的还是读一读. 这篇文章开始,我会跟大家好好讲讲,苹果新发布的iOS10的所有通知类. 一.创建本地通知事例详解: ...

  5. oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器

      PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...

  6. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  7. 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

    http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...

  8. 【转载】 Spark性能优化指南——基础篇

    转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...

  9. 【转】Spark性能优化指南——基础篇

    http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...

随机推荐

  1. springboot与热部署

    在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费,我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎: 在Sprin ...

  2. Joomla - 权限系统(访问权限限制)

    Joomla - 权限系统,以下以全局配置的权限设置为例,每个扩展都有自己的权限设置

  3. markdown常用知识点

    为什么要用markdown写开发文档? 1.可以在git上在线预览,docx文档需要下载才能看见: 2. .md文档每次修改之后能被git管理,可追踪修改内容和修改人,但是docx不能追踪修改内容. ...

  4. iOS之UIGraphics.h方法简介

    // // UIGraphics.h // UIKit // // Copyright (c) 2005-2017 Apple Inc. All rights reserved. // #import ...

  5. PHP实现图片的汉明码提取与降维

    作者感言:数学不好,遇到算法问题分分钟狗带,毫无转寰的余地-_-||| 最近心血来潮,看了相似图片的搜索,最最最初级的方法即提取汉明码,之后匹配汉明距离.当然,在数以亿计的汉明码中,要筛出需要的图片, ...

  6. C# 判断当前请求是GET、还是POST ?

    方法一: HttpContext.Current.Request.RequestType == "POST"   //当前请求为:POST 方法二: if(Request.Serv ...

  7. vue:使用不同参数跳转同一组件,实现动态加载图片和数据,以及利用localStorage和vuex持久化数据

    需求:通过不同的参数复用同一组件,实现动态加载数据和图片,同时,在页面刷新时,图片依旧可以加载成功. 过程出现的bug和问题: 1.使用params传参后,再次刷新页面,参数丢失导致数据无法再次加载 ...

  8. 3.Spring框架中的标签与配置文件分离

    1.Spring框架中标签的配置 1. id属性和name属性的区别 * id -- Bean起个名字,在约束中采用ID的约束,唯一 * 取值要求:必须以字母开始,可以使用字母.数字.连字符.下划线. ...

  9. win10 安装face_recongnition

    1.安装dlib https://stackoverflow.com/questions/41912372/dlib-installation-on-windows-10 2.安装face_recon ...

  10. /etc/vimrc配置

    [root@guolicheng ~]# cat /etc/vimrc if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" s ...