0Pricing
Java Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Arrays.sort และการเรียงลำดับ
  2. Arrays.binarySearch
  3. Arrays.fill และ copyOf
  4. Arrays.equals และ toString
← กลับไปที่ Java Academy