如果希望保存一组有相同类型的数据,可以使用数组。

  数组的定义和内存分配

  Java 中定义数组的语法有两种:

  type arrayName[];

  type[] arrayName;

  type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量。例如:

  1. int demoArray[];

  2. int[] demoArray;

  这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择。

  与C、C++不同,Java在定义数组时并不为数组元素分配内存,因此[ ]中无需指定数组元素的个数,即数组长度。而且对于如上定义的一个数组是不能访问它的任何元素的,我们必须要为它分配内存空间,这时要用到运算符new,其格式如下:

  arrayName=new type[arraySize];

  其中,arraySize 为数组的长度,type 为数组的类型。如:

  复制纯文本新窗口

  1. demoArray=new int[3];

  为一个整型数组分配3个int 型整数所占据的内存空间。

  通常,你可以在定义的同时分配空间,语法为:

  type arrayName[] = new type[arraySize];

  例如:

  1. int demoArray[] = new int[3];

  数组的初始化

  你可以在声明数组的同时进行初始化(静态初始化),也可以在声明以后进行初始化(动态初始化)。例如:

  1. // 静态初始化

  2. // 静态初始化的同时就为数组元素分配空间并赋值

  3. int intArray[] = {1,2,3,4};

  4. String stringArray[] = {"微学苑", "http://www.weixueyuan.net", "一切编程语言都是纸老虎"};

  5.

  6. // 动态初始化

  7. float floatArray[] = new float[3];

  8. floatArray[0] = 1.0f;

  9. floatArray[1] = 132.63f;

  10. floatArray[2] = 100F;

  数组引用

  可以通过下标来引用数组:

  arrayName[index];

  与C、C++不同,Java对数组元素要进行越界检查以保证安全性。

  每个数组都有一个length属性来指明它的长度,例如 intArray.length 指明数组 intArray 的长度。

  【示例】写一段代码,要求输入任意5个整数,输出它们的和。

  1. import java.util.*;

  2. public class Demo {

  3. public static void main(String[] args){

  4. int intArray[] = new int[5];

  5. long total = 0;

  6. int len = intArray.length;

  7.

  8. // 给数组元素赋值

  9. System.out.print("请输入" + len + "个整数,以空格为分隔:");

  10. Scanner sc = new Scanner(System.in);

  11. for(int i=0; i<len; p="" i++){<="">

  12. intArray = sc.nextInt();

  13. }

  14.

  15. // 计算数组元素的和

  16. for(int i=0; i<len; p="" i++){<="">

  17. total += intArray;

  18. }

  19.

  20. System.out.println("所有数组元素的和为:" + total);

  21. }

  22. }

  运行结果:

  请输入5个整数,以空格为分隔:10 20 15 25 50

  所有数组元素的和为:120

  数组的遍历

  实际开发中,经常需要遍历数组以获取数组中的每一个元素。最容易想到的方法是for循环,例如:

  1. int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};

  2. for(int i=0,len=arrayDemo.length; i<len; p="" i++){<="">

  3. System.out.println(arrayDemo + ", ");

  4. }

  输出结果:

  1, 2, 4, 7, 9, 192, 100,

  不过,Java提供了”增强版“的for循环,专门用来遍历数组,语法为:

  1. for( arrayType varName: arrayName ){

  2. // Some Code

  3. }

  arrayType 为数组类型(也是数组元素的类型);varName 是用来保存当前元素的变量,每次循环它的值都会改变;arrayName 为数组名称。

  每循环一次,就会获取数组中下一个元素的值,保存到 varName 变量,直到数组结束。即,第一次循环 varName 的值为第0个元素,第二次循环为第1个元素......例如:

  1. int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};

  2. for(int x: arrayDemo){

  3. System.out.println(x + ", ");

  4. }

  输出结果与上面相同。

  这种增强版的for循环也被称为”foreach循环“,它是普通for循环语句的特殊简化版。所有的foreach循环都可以被改写成for循环。

  但是,如果你希望使用数组的索引,那么增强版的 for 循环无法做到。

  二维数组

  二维数组的声明、初始化和引用与一维数组相似:

  1. int intArray[ ][ ] = { {1,2}, {2,3}, {4,5} };

  2. int a[ ][ ] = new int[2][3];

  3. a[0][0] = 12;

  4. a[0][1] = 34;

  5. // ......

  6. a[1][2] = 93;

  java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。例如:

  1. int intArray[ ][ ] = { {1,2}, {2,3}, {3,4,5} };

  2. int a[ ][ ] = new int[2][ ];

  3. a[0] = new int[3];

  4. a[1] = new int[5];

  【示例】通过二维数组计算两个矩阵的乘积。

  1. public class Demo {

  2. public static void main(String[] args){

  3. // 第一个矩阵(动态初始化一个二维数组)

  4. int a[][] = new int[2][3];

  5. // 第二个矩阵(静态初始化一个二维数组)

  6. int b[][] = { {1,5,2,8}, {5,9,10,-3}, {2,7,-5,-18} };

  7. // 结果矩阵

  8. int c[][] = new int[2][4];

  9.

  10. // 初始化第一个矩阵

  11. for(int i=0; i<2; i++)

  12. for(int j=0; j<3 ;j++)

  13. a[j] = (i+1) * (j+2);

  14.

  15. // 计算矩阵乘积

  16. for (int i=0; i<2; i++){

  17. for (int j=0; j<4; j++){

  18. c[j]=0;

  19. for(int k=0; k<3; k++)

  20. c[j] += a[k] * b[k][j];

  21. }

  22. }

  23.

  24. // 输出结算结果

  25. for(int i=0; i<2; i++){

  26. for (int j=0; j<4; j++)

  27. System.out.printf("%-5d", c[j]);

  28. System.out.println();

  29. }

  30. }

  31. }

  运行结果:

  25 65 14 -65

  50 130 28 -130

  几点说明:

  · 上面讲的是静态数组。静态数组一旦被声明,它的容量就固定了,不容改变。所以在声明数组时,一定要考虑数组的最大容量,防止容量不够的现象。

  · 如果想在运行程序时改变容量,就需要用到数组列表(ArrayList,也称动态数组)或向量(Vector)。

  · 正是由于静态数组容量固定的缺点,实际开发中使用频率不高,被 ArrayList 或 Vector 代替,因为实际开发中经常需要向数组中添加或删除元素,而它的容量不好预估。(编辑:雷林鹏 来源:网络)

Java数组的定义和使用的更多相关文章

  1. JAVA数组的定义及用法

    数组是有序数据的集合,数组中的每一个元素具有同样的数组名和下标来唯一地确定数组中的元素. 1. 一维数组 1.1 一维数组的定义 type arrayName[]; type[] arrayName; ...

  2. java 数组声明定义 数组内存分配 数组初始化 数组引用 数组的遍历

    一,数组的定义 Java 中定义数组的语法有两种: 1. type arrayName[]; 2. type[] arrayName;type 为Java中的任意数据类型,包括基本类型和组合类型,ar ...

  3. 10、Java 数组的定义和使用

    1.数组的定义 首先举一个小例自:如果你现在需要定义100个int类型的变量,那么按照前俩节的做法为: int a = 1, b=2 , c=3.......; 可以发现我们的代码特别的冗余,而且不美 ...

  4. Java——数组的定义与使用

    数组的定义与使用 1.数组的基本概念 (1)数组的动态初始化: 数组首先先开辟内存空间,而后再使用索引进行内容的设置,这种定义数组的方式称为动态初始化 数组是引用数据类型,存在有内存分配问题.在使用前 ...

  5. JAVA数组的定义以及使用1

    public class HelloWorld { public static void main(String[] args){ // Scanner s = new Scanner(System. ...

  6. JAVA数组的定义方式

    JAVA中,数组有以下几种定义方式: 1.先定义数组中元素的个数,然后再进行元素赋值 int[] a=new int[2]; a[0]='a'; a[1]='b';a[2]='c'; 2.元素个数与元 ...

  7. java数组的定义

    class ArrayDome { public static void main(String[] args) { //元素类型[] 数组名 创建一个 元素类型[元素个数或数组长度] /* 需要一个 ...

  8. Java 数组的定义和遍历

    1.一维数组 数组是用来存储一组相同数据类型数据的数据结构 数组的元素可以是简单数据类型的数据,也可以是引用数据类型的数据 无论数组内容是简单类型还是引用类型,数组自己本身都是一种引用类型 每个数组元 ...

  9. java 数组的定义

    package java03; /* 数组的初始化:就是创建一个数组,并向其中古语一些默认的值 两种常见的初始化方式: 1.动态初始化(指定长度) 2.静态初始化(指定内容) 动态初始化数组格式: 数 ...

随机推荐

  1. Linux root用户下强制静音的问题

    解决方法 pulseaudio --start --log-target=syslog suorce /etc/profile

  2. [SQL入门级] 这篇咱'薄利多销',记录多一点

    这个系列的博文知识回顾sql知识作的记录,温故而知新.上一篇内容达不到知识分享的层级被移出园子首页,对不住各位看官,内容简单了些.下面咱就记录多一些的基础知识,薄利多销: 控制用户权限 • 创建用户 ...

  3. pandas练习(二)------ 数据过滤与排序

    数据过滤与排序------探索2012欧洲杯数据 相关数据见(github) 步骤1 - 导入pandas库 import pandas as pd 步骤2 - 数据集 path2 = ". ...

  4. 20165207 Exp1 PC平台逆向破解

    20165207 Exp1 PC平台逆向破解 0.写在最前面 在做三个实验的前两个的时候,我还没有到博客里去看作业的要求.当时我的主机名是kali5207也就是用我的学号命名的,要求的是姓名全拼命名k ...

  5. Python入门之安装numpy和pandas

    最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网遇到了很多问题就记下来了. 首要条件,python版本必 ...

  6. leetcode 136 Single Number, 260 Single Number III

    leetcode 136. Single Number Given an array of integers, every element appears twice except for one. ...

  7. 20145327 《网络对抗技术》 Web基础

    20145327 <网络对抗技术> Web基础 apache 输入apachectl start开启Apach 输入netstat -aptn查看端口占用:apach2占用端口80 测试a ...

  8. poj 1274 The Prefect Stall - 二分匹配

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22736   Accepted: 10144 Description Far ...

  9. 关于fragment点击穿透的问题

    当一个activity有多个fragment的时候,点击当前显示的fragment,如果点击处在其他fragment中也有相应的控件,那么可能会点击穿透,有响应另外fragment事件的趋势.但是这个 ...

  10. Python3基础 file for+list 读取txt文本 并 一行一行的输出(低效率)

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...