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

Arrays.equals และ toString

เปรียบเทียบและแสดงอาร์เรย์

Arrays.equals และ toString เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

การเปรียบเทียบและการแสดงผล

อาร์เรย์ไม่ได้เขียนทับ equals หรือ toString ให้ใช้งานเปรียบเทียบหรือแสดงผลได้อย่างเหมาะสม คลาสเครื่องมือสำหรับอาร์เรย์มี equals และ toString ที่ตรวจสอบเนื้อหาของสมาชิกจริง

เหตุใด == จึงใช้ไม่ได้

การใช้ == กับอาร์เรย์จะเปรียบเทียบการอ้างอิง ไม่ใช่เนื้อหา ดังนั้นอาร์เรย์สองอาร์เรย์ที่มีสมาชิกเหมือนกันทุกประการก็ไม่ถือว่าเท่ากันด้วย ==

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(a == b);
    }
}

Arrays.equals

Arrays.equals(a, b) จะส่งคืนค่า true เมื่ออาร์เรย์ทั้งสองมีความยาวเท่ากันและมีสมาชิกเท่ากันในตำแหน่งเดียวกัน

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.equals(a, b));
    }
}

ลำดับมีความสำคัญ

ลำดับของสมาชิกมีความสำคัญ อาร์เรย์สองอาร์เรย์ที่มีค่าเหมือนกันแต่เรียงอยู่คนละลำดับจะไม่เท่ากัน

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {3, 2, 1};
        System.out.println(Arrays.equals(a, b));
    }
}

การเปรียบเทียบอาร์เรย์ของออบเจ็กต์

สำหรับอาร์เรย์ของออบเจ็กต์ Arrays.equals จะเปรียบเทียบสมาชิกโดยใช้เมธอด equals ของสมาชิกแต่ละตัว

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = {"x", "y", "z"};
        String[] b = {"x", "y", "z"};
        System.out.println(Arrays.equals(a, b));
    }
}

toString สำหรับผลลัพธ์ที่อ่านง่าย

การพิมพ์อาร์เรย์โดยตรงจะแสดงข้อความลักษณะ [I@1b6d3586 ซึ่งประกอบด้วยชื่อคลาสและค่าแฮช ส่วน Arrays.toString จะแสดงผลในรูปแบบที่อ่านง่าย เช่น [1, 2, 3]

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        System.out.println(nums);
        System.out.println(Arrays.toString(nums));
    }
}

อาร์เรย์ซ้อนกัน: deepEquals

สำหรับอาร์เรย์ของอาร์เรย์ equals แบบปกติจะตรวจสอบเฉพาะการอ้างอิงภายนอกของแต่ละแถว ให้ใช้ Arrays.deepEquals เพื่อเปรียบเทียบเนื้อหาที่ซ้อนกัน

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] b = {{1, 2}, {3, 4}};
        System.out.println(Arrays.equals(a, b));
        System.out.println(Arrays.deepEquals(a, b));
    }
}

อาร์เรย์ซ้อนกัน: deepToString

ในทำนองเดียวกัน Arrays.deepToString จะแสดงอาร์เรย์ที่ซ้อนกันให้อ่านได้อย่างชัดเจน ขณะที่ toString แบบปกติจะแสดงการอ้างอิงของอาร์เรย์ภายใน

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] grid = {{1, 2}, {3, 4}};
        System.out.println(Arrays.toString(grid));
        System.out.println(Arrays.deepToString(grid));
    }
}

hashCode สำหรับอาร์เรย์

หากคุณต้องการค่าแฮชที่คำนวณจากเนื้อหา ให้ใช้ Arrays.hashCode และใช้ Arrays.deepHashCode สำหรับอาร์เรย์ที่ซ้อนกัน เมธอดเหล่านี้สอดคล้องกับ Arrays.equals

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.hashCode(a) == Arrays.hashCode(b));
    }
}

การเปรียบเทียบหลังการเรียงลำดับ

หากต้องการตรวจสอบว่าอาร์เรย์สองอาร์เรย์มีชุดค่าที่เหมือนกันโดยไม่คำนึงถึงลำดับ ให้เรียงลำดับสำเนาของทั้งสองอาร์เรย์ แล้วเปรียบเทียบด้วย Arrays.equals

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {3, 1, 2};
        int[] b = {2, 3, 1};
        int[] ca = Arrays.copyOf(a, a.length);
        int[] cb = Arrays.copyOf(b, b.length);
        Arrays.sort(ca);
        Arrays.sort(cb);
        System.out.println(Arrays.equals(ca, cb));
    }
}

การบันทึกข้อมูลทำได้ง่าย

ระหว่างการดีบัก ให้ครอบอาร์เรย์ด้วย Arrays.toString ภายในคำสั่งพิมพ์ เพื่อให้คุณอ่านค่าได้จริงแทนที่จะเห็นเพียงการอ้างอิงที่เข้าใจยาก

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจของคุณเกี่ยวกับการเปรียบเทียบอาร์เรย์

ทบทวน

คุณได้เรียนรู้การเปรียบเทียบและการแสดงผลอาร์เรย์แล้ว

  • == จะเปรียบเทียบการอ้างอิง ส่วน Arrays.equals ใช้สำหรับเปรียบเทียบความเท่ากันของเนื้อหา
  • ทั้งลำดับและความยาวมีความสำคัญ
  • Arrays.toString ให้ผลลัพธ์ที่อ่านง่าย ส่วน deepToString รองรับอาร์เรย์ที่ซ้อนกัน
  • deepEquals ใช้เปรียบเทียบอาร์เรย์ที่ซ้อนกัน

คำถามที่พบบ่อย

บทเรียน “Arrays.equals และ toString” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Arrays.equals และ toString” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Arrays.equals และ toString”

เปรียบเทียบและแสดงอาร์เรย์ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “Arrays.equals และ toString” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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