数组(初识、创建数组、数组的元素、数组的变量)
数组
数组:数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。
初识数组
如何写一个程序计算用户输入的数字的平均数?
Scanner in = new Scanner(System.in);
int x;
double sum = 0;
int cnt = 0;
x = in.nextInt();
while( x != -1 )
{sum += x;cnt++;x = in.nextInt();
}
if (cnt > 0)
{System.out.println(sum/cnt);
}
不需要记录输入的每一个数
可是
如何写一个程序计算用户输入的数字的平均数,并输出所有大于平均数的数?
必须先记录每一个输入的数字,计算平均数之后,再检查记录下来的每一个数字,与平均数比较,决定是否输出
import java.util.Scanner;
public class Demo01{public static void main(String[] args){Scanner in = new Scanner(System.in);int x;int[] numbers = new int[100]; //定义数组int cnt = 0;double sum = 0;x = in.nextInt();while(x != -1){numbers[cnt] = x; //对数组中的元素赋值// numbers[2] = x;sum += x;cnt++;x = in.nextInt();}if(cnt > 0){double average = sum/cnt;for(int i = 0; i < cnt; i++) //遍历数组{if( numbers[i] > average) //使用数组中的 元素{System.out.println(numbers[i]);}}System.out.println(sum/cnt);}
}
}
这个程序存在安全隐患是什么?
这个程序是危险的,因为输入的数据可能超过100个
创建数组
数组
是一种容器(放东西的东西),特别是:
其中的所有的元素具有相同的数据类型;
一旦创建,不能改变大小
数组
数组是一种数据结构,能记录同一种类型的多个数据
数组中的每个数据叫做元素
所有的元素具有相同的数据类型
定义数组变量
int[] a = new int[10]
数组的元素
每个元素都是那种类型的变量
索引或下标是从0开始的
grades[0] grades[99] average[5]
有效的下标
例:
// 范围0~99 错误
定义数组变量
<类型>[] <名字> = new <类型>[元素个数];
int[] grades = new int[100]; double[] averages = new double[20];
元素个数必须是整数
元素个数必须给出
元素个数可以是变量
修改:
import java.util.Scanner;
public class Demo02 {public static void main(String[] args){Scanner in = new Scanner(System.in);double sum = 0;int cnt = 0;cnt = in.nextInt();if( cnt > 0 && cnt != -1 ){int[] numbers = new int[cnt];for( int i = 0; i < cnt; i++ ){numbers[i] = in.nextInt();sum += numbers[i];}double average = sum / cnt;for (int i = 0; i < cnt; i++){if (numbers[i] > average){System.out.println(numbers[i]);}}System.out.println(sum / cnt);}}}
}
length
每个数组有一个内部成员length,会告诉你它的元素的数量
for( i = 0; i < 100; ++i )
{sum += grade[i];
}
最好是:
for( i = 0; i < grade.length; ++i )
{sum += geade[i];
}
例:
for( int i = 0; i < cnt; i++ )
//改为
for( int i = 0; i < numbers.length; i++ )
//好处:for循环是来便利这个numbers数组的,只要numbers数组在,这个length总是在。 (.length永远是.length)
//这个循环是具有可扩展性的
数组变量
直接初始化数组
new创建的数组会得到默认的0值
int[] scores = {87,98,69,54,65,76,87,99};
直接用大括号给出数组的所有元素的初始值
不需要给出数组的大小,编译器替你数数
import java.util.Scanner;
public class Demo03 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int[] scores = {87, 98, 69, 54, 65, 76, 87, 99};System.out.println(scores.length);for( int i = 0; i<scores.length; i++ ){System.out.print(scores[i]+" ");}}
}
数组变量赋值
import java.util.Scanner;
public class Demo04 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int[] a = new int[10];a[0] = 5;int[] b = a;System.out.println(a[0]); //5b[0] = 16;System.out.println(b[0]); //16System.out.println(a[0]); //16}
}
问题:a1[0] 是1还是2呢?
答案是:2
Scanner in = new Scanner(System.in);int[] a = {1,2,3,4,5};int[] b = {1,2,3,4,5};System.out.println(a==b); //false
复制数组
必须遍历源数组将每个元素逐一拷贝给目的数组
import java.util.Scanner;
public class Demo05 {public static void main(String[] args) {Scanner in = new Scanner(System.in);int[] a = {1,2,3,4,5};int[] b = new int[a.length];for ( int i = 0; i<b.length; i++ ){b[i] = a[i];}boolean isEqu = true;for( int i=0; i<b.length; i++){if( a[i] != b[i] ){isEqu = false;break;}}System.out.println(isEqu); //true}
}
数组(初识、创建数组、数组的元素、数组的变量)相关推荐
- c语言2维动态数组,如何创建一个动态2维数组?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void **darray_new(int row,int col,int size_t){ voi ...
- matlab 高维数组赋值,MATLAB之三(高)维数组的创建
使用下标创建 习惯的,将二维数组的第一维称为行,第二维称为列,对于三维数组的第三维称为页.三维以及三维以上的数组称为高维数组,由于高维数组比较抽样,这里主要以三维数组为例介绍如何创建高维数组.%显示A ...
- 二维数组 类型_Java第六章 | 二维数组的创建及使用、数组排序算法
二维数组的创建及使用 1.二维数组的创建 2.二维数组初始化 3.使用二维数组 二维数组的创建 声明二维数组的方法有两种,语法如下所示: 数组元素类型 数组名字[ ][ ]; 数组元素类型[ ][ ] ...
- php学习笔记-php数组的创建和使用,数组常用函数-day03
php数组的创建和使用,数组常用函数 数组的概念 一维数组的创建和使用 1.直接将变量声明为数组元素 2.通过array()函数来创建一维数组 3.数组的元素值的访问 4.数组元素的赋值方式 5.数组 ...
- 【C语言数组】数组的创建和初始化 内存中的存储 冒泡排序 sizeof 数组名
test 一.一维数组的创建和初始化 1.数组的创建 2.数组初始化 2.1.不完全初始化 2.2.不初始化 3.一维数组的使用 3.1.用下标打印1-10 3.2.sizeof 计算数组的元素个数 ...
- JAVA不同类型数组重载_方法的重载;数组 (Java Day05)
一,方法的重载 概念:在一个类中,拥有多个方法名相同,参数列表不同的方法的现象叫做方法的重载 特征: 1.在同一个类中 2.方法名相同 ...
- Excel的数组:概念、基本使用(数组计算、理解数组、产生数组、综合运用)
文章目录 一.概念 1.简介 2.特点 3.分类 4.创建 二.基本使用 1.数组计算 2.理解数组 3.公式产生数组 4.BA列数据之差的均值 5.计算正数之和 6.判断身份证长度是否正确 7.多条 ...
- c语言json数组转字符串数组,Json数组转换字符串、字符串转换原数组......
Title 标题: 颜色: 字体: 合并数组,改变原数组apply与不改变原数组 一看见合并数组,可能第一反应就是concat,concat确实具有我们想要的行为,但它实际上并不附加到现有数组,而是创 ...
- cmake字符串转数组_掌握常用的数据结构之数组和字符串
点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 数组和字符串 所谓数组,是有序的元素序列.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用 ...
- 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)
数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...
最新文章
- 不允许程序员透露薪资!!!凭啥?
- 解决: is not accessible from java.lang.Class android.app.AppComponentFactory
- Xamarin Android项目提示SDK版本太老
- ASP.NET(C#) 四舍五入、进一法、舍位(取整,舍去小数,向负无穷舍入)函数
- mysql怎么给表设置查询语句_MySQL查询语句简单操作示例
- 使用Atom快速打造好用的Markdown编辑器
- ZZULIOJ 1062:最大公约数
- 机器学习算法(7)——K近邻(KNN)、K-means、模糊c-均值聚类、DBSCAN与层次与谱聚类算法
- Alluxio2.X简要介绍
- RINEX 3.04
- pig的安装、pig的数据模型和pig的常用命令
- 只能打单面的打印机如何打双面
- 一台pc计算机系统启动不了,电脑装系统引导不进去怎么办
- 盘点5月份GitHub上最热门的开源项目
- Git 强制更新覆盖本地代码
- springboot使用Cassandra组合查询数据
- Java数据同步方案
- android linux pthread_cancel,Android NDK缺失pthread_cancel和pthread_setcancelstate
- loh4j整合flume(log4jsource)
- 谷歌adwords—点击诱饵被拒登