基础篇-1.5Java的数组
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};
3 使用数组
由于数组的元素类型和数组大小都是确定的,所以使用数组时可以直接使用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的数组的更多相关文章
- 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
- vue基础篇---修改对象或数组的值,页面实时刷新
这个问题估计大家很难想到,如果一个数组[1,2,3,4],然后我们v-for遍历,我们改变数组的值,arr[1] = 5 ,难道不应该改变么?按理说根据vue的特性应该是改变的,但是事实上确实数组已经 ...
- 前端总结·基础篇·JS(二)数组深拷贝、去重以及字符串反序和数组(Array)
目录 这是<前端总结·基础篇·JS>系列的第二篇,主要总结一下JS数组的使用.技巧以及常用方法. 一.数组使用 1.1 定义数组 1.2 使用数组 1.3 类型检测 二.常用技巧 2.1 ...
- iOS10 推送必看(基础篇)
虽然这篇文章比较长,也不好理解,但是还是建议大家收藏,以后用到的时候,可以看看,有耐心的还是读一读. 这篇文章开始,我会跟大家好好讲讲,苹果新发布的iOS10的所有通知类. 一.创建本地通知事例详解: ...
- oracle(sql)基础篇系列(五)——PLSQL、游标、存储过程、触发器
PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语 ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)
http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...
- 【转载】 Spark性能优化指南——基础篇
转自:http://tech.meituan.com/spark-tuning-basic.html?from=timeline 前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能 ...
- 【转】Spark性能优化指南——基础篇
http://mp.weixin.qq.com/s?__biz=MjM5NDMwNjMzNA==&mid=2651805828&idx=1&sn=2f413828d1fdc6a ...
随机推荐
- 洛谷 2197 nim游戏
题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取完,不能不取.每次只能从一堆里 ...
- 安装elasticsearch-head插件
安装node ###下载 wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz ### 解压 tar xvf nod ...
- 使用Eclipse的Working Set管理项目
想必大家的Eclipse里也会有这么多得工程...... 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条......有点不和谐了. ...
- Cesium官方教程9--粒子系统
原文地址:https://cesiumjs.org/tutorials/Particle-Systems-Tutorial/ 粒子系统介绍 这篇教程带你学习Cesium的粒子相关API,比如如何在你的 ...
- Lombock原理
说道Lombok,可能会鲜为人知.但是在实际的开发中,它起到了很大的作用,话不多说,直入正题: 一.Lombok是什么 现在看一下Lombok官方对其进行的解释:Lombok官网:https://pr ...
- mysql查看执行计划重构后的查询
MYSQL优化器会对客服端发送的SQL语句进行优化,优化后的SQL语句再被MYSQL执行.然后我们在优化SQL的时候,怎么获取到MYSQL优化后执行语句呢. EXPLAIN select * from ...
- IT外包概要
IT外包 前两天和朋友聊起这个外包的问题,就顺便给他说了一下,自己也整理了一下,发出来,方便更多的人. 如果有说的不准确的地方欢迎大家补充分享. 大致分两种: 项目外包, 人力外包. 简而言之:项目外 ...
- 提示框插件layer的使用讲解
官方网站:http://layer.layui.com/ 在页面中引入: <script src="js/layer-v3.0.3/layer/layer.js">&l ...
- 英语-汉语600句-会见:Making an Appointment/约会
ylbtech-英语-汉语600句-会见:Making an Appointment/约会 1.返回顶部 1. Making an Appointment/约会1.喂,请问是哪位?Hello, who ...
- 转:linux驱动开发的经典书籍
源地址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为 ...