数组01(未完)

数组

数组的定义

  • 数组是相同类型数据的有序集合

  • 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成(按输入先后顺序)

  • 每一个数据称作一个数组元素,每个数组元素都可以通过一个下标来访问它们

数组的声明和创建

必须先声明数组变量,才能在程序中使用数组,声明语法:

int[] nums;//首选方法,用这个就行

int nums2[];//知道就好

创建语法:

nums = new int[10];//在这个数组里可以存放10个int类型的数字

先声明再创建,就是正常的数组产生方法。

这个数组里,每个数都有自己的下标,我们通过每个数的下标来访问,其中第一个数的下标为0,也就是说上面nums这个数组下标为0~9,共10个数。

 

给数组中元素赋值

nums[0] = 1;
nums[1] = 2;
nums[2] = 3;

这里我们只给三个数赋了值,其他没赋值的都是默认值,int类型默认值为0,String类型默认值为null

取值

通过下标取值:

System.out.println(nums[2]);

 

设计一个计算所有元素的和

这里用一个for循环来做

public static void main(String[] args) {
       int[] nums = new int[10];//声明+创建数组
       nums[0] = 1;
       nums[1] = 2;
       nums[2] = 3;
       nums[3] = 4;

       int sum = 0;
       for (int i = 0; i < nums.length ; i++) {
           sum+=nums[i];//sum = sum + nums[i] 累加计算总和
      }
       System.out.println(sum);
  }

我们可以通过 数组名.length 这个指令来获取数组长度

上面这里把声明和创建放在一起,是常用的方法,拆开是便于学习,不要忘了写长度和[]。

 

内存分析

堆:存放new的对象的数组;可以被所有的线程共享,不会存放别的对象引用(当我们只声明数组时,数组会先在堆中产生,而栈里暂时没有)

栈:存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)(只有在我们创建了数组,也就是给数组具体是长度后,栈内就产生了数组,或者称为数组占用了栈的内存)

方法区:可以被所有的线程共享;包含了所有的class和static变量

 

三种初始化

  1. 静态初始化:

    int[] a = {1,2,3};
    Man[] mans = {new Man(1,1),new Man(2,2)}

    这里就是直接创建和赋值,下面的是类里创建,还没学到

  2. 动态初始化,也就是上面最开始我们学习的声明和创建

  3. 数组的默认初始化

    数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

 

四个基本特点

  1. 其长度是确定的。数组一旦被创建,它的大小不可以改变。

  2. 其中元素必须是相同类型的,不允许出现混合类型

  3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型

  4. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是保存在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的

 

数组边界

下标的合法区间:[1,length-1],如果越界就会报错

ArrayIndexOutOfBoundsException:数组下标越界异常

出现这个异常就要看看是不是哪里数组的下标越界了

猜你喜欢

转载自www.cnblogs.com/jimmykane/p/12602648.html