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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Arrays.sort และการเรียงลำดับ
- Arrays.binarySearch
- Arrays.fill และ copyOf
- Arrays.equals และ toString