数字 通常情况下,当我们处理数字时,使用原始数据类型,如 byte,int,long,double 等。 示例 - int i = 5000;
- float gpa = 13.65;
- byte mask = 0xaf;
复制代码 然而,在开发中,我们会遇到需要使用对象而不是原始数据类型的情况。为了实现这个, Java 为每个原始数据类型提供包装类。 所有的包装类 (Integer, Long, Byte, Double, Float, Short) 是抽象类 Number 的子类。  这种包装是由编译器处理,这个过程称为装箱。因此,当一个原始数据类型被使用,当需要一个对象时,编译器将原始数据放入其包装类。同样地,编译器也能将对象取出返回到原始数据类型。Number 是 java.lang 包的一部分。 这里是装箱和拆箱的一个例子: - public class Test{
- public static void main(String args[]){
- Integer x = 5; // boxes int to an Integer object
- x = x + 10; // unboxes the Integer to a int
- System.out.println(x);
- }
- }
复制代码 这将产生以下结果: 代码如下:15 当 x 被分配整数值,则编译器将整数放入箱中,因为 x 为整数对象。然后,x 被拆箱,以便它们可以被添加为整数。 Number 方法 以下是对 Number 类实现的所有子类中实现的实例方法的列表: SN | 方法描述 | 1 | xxxValue() 这个Number对象的值转换为XXX的数据类型并返回 | 2 | compareTo() 把这个Number对象与参数做比较 | 3 | equals() 确定这个数字对象是否等于参数 | 4 | valueOf() 返回一个Integer对象持有指定的原始值 | 5 | toString() 返回表示指定的int或整数的值的String对象 | 6 | parseInt() 此方法用于获取某个字符串的原始数据类型 | 7 | abs() 返回参数的绝对值 | 8 | ceil() 返回的最小整数大于或等于该参数。返回为double | 9 | floor() 返回的最大整数小于或等于该参数。返回为double | 10 | rint() 返回的整数,它是最接近值该参数值。返回为double | 11 | round() 返回最接近的long或者int,通过该方法的返回类型所指参数 | 12 | min() 返回两个参数中较小的 | 13 | max() 返回两个参数中较大的 | 14 | exp() 返回自然对数的底数e,该参数的幂值 | 15 | log() 返回参数的自然对数 | 16 | pow() 返回第一个参数的提高至第二个参数的幂值 | 17 | sqrt() 返回参数的平方根 | 18 | sin() 返回指定的double值的正弦值 | 19 | cos() 返回指定的double值的余弦值 | 20 | tan() 返回指定的double值的正切值 | 21 | asin() 返回指定的double值的反正弦 | 22 | acos() 返回指定的double值的反余弦值 | 23 | atan() 返回指定的double值的反正切值 | 24 | atan2() 将直角坐标(x,y)转换为极坐标(r,θ)并返回θ | 25 | toDegrees() 将参数转换为度 | 26 | toRadians() 将参数转换为弧度 | 27 | random() 返回一个随机数 | 数组 Java 提供了一个数据结构:数组,用于存储相同类型的元素的一个固定大小的连续集合。数组是用于存储数据的集合,但往往将数组认为是相同类型的变量的集合。 跟声明单个变量相反,如 number0, number1, ... number99, 声明一个数组变量,如数字和使用 numbers[0], numbers[1] ..., numbers[99] 来表示各个变量。 此次教程将介绍如何使用索引变量声明数组变量,创建数组,并处理数组。 声明数组变量 要使用一个程序的数组,必须声明一个变量来引用数组,必须指定数组的变量可以引用的类型。下面是来声明一个数组变量的语法: - dataType[] arrayRefVar; // preferred way.
复制代码 or - dataType arrayRefVar[]; // works but not preferred way.
复制代码 注 风格 dataType[] arrayRefVar 是首选的。风格 dataType arrayRefVar[] 来自于 C/C++ 语言, 方便Java 继承 C/C++ 的编程风格。 示例 下面的代码片段是这种语法的例子: - double[] myList; // preferred way.
复制代码 or - double myList[]; // works but not preferred way.
复制代码 创建数组 可以通过使用 new 运算符使用以下语法创建一个数组: - arrayRefVar = new dataType[arraySize];
复制代码 上面的语句做了两件事: - 它创建了一个使用 new dataType[arraySize] 的数组;
- 它将新创建的数组引用分配给变量 arrayRefVar。
声明数组变量,建立一个数组,并分配给变量数组引用可以在一个语句中组合使用,如下所示: - dataType[] arrayRefVar = new dataType[arraySize];
复制代码 另外,可以创建数组,如下所示: - dataType[] arrayRefVar = {value0, value1, ..., valuek};
复制代码 数组元素通过索引访问。数组的下标是从0开始的,也就是说,它们从0开始到 arrayRefVar.length-1。 示例 下面的语句声明一个数组变量 myList,创建 double 类型的10个元素的数组,并把它的引用分配到 myList : - double[] myList = new double[10];
复制代码 以下图片代表数组 myList。在这里,myList 有10个 double 值,索引是从0到9。  处理数组 当处理数组元素时,经常使用的是 loop 循环或 foreach 循环,因为一个数组中所有的元素是相同类型的并且数组的大小是已知的。 示例 下面是一个演示如何创建,初始化和处理数组的完整例子: - public class TestArray {
- public static void main(String[] args) {
- double[] myList = {1.9, 2.9, 3.4, 3.5};
- // Print all the array elements
- for (int i = 0; i < myList.length; i++) {
- System.out.println(myList[i] + " ");
- }
- // Summing all elements
- double total = 0;
- for (int i = 0; i < myList.length; i++) {
- total += myList[i];
- }
- System.out.println("Total is " + total);
- // Finding the largest element
- double max = myList[0];
- for (int i = 1; i < myList.length; i++) {
- if (myList[i] > max) max = myList[i];
- }
- System.out.println("Max is " + max);
- }
- }
复制代码 这将产生以下结果: - 1.9
- 2.9
- 3.4
- 3.5
- Total is 11.7
- Max is 3.5
复制代码 foreach 循环 JDK 1.5 引入了一个新的 for 循环被称为 foreach 循环或增强的 for 循环,它无需使用一个索引变量来完整的遍历数组。 示例 下面的代码显示数组 myList 中的所有元素: - public class TestArray {
- public static void main(String[] args) {
- double[] myList = {1.9, 2.9, 3.4, 3.5};
- // Print all the array elements
- for (double element: myList) {
- System.out.println(element);
- }
- }
- }
复制代码 这将产生以下结果: 将数组传递给方法 正如传递基本类型值的方法,也可以将数组传递给方法。例如,下面的方法显示在一个 int 数组中的元素: - public static void printArray(int[] array) {
- for (int i = 0; i < array.length; i++) {
- System.out.print(array[i] + " ");
- }
- }
复制代码 你可以通过传递数组调用它。例如,下面的语句调用方法 PrintArray 显示3,1,2,6,4,2: - printArray(new int[]{3, 1, 2, 6, 4, 2});
复制代码 从一个方法返回一个数组 一个方法也可以返回一个数组。例如,下面所示的方法返回一个数组,它是另一个数组的反转: - public static int[] reverse(int[] list) {
- int[] result = new int[list.length];
- for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
- result[j] = list[i];
- }
- return result;
- }
复制代码 Arrays 类 java.util.Arrays 中的类包含各种静态方法用于排序和搜索数组、数组的比较和填充数组元素。这些方法为所有基本类型所重载。 SN | 方法和描述 | 1 | public static int binarySearch (Object[] a, Object key) 使用二进制搜索算法搜索对象的指定数组(字节,整数,双精度等)来指定值。该数组必须在进行此调用之前进行分类。如果它被包含在列表 (-(insertion point + 1), 将返回索引搜索关键字。 | 2 | public static boolean equals (long[] a, long[] a2) 如果多头的两个指定数组彼此相等返回true。两个数组认为是相等判定方法:如果两个数组包含相同的元素数目,并在两个数组元素的所有相应对相等。如果两个数组相等,返回true。同样的方法可以用于所有其它的原始数据类型 (Byte, short, Int, etc.) | 3 | public static void fill(int[] a, int val) 将指定的int值到指定的int型数组中的每个元素。同样的方法可以用于所有其它的原始数据类型(Byte, short, Int etc.) | 4 | public static void sort(Object[] a) 将对象指定的数组升序排列,根据其元素的自然顺序。同样的方法可以用于所有其它的原始数据类型( Byte, short, Int, etc.) | |