介绍
在 Java 和其他面向对象的编程语言中,对象是相关数据的集合,并附带一组方法。这些方法对对象进行操作,执行计算,有时还会修改对象的数据。在这里,我们将介绍三种简单但重要的 Java 内置对象类型:Number(数字)、String(字符串)和 Array(数组)。
数字
通常,我们使用原始数字类型,例如 byte、int、double 等。然而,有时我们需要使用对象而不是原始数据类型。Java 为原始数据类型提供了包装类(Wrapper Classes),例如 Byte、Short、Long、Integer、Double、Float 等。包装对象可以转换回原始数据类型,这个过程称为 拆箱(unboxing)。Number 类是 java.lang 包的一部分,关于包的更多内容将在后面讨论。
以下是 Number 类的子类实现的一些常见类方法:
- xxxValue():将此
Number对象的值转换为 xxx 数据类型并返回。 - compareTo():将此
Number对象与参数进行比较。 - equals():确定此
Number对象是否与参数相等。 - valueOf():返回一个包含指定原始值的
Integer对象。 - toString():返回表示指定
int或Integer值的String对象。 - parseInt():此方法用于从某个
String值中获取原始int类型。 - abs():返回参数的绝对值。
- ceil():返回大于或等于参数的最小整数,以
double类型返回。 - floor():返回小于或等于参数的最大整数,以
double类型返回。 - pow():返回第一个参数的第二个参数次幂的值。
- round():返回最接近参数的长整型或整型值,具体取决于方法的返回类型。
示例:
在 /home/labex/project/numberTest.java 文件中编写以下代码:
public class numberTest
{
public static void main(String[] args){
Integer x = 1; // 将 int 装箱为 Integer 对象
x = x + 1; // 将 Integer 拆箱为 int
System.out.println(Integer.parseInt("10")); // 从字符串中解析 int
System.out.println( "x = " + x);
}
}
输出:
使用以下命令运行 numberTest.java 文件:
javac /home/labex/project/numberTest.java
java numberTest
查看输出:
10
x = 2
字符串
字符串是对象,因此你可能会问:“String 对象中包含的数据是什么?”以及“我们可以在 String 对象上调用哪些方法?”String 对象的组成部分是字符。并非所有字符都是字母;有些是数字,有些是特殊符号,其余的是其他类别的字符。为简单起见,我们将它们统称为字符。String 类中有许多字符串方法,但我们只会使用其中的一部分。其余的可以在官方网站的文档中查阅。
注意: String 类是不可变的(immutable),因此一旦创建了 String 对象,就无法修改。如果需要频繁修改字符序列,则应使用 StringBuffer 和 StringBuilder 类。
以下是 String、StringBuffer 和 StringBuilder 类的一些常用方法:
- ***char charAt(int index)***:返回当前字符串缓冲区中由
index参数指定的字符。 - ***void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)***:将字符串缓冲区中的字符复制到目标字符数组
dst中。 - ***int indexOf(String str)***:返回指定子字符串在此字符串中第一次出现的索引。
- ***int indexOf(String str, int fromIndex)***:从指定索引开始,返回指定子字符串在此字符串中第一次出现的索引。
- ***int lastIndexOf(String str)***:返回指定子字符串在此字符串中最右边出现的索引。
- ***int lastIndexOf(String str, int fromIndex)***:从指定索引开始向后搜索,返回指定子字符串在此字符串中最后一次出现的索引。
- ***int length()***:返回此字符串缓冲区的长度(字符数)。
- ***String substring(int start)***:返回一个新的
String,其中包含当前StringBuffer中的字符子序列。子字符串从指定索引开始,并延伸到StringBuffer的末尾。 - ***String substring(int start, int end)***:返回一个新的
String,其中包含当前StringBuffer中的字符子序列。
示例:
在 /home/labex/project/stringTest.java 文件中编写以下代码:
public class stringTest
{
public static void main(String[] args){
String greeting = "Hello world!";
String hello = new String("Hello !");
System.out.println("greeting is: "+ greeting);
System.out.println("hello is: "+ hello);
System.out.println("length of greeting: " + greeting.length());
System.out.println("first char of greeting: " + greeting.charAt(0));
System.out.println("index of 'e' in hello: "+ hello.indexOf('e'));
System.out.println("substring of greeting: "+ greeting.substring(6)); //substr: world
}
}
输出:
使用以下命令运行 stringTest.java 文件:
javac /home/labex/project/stringTest.java
java stringTest
查看输出:
greeting is: Hello world!
hello is: Hello !
length of greeting: 12
first char of greeting: H
index of 'e' in hello: 1
substring of greeting: world!
数组
数组结构用于存储数据集合,但通常更有用的方式是将数组视为单一类型的变量集合。与其声明单独的变量,例如 number0、number1、...、number99,你可以声明一个数组变量 numbers,并使用 numbers[0]、numbers[1]、...、numbers[99] 来表示单独的变量。数组的第一个元素的索引为 0。
以下是数组的一些常用方法:
- ***public static int binarySearch(Object[] a, Object key)***:使用二分查找算法在指定数组中搜索指定值。数组在调用此方法之前必须已排序。如果搜索键包含在数组中,则返回其索引;否则返回
(–(插入点 + 1))。 - ***public static boolean equals(long[] a, long[] a2)***:如果两个指定的
long数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中所有对应的元素对都相等,则认为这两个数组相等。此方法也可用于其他原始数据类型(byte、short、int等)。 - ***public static void fill(int[] a, int val)***:将指定的
int值分配给指定int数组的每个元素。此方法也可用于其他原始数据类型(byte、short等)。 - ***public static void sort(Object[] a)***:根据元素的自然顺序对指定对象数组进行升序排序。此方法也可用于原始数据类型(
byte、short、int等)。
示例:
在 /home/labex/project/arrayTest.java 文件中编写以下代码:
public class arrayTest
{
public static void main(String[] args){
// 你可以使用 new 初始化一个空数组。
String[] nameArray1 = new String[5];
// 用相同的名称 "abc" 填充空数组 nameArray1
java.util.Arrays.fill(nameArray1,"abc");
// 也可以使用 for 循环遍历数组
for (String name:nameArray1){
System.out.println(name);
}
// 你可以使用一些值来初始化数组。
String[] nameArray2 = {"Candy", "Fancy", "Ann", "Ella", "Bob"};
// 你可以获取数组的长度
System.out.println("Length of nameArray2: " + nameArray2.length);
// 你可以通过索引获取值
System.out.println("The last item of nameArray2 is " + nameArray2[4]);
// 对数组对象进行排序
java.util.Arrays.sort(nameArray2);
System.out.println("Sorted nameArray2 by alphabet:");
for(String name:nameArray2){
System.out.println(name);
}
}
}
输出:
使用以下命令运行 arrayTest.java 文件:
javac /home/labex/project/arrayTest.java
java arrayTest
查看输出:
abc
abc
abc
abc
abc
Length of nameArray2: 5
The last item of nameArray2 is Bob
Sorted nameArray2 by alphabet:
Ann
Bob
Candy
Ella
Fancy
总结
大多数任务都是处理数字和字符串等数据,因此使用 Java 内置类来执行这些任务既简单又高效。对于更高级的用法,你可以阅读官方文档。



