难以置信(20210829骑行出车第一视角云骑行)20210829是什么星座,2021-08-29 Java基础知识「数组」,java定义byte数组,
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]);}}}
版权申明
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据