Java基础教程:数组操作与进制转换解析

5星 · 超过95%的资源 需积分: 10 4 下载量 94 浏览量 更新于2024-09-16 1 收藏 93KB DOC 举报
"Java基础教学,涵盖数组、进制转换和二维数组的讲解,包括空指针异常处理、数组最大值获取方法以及选择排序算法的实现。" 在Java编程中,数组是一种重要的数据结构,用于存储同一类型的多个数据。数组在Java中可以是一维、二维甚至多维的。在本教程中,我们将深入探讨数组相关的概念,特别是空指针异常、获取数组最大值的策略以及选择排序算法。 一、数组与空指针异常 空指针异常(NullPointerException)发生在尝试访问或操作一个值为null的对象引用时。在示例代码中,数组arr被赋值为null,然后尝试访问arr[1],这会导致运行时异常。为了避免这种情况,我们需要确保在操作数组之前,数组已经被正确初始化并指向有效的内存区域。 二、获取数组中的最大值 有两种常见的方法来获取数组中的最大值: 1. 比较元素值法:初始化一个变量max,将其设置为数组的第一个元素,然后遍历数组,如果遇到更大的元素,就更新max。这种方法简单直观,但需要注意数组可能为空或所有元素都是负数的情况。 2. 利用角标:同样初始化一个变量max,但这次设置为0,用来记录最大值的角标。遍历数组,如果发现某个元素大于当前max角标的元素,就更新max为新的角标。这种方法适用于数组可能包含负数的情况,因为它是通过角标而非实际值来跟踪最大值。 三、常见的两种排序 这里介绍的是选择排序,这是一种简单直观的排序算法。它的工作原理是,在每一轮内部循环中,找到剩余未排序部分的最小(或最大)元素,并将其放在已排序部分的末尾。选择排序的时间复杂度是O(n²),对于大数据集来说效率较低,但在面试中常常被提及,因为它易于理解和实现。 ```java public class SelectSort { public static void main(String[] args) { int[] arr = {4, 7, 35, -9, 41, 90, 72, 100, -39}; selectSort(arr); } public static void selectSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[i]) { swap(arr, j, i); } } } for (int num : arr) { System.out.print(num + "\t"); } } // 交换元素 public static void swap(int[] arr, int first, int second) { arr[first] = arr[first] ^ arr[second]; arr[second] = arr[first] ^ arr[second]; arr[first] = arr[first] ^ arr[second]; } } ``` 这段代码展示了选择排序的实现,其中`swap()`方法使用异或操作进行元素交换,这是一种无额外空间消耗的交换方式。 进制转换在编程中也十分常见,Java提供了`Integer.toString(int, int)`和`Integer.parseInt(String, int)`等方法用于不同进制之间的转换。例如,将十进制数转换为二进制或十六进制,或者反过来,将字符串形式的二进制或十六进制转换回十进制数。 二维数组是数组的数组,可以用来表示矩阵或表格形式的数据。创建二维数组时,需要指定行数和列数。在Java中,可以使用嵌套循环来遍历和操作二维数组的每个元素。 这些基础知识构成了Java编程的基础,理解并掌握它们对于学习更高级的Java概念至关重要。