Arrays.fill และ copyOf
เติมค่าและปรับขนาดอาร์เรย์
Arrays.fill และ copyOf เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
การเติมค่าในอาร์เรย์
Arrays.fill กำหนดให้องค์ประกอบทุกตัวในอาร์เรย์มี ค่าเดียวกัน เมธอดนี้แก้ไขอาร์เรย์เดิมโดยตรง และมีประโยชน์สำหรับการกำหนดค่าเริ่มต้นหรือรีเซ็ตข้อมูล
การเติมค่าพื้นฐาน
เติมค่าหนึ่งค่าให้กับอาร์เรย์ทั้งชุด
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[5];
Arrays.fill(nums, 7);
System.out.println(Arrays.toString(nums));
}
}การเติมค่าในบางช่วง
Arrays.fill(array, from, to, value) เติมค่าเฉพาะบางส่วนของอาร์เรย์ ช่วงดังกล่าวรวม from และไม่รวม to
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[6];
Arrays.fill(nums, 2, 5, 9);
System.out.println(Arrays.toString(nums));
}
}การเติมค่าในอาร์เรย์ของอ็อบเจ็กต์
การเติมค่าใช้กับอาร์เรย์ของอ็อบเจ็กต์ได้เช่นกัน โปรดสังเกตว่าแต่ละช่องจะชี้ไปยัง การอ้างอิงเดียวกัน เมื่อคุณเติมอ็อบเจ็กต์ลงไป
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] grid = new String[4];
Arrays.fill(grid, "empty");
System.out.println(Arrays.toString(grid));
}
}การปรับขนาดด้วย copyOf
อาร์เรย์มีความยาวคงที่ หากต้องการอาร์เรย์ที่ใหญ่ขึ้นหรือเล็กลง Arrays.copyOf(array, newLength) จะคืนค่าเป็น อาร์เรย์ใหม่ ที่มีขนาดตามที่ร้องขอ
การขยายอาร์เรย์
เมื่อความยาวใหม่มากกว่าเดิม ช่องที่เพิ่มเข้ามาจะได้รับค่าเริ่มต้น ได้แก่ 0 สำหรับประเภทตัวเลข false สำหรับค่าบูลีน และ null สำหรับอ็อบเจ็กต์
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
int[] bigger = Arrays.copyOf(nums, 5);
System.out.println(Arrays.toString(bigger));
}
}การทำให้อาร์เรย์มีขนาดเล็กลง
เมื่อความยาวใหม่เล็กลง อาร์เรย์จะถูกตัดทอนและสมาชิกที่อยู่ท้ายอาร์เรย์จะถูกลบออก
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5};
int[] smaller = Arrays.copyOf(nums, 3);
System.out.println(Arrays.toString(smaller));
}
}การคัดลอกช่วง
Arrays.copyOfRange(array, from, to) จะคัดลอกส่วนย่อยไปยังอาร์เรย์ใหม่ โดย from ยังคงเป็นตำแหน่งต้นช่วงที่รวมอยู่ด้วย และ to เป็นตำแหน่งสิ้นสุดช่วงที่ไม่รวมอยู่ด้วย
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {10, 20, 30, 40, 50};
int[] middle = Arrays.copyOfRange(nums, 1, 4);
System.out.println(Arrays.toString(middle));
}
}copyOf ไม่เปลี่ยนแปลงอาร์เรย์เดิม
ต่างจาก fill ตรงที่ copyOf จะไม่แตะต้องอาร์เรย์เดิม แต่จะส่งคืนอาร์เรย์ใหม่ทั้งหมด อาร์เรย์ต้นฉบับและสำเนาจึงเป็นอิสระต่อกัน
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 3);
copy[0] = 99;
System.out.println("Original: " + Arrays.toString(original));
System.out.println("Copy: " + Arrays.toString(copy));
}
}รูปแบบการปรับขนาดด้วยตนเอง
ก่อนมี ArrayList โปรแกรมจะเพิ่มขนาดอาร์เรย์ด้วยการคัดลอกไปยังอาร์เรย์ที่ใหญ่กว่า ส่วน copyOf สามารถเพิ่มความจุเป็นสองเท่าได้ด้วยการเรียกใช้เพียงครั้งเดียว
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] data = {1, 2, 3, 4};
data = Arrays.copyOf(data, data.length * 2);
data[4] = 5;
System.out.println(Arrays.toString(data));
}
}fill เทียบกับ copyOf
โปรดจำความแตกต่างนี้ไว้: fill จะเขียนทับช่องที่มีอยู่โดยตรงและไม่ส่งคืนค่า ส่วน copyOf จะสร้างสำเนาที่ปรับขนาดแล้วและส่งคืนสำเนานั้น ให้เลือกใช้ตามว่าคุณต้องการความยาวใหม่หรือไม่
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับ fill และ copyOf
ทบทวน
คุณได้เรียนรู้การเติมค่าและปรับขนาดอาร์เรย์แล้ว
Arrays.fillจะกำหนดให้สมาชิกทั้งหมดหรือสมาชิกในช่วงที่ระบุมีค่าเดียวกัน โดยแก้ไขอาร์เรย์เดิมโดยตรงArrays.copyOfจะส่งคืนอาร์เรย์ใหม่ตามความยาวที่กำหนด โดยเติมค่าหรือตัดทอนตามความจำเป็นArrays.copyOfRangeจะคัดลอกส่วนย่อย- copyOf ไม่ทำลายข้อมูลเดิม ส่วน fill จะเปลี่ยนแปลงอาร์เรย์เดิม
คำถามที่พบบ่อย
บทเรียน “Arrays.fill และ copyOf” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Arrays.fill และ copyOf” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Arrays.fill และ copyOf”
เติมค่าและปรับขนาดอาร์เรย์ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “Arrays.fill และ copyOf” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Arrays.sort และการเรียงลำดับ
- Arrays.binarySearch
- Arrays.fill และ copyOf
- Arrays.equals และ toString