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. python requests 高级用法 -- 包括SSL 证书错误的解决方案

    Session Objects会话对象 Session对象在请求时允许你坚持一定的参数.此外,还坚持由Session实例的所有请求的cookie. 让我们坚持在请求时使用 s = requests.S ...

  2. leetcode-137-只出现一次的数字②

    题目描述: 方法一:数学 class Solution: def singleNumber(self, nums: List[int]) -> int: return (sum(set(nums ...

  3. day1-初识Python以及环境搭建

    ---恢复内容开始--- 为什么学习Python? 软件质量:python的可读性很强,易于理解,非常接近于人类的自然语言. 提高开发者效率:相当于C,C++和JAVA等编译/静态型语言,Python ...

  4. Python3基础笔记_列表

    # Python 列表(List) list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5] list3 = [&quo ...

  5. 0906NOIP模拟测试赛后总结

    我进前十辣.然而有10个大佬去学LCT了于是没有考试. Dybala神和exzkt神分-rank1,奶风神和林哥分-rank3,wc.miemeng和DuanYue神140分-rank5. 我.ooo ...

  6. VMware的下载安装

    在学习使用LINNX系统之前,先在自己的电脑上安装一个虚拟机,流行的虚拟机软件有VMware(VMWare ACE).Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出 ...

  7. C#可扩展编程之MEF(四):见证奇迹的时刻

      前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往 ...

  8. CoreData手动创建托管对象子类时报错

    1.具体问题 手动创建CoreData,在进行创建托管对象子类时出现报错如图: 2.解决方法 当使用CoreData时,Xcode自动管理实体类,文件都放在Derived Data文件夹中: 所以不需 ...

  9. solusvm 主控端迁移

    难点在于solusvm被控端已经开了小鸡的情况. 备份数据库: #!/bin/sh ## Vars CONF=/usr/local/solusvm/includes/solusvm.conf FILE ...

  10. centos 以太坊多节点私链搭建

    环境  centos 7   搭建 3 个节点的 私链. 第一步 安装 一些依赖的 工具 yum update -y && yum install git wget bzip2 vim ...