Java2

69 阅读4分钟

System.arraycopy 方法

System.arraycopy 是 Java 标准库中的一个方法,用于高效地复制数组。它的语法如下:

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
参数说明:
  1. src

    • 源数组,即从哪个数组复制数据。
    • 在代码中,src 是 data,表示从 data 数组中复制数据。
  2. srcPos

    • 源数组的起始位置,即从源数组的哪个索引开始复制。
    • 在代码中,srcPos 是 0,表示从 data 数组的第 0 个位置开始复制。
  3. dest

    • 目标数组,即数据复制到哪个数组。
    • 在代码中,dest 是 newData,表示将数据复制到 newData 数组中。
  4. destPos

    • 目标数组的起始位置,即从目标数组的哪个索引开始粘贴数据。
    • 在代码中,destPos 是 0,表示从 newData 数组的第 0 个位置开始粘贴。
  5. 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 指向新数组
}
具体步骤:
  1. 创建新数组

    • newData 是一个新数组,容量是原数组 data 的两倍。
    • 例如,如果 data 的长度是 10,那么 newData 的长度就是 20。
  2. 复制元素

    • System.arraycopy(data, 0, newData, 0, size) 将 data 数组中的前 size 个元素复制到 newData 数组中。
    • 例如,如果 data 中有 5 个元素(size = 5),那么这 5 个元素会被复制到 newData 的前 5 个位置。
  3. 更新引用

    • 将 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 对象。以下是对每一部分的详细解释:

  1. String input = scanner.nextLine();

    • 这一行的作用是从控制台读取一行输入,用户应该输入一个分数,格式为“分子/分母”(例如 3/4)。scanner 是一个 Scanner 类的实例,用于读取输入。
  2. String[] parts = input.split("/");

    • 这一行将用户输入的字符串 input2 按照分隔符 / 分割成两个部分。结果是一个字符串数组 parts2,其中 parts2[0] 是分子(输入的字符串的前半部分),parts2[1] 是分母(输入的字符串的后半部分)。
  3. 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 对象。