【124天】尚学堂高琪Java300集视频精华笔记(52-53)

原文链接: https://segmentfault.com/a/1190000009723186

第52-53集:数组_数组基本概念_内存分析

数组的定义

数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们. 

数组的五个基本特点:

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

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

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

  4. 数组变量属引用类型,数组中的每个元素相当于该对象的成员变量。数组本身就是对象。

  5. Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

创建数组

声明(一维数组的声明方式有两种)
type[]   arr_name;(推荐使用这中方式)
type   arr_name[]; 
  1. 声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。因此,声明数组时不能指定其长度(数组中元素的个数),例如: int a[5]; //非法

  2. 声明一个数组的时候并没有数组被真正的创建。

  3. 构造一个数组,必须指定长度。

  4. 构建数组:

    //创建基本类型一维数组示例。
    
        package com.test052;
    
    public class TestArray {
        public static void main(String[] args){
            //int[] s = new int[10];
            int[] s = null;
            s = new int[10];
            for(int i = 0;i<10;i++){
                s[i] = 2*i +1;
                System.out.println(s[i]);
            }
        }
    }
    
    //[]在前在后都行
    
    int a[];
    int[] a;
    Car a[];
    Car[] a;
    

初始化数组

1. 静态初始化

    除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。
int[] a = {1,2,3};
Man[] mans = {
    new Man(1,1),
    new Man(2,2)
};
2. 动态初始化

    数组定义与为数组元素分配空间并赋值的操作分开进行。
        
int[] a = new int[2];
a[0]=1;
a[1]=2;
3. 数组的默认初始化

    数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
    
int a[] = new int[2];  //0,0
boolean [] b = new boolean[2];  //false,false
String[] s = new String[2];     //null, null
    

数组的界限

    下标的合法区间:[0, length-1]
    
package com.test052;

public class Car {
    String name;
    public Car(String name){
        this.name = name;
    }
}
package com.test052;

public class Test01 {
    public static void main(String[] args){
        
        int[] a = new int[3];
        a[0] = 23;
        a[1] = 28;
        a[2] = 32;
        
        Car[] cars = new Car[4];
        cars[0] = new Car("奔驰");
        cars[1] = new Car("宝马");
        System.out.println(cars.length);
        for(int i =0;i
package com.test052;

public class Test02 {    
    public static void main(String[] args){
        
        //声明
        int[] a ;
        int b[];
        
        //创建数组对象
        a = new int[4];
        b = new int[5];
        
        for(int i=0;i

你可能感兴趣的:(【124天】尚学堂高琪Java300集视频精华笔记(52-53))