数组

数组:数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。

初识数组

  • 如何写一个程序计算用户输入的数字的平均数?

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}
}

数组(初识、创建数组、数组的元素、数组的变量)相关推荐

  1. c语言2维动态数组,如何创建一个动态2维数组?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include void **darray_new(int row,int col,int size_t){ voi ...

  2. matlab 高维数组赋值,MATLAB之三(高)维数组的创建

    使用下标创建 习惯的,将二维数组的第一维称为行,第二维称为列,对于三维数组的第三维称为页.三维以及三维以上的数组称为高维数组,由于高维数组比较抽样,这里主要以三维数组为例介绍如何创建高维数组.%显示A ...

  3. 二维数组 类型_Java第六章 | 二维数组的创建及使用、数组排序算法

    二维数组的创建及使用 1.二维数组的创建 2.二维数组初始化 3.使用二维数组 二维数组的创建 声明二维数组的方法有两种,语法如下所示: 数组元素类型 数组名字[ ][ ]; 数组元素类型[ ][ ] ...

  4. php学习笔记-php数组的创建和使用,数组常用函数-day03

    php数组的创建和使用,数组常用函数 数组的概念 一维数组的创建和使用 1.直接将变量声明为数组元素 2.通过array()函数来创建一维数组 3.数组的元素值的访问 4.数组元素的赋值方式 5.数组 ...

  5. 【C语言数组】数组的创建和初始化 内存中的存储 冒泡排序 sizeof 数组名

    test 一.一维数组的创建和初始化 1.数组的创建 2.数组初始化 2.1.不完全初始化 2.2.不初始化 3.一维数组的使用 3.1.用下标打印1-10 3.2.sizeof 计算数组的元素个数 ...

  6. JAVA不同类型数组重载_方法的重载;数组 (Java Day05)

    一,方法的重载 概念:在一个类中,拥有多个方法名相同,参数列表不同的方法的现象叫做方法的重载 特征: ​            1.在同一个类中 ​            2.方法名相同 ​     ...

  7. Excel的数组:概念、基本使用(数组计算、理解数组、产生数组、综合运用)

    文章目录 一.概念 1.简介 2.特点 3.分类 4.创建 二.基本使用 1.数组计算 2.理解数组 3.公式产生数组 4.BA列数据之差的均值 5.计算正数之和 6.判断身份证长度是否正确 7.多条 ...

  8. c语言json数组转字符串数组,Json数组转换字符串、字符串转换原数组......

    Title 标题: 颜色: 字体: 合并数组,改变原数组apply与不改变原数组 一看见合并数组,可能第一反应就是concat,concat确实具有我们想要的行为,但它实际上并不附加到现有数组,而是创 ...

  9. cmake字符串转数组_掌握常用的数据结构之数组和字符串

    点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 数组和字符串 所谓数组,是有序的元素序列.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用 ...

  10. 前端:JS/20/数组(数组的概念,数组元素,数组索引,数组元素的访问,数组的长度,数组的创建方法,数组的操作,实例:使用数组保存个人信息,实例:求数组所有值的平均值,数组对象的length属性)

    数组 1,数组的概念 一组值(或对象)的集合,称为"数组": var arr =[10,20,30,50]; var arr =["张三","男&qu ...

最新文章

  1. 不允许程序员透露薪资!!!凭啥?
  2. 解决: is not accessible from java.lang.Class android.app.AppComponentFactory
  3. Xamarin Android项目提示SDK版本太老
  4. ASP.NET(C#) 四舍五入、进一法、舍位(取整,舍去小数,向负无穷舍入)函数
  5. mysql怎么给表设置查询语句_MySQL查询语句简单操作示例
  6. 使用Atom快速打造好用的Markdown编辑器
  7. ZZULIOJ 1062:最大公约数
  8. 机器学习算法(7)——K近邻(KNN)、K-means、模糊c-均值聚类、DBSCAN与层次与谱聚类算法
  9. Alluxio2.X简要介绍
  10. RINEX 3.04
  11. pig的安装、pig的数据模型和pig的常用命令
  12. 只能打单面的打印机如何打双面
  13. 一台pc计算机系统启动不了,电脑装系统引导不进去怎么办
  14. 盘点5月份GitHub上最热门的开源项目
  15. Git 强制更新覆盖本地代码
  16. springboot使用Cassandra组合查询数据
  17. Java数据同步方案
  18. android linux pthread_cancel,Android NDK缺失pthread_cancel和pthread_setcancelstate
  19. loh4j整合flume(log4jsource)
  20. 谷歌adwords—点击诱饵被拒登

热门文章

  1. Linux SWAP 交换分区配置说明
  2. 对数组进行“整体赋值”
  3. 双通道中频信号数字下变频及相位差估计(FPGA)
  4. 解决网页文字不能复制的方法
  5. 有没有能够在待办事项完成后标记任务已完成的每日计划APP?
  6. CAPP集成化工艺设计与管理系统
  7. 史上最简单的springcloud微服务入门实例,满足企业日常需求,开箱即用,工资翻倍不是梦...
  8. J2EE技术简单介绍
  9. 阿里巴巴Java开发手册 (Alibaba Java Coding Guidelines)
  10. 匿名内部类的格式和理解