2021-08-29 Java基础知识「数组」

1. 数组

1.1 数组的定义

数据(array)是一种容器,存储(同种数据类型)的多个值;int类型的数组容器(byte、short);容器的类型和存储的数据类型保持一致;
//数组定义的格式数据类型[] 变量名int[] array数据类型 变量名[]int array[]

1.2 数组初始化之动态初始化

数组必须先初始化,才能使用;

动态初始化

动态初始化:初始化只指定数组长度,由系统为数组分配初始值;

// 格式数据类型[] 变量名 = new 数据类型[数组长度]// 通过new 关键字创建int类型数组容器,该容器可存储10个int类型的整数,该容器被arr数组变量所记录;int[] arr = new int[10];System.out.println(arr);[I@7291c18f// 打印出内存地址;/*[:列表I:数组类型@:分隔符7291c18f: 十六进制内存地址*/byte[] barr = new byte[20];System.out.println(barr);[B@34a245ab

1.3 数组元素访问

访问数组容器中元素的空间位置)
// 数组元素访问:索引访问(访问数组容器中元素的空间位置)public class Demo {public static void main(String[] args) {int[] arr = new int[10];System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}}/*000*///总结数组创建完毕后即使没有默认值也可取出但取出的元素都是默认初始化值

1.4 内存分配

java中内存分配

java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,每一片区域都有特定的处理数据方式和内存管理方式。

栈内存:方法运行时,进入到内存,局部变量都存放在这块内存中;堆内存:new出来的内容进入堆内存,并且会存在地址值;方法区:.class文件加载时进入的内存;本地方法栈:调用操作系统相关资源;寄存器:交给cpu去使用

java中默认值

数据类型 默认值整数 0浮点数 0.0布尔值 false字符 空字符引用数据类型 null

引用数据类型:引用、记录了地址值的变量,所对应的数据类型,就是引用数据类型。

总结:每new一次,在堆内存中,都是一块新的空间,堆内存中的空间地址不会出现重复的现象。

1.5 数组初始化之动态初始化

静态初始化:初始化时,可指定数组要存储的元素,系统还会自动计算出该数组长度;
格式 数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3...};int[] arr = new int[]{1, 2, 3};简化格式数据类型[] 变量名={数据1, 数据2, 数据3}// orint[] arr = {1, 2, 3};

静态初始化和动态初始化对比

动:手动指定数组长度,由系统给出默认初始化值;静:手动指定数组元素,系统会根据元素个数,计算出数组的长度;

数组操作中常见问题

索引越界;空指针异常:访问的数组不再指向堆内存的数据,造成空指针异常;null:空值,引用数据类型的默认值,表示不指向任何有效对象。

1.6 数组中常见的操作

遍历

int[] arr = {1, 2, 3, 4, 5}for (int i=0; i < arr.length;i++){System.out.println(arr[i])}

1.7 数组常见操作

// 求最大值public class DemoMax {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};int max = arr[0];for (int i = 1; i < arr.length; i++){if arr[0] < arr[i]:max = arr[i];}}}// 求和public class DemoSum {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int sum = 0;int[] arr = new int[5];for (int i = 0; i< arr.length; i++){arr[i] = sc.nextInt();}// 求和 for (int i =0; i<arr.length; i++){sum += arr[i];}}}// 查找public class DemoFind {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5}Scanner sc = new Scanner(System.in);System.out.println("请输入查找元素:");int num = sc.nextIn();int index = -1;for (int i < 0; i < arr.length; i++){if (num == arr[i]){index == i;break;}}System.out.println(index);}}// 计算平均值public class DemoAvg {public static void main(String[] args) {int[] arr = new int[6];for (int i = 0; i < arr.length; i++){System.out.println("请输入"+(i+1)+"评委打分:");int score = sc.nextInt();if (score >=0 && score <= 100){arr[i] = score;}else{System.out.println("非法值");i--;}// 4.求数组最小值 int max = arr[0];for (int i=0; i<arr.length;i++){System.out.println(arr[i]);if (max > arr[i]){max = arr[i];}}// 5.求数组最大值 int min = arr[0];for (int i=0; i<arr.length;i++){System.out.println(arr[i]);if (min < arr[i]){min = arr[i];}}// 6.求和 int sum = 0;for (int i=0; i<arr.length;i++){sum += arr[i];}int avg = (sum - max - min) /4;System.out.println(avg]);}}}
分类: 百科知识 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录