java数组声明和使用(java中数组的定义与使用)

如果希望保存一组有相同类型的数据,可以使用数组。数组的定义和内存分配Java中定义数组的语法有两种:typearrayName[];type[]arrayName;type为Java中的任意数据类型,包括基本类型和组合类型,arrayName

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

数组的定义和内存分配

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; i++){

12. intArray = sc.nextInt();

13. }

14.

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

16. for(int i=0; i<len; 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; 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 代替,因为实际开发中经常需要向数组中添加或删除元素,而它的容量不好预估。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/33560.html

(0)
nan
上一篇 2021-10-07
下一篇 2021-10-07

相关推荐

  • 轮胎加盟店有哪些品牌(开个轮胎店需要的投资)

    不知道大家发现没有,现在的轮胎从业人员越来越多,小的比如流动补胎,星罗棋布,大的如轮胎代理商,也是多如牛毛。今天我们就来说说,为啥谁都可以做轮胎代理商?轮胎行业整合已经开始了,并且是从厂家先开始的。很

    2021-12-17 用户投稿
    0
  • 离职后公司拖着不给离职证明案例(公司不给开离职证明怎么办)

    员工在办理离职手续时被要求返还单位一笔钱,单位说这笔钱是超发的工资和奖金,员工则认为这笔钱是正常的工资等待遇。为了不让离职手续卡壳,员工交了钱,但是在办完手续后便起诉,要讨回这笔钱。从后续的诉争结果来看,显然,办理离职手续的过程,就是一个证

    2021-12-13
    0
  • 社保在税务局缴纳步骤(社保代扣怎么操作)

    随着公司规模的扩大,用人数量的增加,越来越多的企业会选择将社保缴纳外包给社保代缴公司。选择与社保代缴公司合作既可以保证企业员工在享受社保待遇之外又能节省企业的一些成本。当然会有一些企业的HR是没有接触过具体要怎样去进行合作的事项,今天金保网

    2021-12-13
    0
  • 抖音播放量0是怎么回事(抖音无故播放量0恢复技巧)

    即将来临的5G时代,随着不断升级的网络,短视频领域这两年就像一匹黑马,五湖四海都火遍了,天下将来必是它的,都是能目击耳闻的。那短视频怎怎么才能运营好呢?短视频运营中的一些思路接下来咱就来讲一讲吧!一、短视频界面的设计1、主页应怎样设计呢?主页要设计好

    2021-10-27 用户投稿
    0
  • cdr是什么意思(CDR是什么的简称)

    cdr是什么意思?CDR是什么的简称,久久派带你了解相关信息。我们平时做图文排版设计,除了大家认识的PS软件之外,还有CorelDRAW软件,你知道吗?它的简称叫CDR,现在全国的设计师,都用这个软件哦。你知道它都有哪些版本号吗?下面我来告诉你,都有哪些版本,请看下面。CorelDRAW1.0是1989年,春天的时候,就进入中国了,具体几月几号,不详。哈哈。CorelD

    2021-09-20 用户投稿
    0
  • word文档查找错别字的方法(word查找功能怎么用)

    Word中输入文字时,谁能保证没有错误呢?恐怕你我都不敢说这样的大话。很多时候,由于输入法的记忆功能或者说惯性,在输入文档时会出现很多很多错别字,而且还不容易被发现。这些错别要想一个个去修改,那实在是太麻烦了,浪费时间、消耗精力,得不偿

    2021-12-08 用户投稿
    0

发表回复

登录后才能评论