Java

一、数组:

1.对于数组的理解:数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来。

2.存储类型数组本身是一个引用类型,数组内存储的类型可以是基本类型也可以是引用类型。

3.特点:

  ①数组本身是一个引用数据类型;

  ②数组是在堆内存中的一串连续的地址存在;

  ③数组在初始化时必须指定长度;

  ④堆内存的数组空间长度一旦确定就不能再次改变;

  ⑤栈内存的变量汇中存储的是数组的地址引用;

  ⑥数组内部存储的类型可以是基本的也可以是引用的。

4.数组的声明:

数组类型 [] 数组名字
int [] x;
char [] y;
boolean [] z;
String [] m;

二、数组的初始化:

1.静态初始化:在定义数组的同时就为数组元素分配空间并赋值。

简化格式   数据类型  [] 数组名称 = {值,值,值.......} int [] array = {1, 2, 3 ,4  ,5};
完整格式 数据类型  [] 数组名称 = new 数据类型[] {值,值,值......} int [] array = new int[] {1, 2, 3, 4, 5};
public class ArrayDemo {
    public static void main(String args[]) {
        int data[] = {1, 2, 3, 4};
        for(int i = 0; i < data.length; i++) {
            System.out.println(data[i]);
        }
    }
}

2.动态初始化:数组定义与为数组分配空间和赋值的操作分开进行。

简化格式      
完整格式 数据类型  [] 数组名称 = new 数据类型[数据长度]  int [] array = new int[5];
数组的动态初始化

public class ArrayDemo {
    public static void main(String args[]) {
        int data[] = new int[3]; /*开辟了一个长度为3的数组*/
        data[0] = 1; // 第一个元素
        data[1] = 2; // 第二个元素
        data[2] = 3; // 第三个元素
        for(int x = 0; x < data.length; x++) {
            System.out.println(data[x]); //通过循环控制索引
        }
    }
}

采用分步的模式开辟数组空间
public class ArrayDemo {
    public static void main(String args[]) {
        int data[] = null; 
        data = new int[3]; /*开辟了一个长度为3的数组*/
        data[0] = 10; // 第一个元素
        data[1] = 20; // 第二个元素
        data[2] = 30; // 第三个元素
        for(int x = 0; x < data.length; x++) {
            System.out.println(data[x]); //通过循环控制索引
        }
    }
}

注意:动态初始化无值并不是真的无值,它有默认值。

    整数类型默认值:0

    浮点类型默认值:0.0

    字符类型默认值:0 --- char   97 --- ‘a’   65 --- ‘A’    48 --- ‘0’

    布尔类型默认值:false

    引用类型默认值:null       

三、数组的操作:

1.当数组开辟空间后,就可以采用如下的方式进行操作:

  ①数组的访问通过索引完成,即:“ 数组名称[索引] ”,数组的索引从0开始,索引范围为[ 0 ~ 数组长度-1],若访问超过数组的索引范围,则会产生java.lang.ArrayIndexOutOfBoundsException的运行异常信息;

  ②当数组采用动态初始化开辟空间后,数组中的每一个元素都是该数组对应数据类型的默认数值;

  ③数组本身是一个有序的集合操作,所以对于数组的内容操作往往会采用循环的模式完成,如通过for循环、增强型for循环对数组进行操作;

  ④在Java中提供有一种动态取得数组长度的方式:数组名称.length;

  ⑤数组属于引用数据类型,所以在数组使用之前一定要开辟空间[实例化],如果使用了没有实例化的数组则会出现NullPointerException的异常信息

2.数组的遍历:

1.使用普通for循环遍历数组:

public class ArrayDemo {
    public static void main(String args[]) {
        int data[] = {1, 2, 3, 4};
        for(int i = 0; i < data.length; i++) {
            System.out.println(data[i]);
        }
    }
}
2.使用增强型for循环遍历数组:

public class ArrayDemo {
    public static void main(String args[]) {
        int data[] = {1, 2, 3, 4};
          for (int var :data){
                      System.out.println(var);
         }
    }
}

3.基本数据类型和引用数据类型在内存结构上的区别:

  ①所有的变量空间都存储在栈内存;

  ②变量空间可以存储的基本数据类型也可以存储引用数据类型;

  ③如果变量空间存储的是基本数据类型,存储的是值,一个变量的值改变,另一个不会跟着改变;

  ④如果变量空间存储的是引用数据类型,存储的是引用地址,一个变量地址对应的值改变,另一个也会跟着改变。

原文地址:https://www.cnblogs.com/yyanghang/p/10959370.html