System.arraycopy 方法
System.arraycopy 是 Java 标准库中的一个方法,用于高效地复制数组。它的语法如下:
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
参数说明:
-
src:- 源数组,即从哪个数组复制数据。
- 在代码中,
src是data,表示从data数组中复制数据。
-
srcPos:- 源数组的起始位置,即从源数组的哪个索引开始复制。
- 在代码中,
srcPos是0,表示从data数组的第 0 个位置开始复制。
-
dest:- 目标数组,即数据复制到哪个数组。
- 在代码中,
dest是newData,表示将数据复制到newData数组中。
-
destPos:- 目标数组的起始位置,即从目标数组的哪个索引开始粘贴数据。
- 在代码中,
destPos是0,表示从newData数组的第 0 个位置开始粘贴。
-
length:- 要复制的元素个数。
- 在代码中,
length是size,表示复制data数组中的前size个元素。
代码中的作用
在 SeqList 的 insert 方法中,System.arraycopy 的作用是将原数组 data 中的元素复制到新数组 newData 中,以实现数组的动态扩容。
if (size == data.length) {
int[] newData = new int[data.length * 2]; // 创建一个容量为原数组两倍的新数组
System.arraycopy(data, 0, newData, 0, size); // 将原数组中的元素复制到新数组
data = newData; // 将 data 指向新数组
}
具体步骤:
-
创建新数组:
newData是一个新数组,容量是原数组data的两倍。- 例如,如果
data的长度是 10,那么newData的长度就是 20。
-
复制元素:
System.arraycopy(data, 0, newData, 0, size)将data数组中的前size个元素复制到newData数组中。- 例如,如果
data中有 5 个元素(size = 5),那么这 5 个元素会被复制到newData的前 5 个位置。
-
更新引用:
- 将
data指向newData,这样后续的操作都会在新数组上进行。
- 将
Integer.parseInt()方法
Integer.parseInt() 是 Java 中的一个静态方法,用于将字符串(String)转换为对应的整数(int)类型。这个方法属于 Integer 类,它的主要用途是将格式正确的字符串表示的整数(例如 "123")转化为相应的整数(例如 123)。
语法
int number = Integer.parseInt(String s);
参数
s:要转换的字符串,它应该是一个有效的整数表示。如果字符串不符合整数的格式,比如包含非数字字符或是空字符串,parseInt()方法会抛出NumberFormatException异常。
返回值
- 返回转换后的整数值。
trim() 方法
trim() 方法是 Java 中 String 类的一个实例方法,主要用于去除字符串首尾的空白字符(例如空格、制表符、换行符等)。这个方法不会改变字符串中间的空白字符,也不会影响字符串本身的内容,只是返回一个经过处理的新字符串。
语法
String trimmedString = originalString.trim();
返回值
- 返回去除了前导(开头)和后导(结尾)空白字符的新字符串。
//输入分数
String input=scanner.nextLine();
String[] parts=input.split("/");
Fraction fraction=new Fraction(Integer.parseInt(parts[0].trim()),Integer.parseInt(parts[1].trim()));
这段代码是用 Java 编写的,主要用于读取用户输入的分数,并将其转化为一个 Fraction 对象。以下是对每一部分的详细解释:
-
String input = scanner.nextLine();- 这一行的作用是从控制台读取一行输入,用户应该输入一个分数,格式为“分子/分母”(例如
3/4)。scanner是一个Scanner类的实例,用于读取输入。
- 这一行的作用是从控制台读取一行输入,用户应该输入一个分数,格式为“分子/分母”(例如
-
String[] parts = input.split("/");- 这一行将用户输入的字符串
input2按照分隔符/分割成两个部分。结果是一个字符串数组parts2,其中parts2[0]是分子(输入的字符串的前半部分),parts2[1]是分母(输入的字符串的后半部分)。
- 这一行将用户输入的字符串
-
Fraction fractio = new Fraction(Integer.parseInt(parts[0].trim()), Integer.parseInt(parts[1].trim()));-
这一行通过
new Fraction(...)创建一个新的Fraction对象。构造函数接受两个参数:Integer.parseInt(parts[0].trim()):将parts[0]字符串转换为整数,trim()方法去除前后空白。Integer.parseInt(parts[1].trim()):将parts[1]字符串转换为整数,同样去除前后空白。
-
使用的结构
- 输入(Input) :使用
Scanner类读取用户输入。 - 字符串处理:使用
String.split()方法将输入字符串分割成数组。 - 类型转换:使用
Integer.parseInt()方法将字符串转换为整数。 - 对象创建:通过构造函数创建
Fraction对象。