基础篇-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 ...
随机推荐
- thinkphp 快捷查询
快捷查询方式是一种多字段查询的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如: 大理石平台价格 一.不同字段相同的 ...
- C# StructLayout(LayoutKind.Sequential)]
结构体是由若干成员组成的.布局有两种1.Sequential,顺序布局,比如struct S1{ int a; int b;}那么默认情况下在内存里是先排a,再排b也就是如果能取到a的地址,和b的 ...
- 《DSP using MATLAB》Problem 8.30
10月1日,新中国70周岁生日,上午观看了盛大的庆祝仪式,整齐的方阵,先进的武器,尊敬的先辈英雄,欢乐的人们,愿我们的 国家越来越好,人民生活越来越好. 接着做题. 代码: %% ---------- ...
- linux 备份最近一天的文件
#!/bin/bash #备份在最近一天修改的文件 #date 获取日期 +%Y-%m-%d 设置日期格式为yyyy-mm-dd的形式 BACKFILE=backup-$(date +%Y-%m-%d ...
- matlab 实现感知机线性二分类算法(Perceptron)
感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = ...
- mybatis使用Example进行条件查询
参考: https://www.cnblogs.com/zhemeban/p/7183061.html Example类是什么? Example类指定如何构建一个动态的where子句. 表中的每个no ...
- 【核心核心】5.Spring【DI】注解方式
使用注解的方式依赖注入不用提供set方法 1.普通类型的注解 @Value @Value(value="春天") private String name; 2.对象类型的注解 @A ...
- Odoo文档管理/知识管理应用实践 - 上传附件
测试环境: Odoo8.0 Odoo中的文档管理/知识管理可用于保存采购.销售.生产等一系列业务流程中产生的文件.凭证,可关联到具体的每一笔业务操作:也能用于管理公司的合同.资料,创建知识库以分享内部 ...
- RxJS 入门指引和初步应用
作者:徐飞链接:https://zhuanlan.zhihu.com/p/25383159来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. RxJS是一个强大的React ...
- PAT甲级——A1029 Median
Given an increasing sequence S of N integers, the median is the number at the middle position. For e ...