首页 > 编程语言 >Java学习数组

Java学习数组

时间:2022-09-25 15:01:03浏览次数:32  
标签:arr Java int System 学习 数组 println out

Java中的数组

 

一、数组定义格式

1、数组概述:一次性声明大量的用于存储数据的变量,要存储的数据通常都是同类型数据,例如:考试成绩

 

2、什么是数组:是用于存储多个相同类型数据的存储模型

 

3、定义格式:

  • 格式一: 数据类型[] 变量名 示例: int[] arr; 定义了一个int类型的数组,数组名是arr(推荐使用格式一)

  • 格式二: 数据类型 变量名[] 示例: int arr[]; 定义了一个int类型的变量,变量名是arr数组

 

二、数组初始化之动态初始化

​ ​
1、数组初始化概述:

Java中的数组必须先初始化,然后才能使用

所谓初始化:就是为数组中的元素分配内存空间,并为每一个数组元素赋值

 

2、数组初始化方法:

1、动态初始化:

1、是指初始化时指定数组长度,有系统为数组分配初始值

初始值:

整数:默认值是0

浮点数:默认值是0.0

布尔值:默认值是false

字符:默认是空字符“”

引用数据类型:默认值是null

 

2、格式:数据类型[] 变量名 = new 数据类型[数组长度]; 示例:int[] arr = new int[3];

 

 

2、静态初始化:

1、初始化时指定每一个数组元素的初始值,由系统决定数组长度

 

 

三、数组元素访问

1、数组变量访问方式

格式:数组名

 

2、数组内部保存的数据的访问方式

格式:数组名[索引];

 

3、索引:

是数组中数据的编号方式

作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

特征:

从0开始;连续的,逐一增加;每次加一

 

四、内存分配

 

1、Java中的内存分配:

Java程序在运行时,需要在内存中分配内存空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域

都有特定的处理数据方式和内存管理方式

 

2、内存分区:

1、栈区:

存储局部变量:

定义在方法中的变量,例如:arr,使用完毕,立即消失

 

2、堆区:

存储new出来的内容(实体,对象),数组初始化时,会未储存空间添加默认值(参照数组动态初始化)

每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收

 

3、数组内存图(单个数组):

1、代码示例(图不画了学过C++还能理解):

package com.itheima_02;

public class ArrayTest01 {
   public static void main(String[] args) {
       //定义一个数组
       int[] arr = new int[3];

       //输出数组名及数组元素
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);

       //给数组中的元素赋值
       arr[0] = 100;
       arr[2] = 200;

       //再次输出数组名及元素
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);
  }
}

 

4、数组内存图(多个数组):

1、代码示例(图不画了学过C++还能理解):

package com.itheima_02;

public class ArrayTest02 {
   public static void main(String[] args) {
       //定义两个数组
       int[] arr = new int[2];
       int[] arr2 = new int[3];

       //分别输出数组名即元素
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);

       System.out.println(arr2);
       System.out.println(arr2[0]);
       System.out.println(arr2[1]);
       System.out.println(arr2[2]);

       //然后分别给数组中元素赋值
       arr[0] = 100;
       arr2[0] = 200;
       arr2[2] = 300;
       System.out.println("------------");

       //分别再输出数组名即元素
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);

       System.out.println(arr2);
       System.out.println(arr2[0]);
       System.out.println(arr2[1]);
       System.out.println(arr2[2]);

  }
}

 

5、数组内存图(多个数组指向相同)

1、代码示例(图不画了学过C++还能理解):

package com.itheima_02;

public class ArrayTest03 {
   public static void main(String[] args){
       //定义一个数组
       int[] arr = new int[3];

       //重新赋值
       arr[0] = 100;
       arr[1] = 200;
       arr[2] = 300;

       //输出对应数值
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);

       //定义第二个数组指向第一个数组
       int[] arr2 = arr;
       arr2[0] = 111;
       arr2[1] = 222;
       arr2[2] = 333;

       //输出两个数组名与其对应地址值
       System.out.println(arr);
       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);
       System.out.println(arr2);
       System.out.println(arr2[0]);
       System.out.println(arr2[1]);
       System.out.println(arr2[2]);
  }
}

 

五、数组初始化之静态初始化

1、静态初始化:初始化时指定每一个数组元素的初始值,由系统决定数组长度

格式:数据类型[] 变量名 = new 数据类型[]{数据1, 数据2, 数据3, ......};

示例:int[] arr = new int[]{1, 2, 3}; (注意与C语言不同[]中不需要写了)

 

格式简化(常用) :数据类型[] 变量名 = {数据1, 数据2, 数据3};

示例:int[] arr = {1, 2, 3};

package com.itheima_03;

public class ArrayDemo {
   public static void main(String[] args) {
       //采用静态初始化定义一个数组
       int[] arr = {1, 2, 3};

       //输出数组名
       System.out.println(arr);

       //输出数组中的元素
       System.out.println(arr[0]);
       System.out.println(arr[1]);
       System.out.println(arr[2]);
  }
}

 

6、数组操作的两个常见小问题

1、索引(index)越界:

访问了数组中不存在的索引对应的元素,造成索引越界问题

 

2、空指针异常(将null赋值给 整型数组 的变量)

访问的数组已经不在指向堆内存的数据,造成空指针异常

 

3、null:空值,引用数据类型的默认值,表示不指向任何有效对象

 

4、参考代码:

package com.itheima_04;
/*
数组操作的两个常见小问题
索引越界:ArrayIndexOutOfBoundsException
空指针异常:NullPointerException
*/
public class ArrayDemo {
   public static void main(String[] args) {
       //使用动态初始化一个数组
       int[] arr = new int[3];

       //测试输出索引越界
       //System.out.println(arr[3]);
       System.out.println(arr[2]);

       //测试空指针异常
       arr = null;
       System.out.println(arr[0]);
  }
}

 

七、数组常见操作

​ ​
1、遍历(结合循环):

1、获取数组中元素个数:

格式:数组名.length

示例:arr.length

 

2、参考代码:

package com.itheima_05;
/*
数组常见操作之遍历
*/
public class ArrayTest01 {
   public static void main(String[] args) {
       //使用静态分配定义一个数组
       int[] arr = {11, 22, 33, 44, 55};

       //使用通用遍历格式
       for(int i = 0; i < arr.length; i++){
           System.out.println(arr[i]);
      }
  }
}

 

2、获取最值:
package com.itheima_05;
/*
数组常见操作之获取最值
*/
public class ArrayTest02 {
   public static void main(String[] args) {
       //定义一个数组
       int[] arr = {12, 45, 67, 74, 80};

       //定义一个变量接收数组中第一个元素 并用来接收最大值
       int max = arr[0];

       //定义另一个变量接收数组中第一个元素 并用来接收最小值
       int min = arr[0];

       //使用for循环进行比较出最大值
       for(int i = 1; i < arr.length; i++){
           //判断最大值
           if(max < arr[i]){
               max = arr[i];
          }
           //判断最小值
           if(min > arr[i]){
               min = arr[i];
          }
      }

       //输出结果
       System.out.println("arr数组中的最大值:" + max);
       System.out.println("arr数组中的最小值:" + min);
  }
}
 

 

 

 

标签:arr,Java,int,System,学习,数组,println,out
From: https://www.cnblogs.com/fragmentary/p/16727857.html

相关文章