自学java基础6

自学java基础6数组 1 数组的概述 概念 用来存储一组相同数据类型的集合 或者叫容器 注意事项 1 数组中的元素类型必须一致 2 数组本身是引用数据类型 但是里面的元素既可以是基本数据类型 也可以是引用数据类型 3 数组的长度一旦给定无法改变 2 数组的初始化 2 1 动态初始化 概念 给定数组的长度 由系统分配空间和初始值 格式 数据类型 数组名

大家好,我是讯享网,很高兴认识大家。



数组

1. 数组的概述

概念:
  用来存储一组相同数据类型的集合(或者叫容器)
注意事项:
  1. 数组中的元素类型必须一致
  2. 数组本身是引用数据类型,但是里面的元素既可以是基本数据类型,也可以是引用数据类型
  3. 数组的长度一旦给定无法改变
2. 数组的初始化
2.1 动态初始化
概念:
  给定数组的长度,由系统分配空间和初始值
格式:
  数据类型[] 数组名 = new 数据类型[数组的长度];
数组的赋值和取值:
  索引: 索引是从 0 开始的,索引的最大值是数组的长度减 1
  赋值: 数组名[索引值] = 要赋的值
  取值: 数组名[索引值];
public class Init { public static void main(String[] args) 自学java基础6{ int[] array = new int[4]; // 动态初始化 //数据类型[] 数组名 = new 数据类型[数组的长度]; array[0] = 10; // 赋值 array[1] = 20; // 赋值 array[2] = 30; // 赋值 array[3] = 40; // 赋值 for (int i = 0; i <= 3; i++) { System.out.println(array[i]); } } }
讯享网

2.2 动态初始化

概念
  给定数组中的元 素,由系统分配长度并赋值.
格式:
  数据类型[ ] 数组名 = new 数据类型[]{元素 1,元素 2….};
简写格式:
  数据类型[ ] 数组名 = {元素 1,元素 2….};
注意事项:
  只有第一次定义的时候可以简写,重写赋值的时候不能简写
  不能在定义数组的时候,又给定长度,有给定值
  数组长度的获取: 数组名.length
讯享网public class InitPractice { // public static void main(String[] args) { // char [] arr_char = new char[] {'默','努','力','的','C'}; // int a = arr_char.length; // for (int i =0; i<a; i++) { // System.out.println(arr_char[i]); // } // } public static void main(String[] args) { boolean [] arr_bool = new boolean [] {false, false, true, true}; System.out.println(arr_bool[0]); } }

3. 数组的内存分析

栈(stack):局部变量和方法的执行,没有初始值

堆(heap): new出来的东西,有初始值--->基本数据类型:对应默认值

                  引用数据类型:null

4. 数组常见异常

空指针异常:
  产生的原因: 使用 null 调用堆中的内容,要注意的是,如果一个变量的初始值是 null, 直接打印是不报错的,只有调用他里面的东西才会报空指针
例子:
  int [] arr = null;//有初始值,初始值为 null
  System.out.println(arr); //null
  System.out.println(arr[0]);// java.lang.NullPointerException
数组角标越界异常:
  产生的原因:数组的索引值超出的最大的范围,就会出现该异常
例子:
  int[] arr = new int[3];// 索引值 0-2
  System.out.println(arr[4]); // java.lang.ArrayIndexOutOfBoundsException

5. 数组应用

5.1 数组遍历

例子:定义一个数组{1,2,3,4,5}; 按如下格式打印数据:

       [1,2,3,4,5]
 public static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { if (arr.length == 1) { System.out.println("[" + arr[i] + "]"); } else if (i == 0) { System.out.println("[" + arr[i] + ","); } else if (i == arr.length - 1) { System.out.println(arr[i] + "]"); } else { System.out.println(arr[i] + ","); } } }

可以单独封装成方法,public static 在同一个包下可以在不同的class文件中引用

引用方法格式:文件名.方法名(传入的参数)

和python封装类似

5.2 最值

求出一个数组中个最大值和最小值

思路:
  1. 设置一个变量用来代表最值(数组中的第一个元素)
  2. 用这个变量和数组中的每一个元素作比较
  3. 如果数组中有元素比他大,就把他的值重新赋值
  4. 比较结束后,打印最值
讯享网 public static void printMaxandMin(int[] arr) { int max = arr[0]; int min = arr[0]; for (int i = 0; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } if (min > arr[i]) { min = arr[i]; } } System.out.println("最大值为:" + max); System.out.println("最小值为:" + min); }

5.3 元素交换

将数组中两个元素做交换

思路:
  1. 引入一个中间量
  2. 中间量赋值为arr[i]
  3. arr[i] = arr[j]
  4. 然后 arr[j] = 中间量
/*
  这是逆序,相当于头尾两两元素对应交换

*/
public static void reverse(int[] arr) { for (int i =0; i<arr.length/2; i++) { int temp = arr[i]; arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } for (int j = 0; j<arr.length;j++) { System.out.print(arr[j]); } }
小讯
上一篇 2024-12-28 22:26
下一篇 2025-01-02 12:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/9722.html