JavaRush /จาวาบล็อก /Random-TH /ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียน Java

ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียน Java

เผยแพร่ในกลุ่ม
ระดับความรู้ที่จำเป็นในการทำความเข้าใจบทความ:ระดับเริ่มต้น คุณกำลังอยู่ในกระบวนการศึกษาภารกิจ Java Syntax และใกล้จะถึงระดับเริ่มต้นแล้ว ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียนรู้ Java - 1คุณเพิ่งเริ่มเรียนรู้ Java คุณถูกโจมตีด้วยคำศัพท์ราวกับมาจากความอุดมสมบูรณ์ คุณเต็มไปด้วยข้อมูลทางเทคนิคมากมาย และบางครั้งคุณอาจสับสนกับต้นสนสามต้น เชื่อฉันสิ ในเมื่อคุณได้มีส่วนร่วมในการเขียนโปรแกรม มันก็จะเป็นเช่นนั้นเสมอไป (ในขณะนี้ เสียงหัวเราะที่เป็นลางร้ายดังนอกจอ และเสียงเงียบ ๆ ตัดประโยคกลาง ๆ ออกไป กระซิบว่า “วิ่ง... ช่วยตัวเองไว้ก่อน” สายไปแล้ว..."). แมลงจะหลอกหลอนคุณไปตลอดชีวิตการเขียนโปรแกรม แม้ว่าคุณจะเป็น Developer ที่เก่งที่สุดก็ตาม อย่างไรก็ตาม นี่ไม่ได้น่ากลัวอย่างที่คิดเลย
หากคุณเพิ่งเริ่มเรียนรู้ JavaRush เป็นไปได้มากว่าคุณประสบปัญหาที่เกิดขึ้นในบทความแล้ว ไม่ว่าในกรณีใด เรายินดีรับฟังความคิดเห็นที่อธิบายถึงปัญหาที่คุณพบในช่วงเดือนแรกของการเรียนรู้ Java

ปัญหาระดับ 0: สับสนกับตัวดำเนินการเปรียบเทียบ (==) และตัวดำเนินการกำหนด (=)

นี่เป็นปัญหาที่พบบ่อยมากสำหรับผู้ที่เปลี่ยนจากภาษาการเขียนโปรแกรมอื่น และโดยทั่วไปตั้งแต่ชั้นประถมศึกษาเราคุ้นเคยกับความจริงที่ว่า(=)นี่เป็นสัญญาณที่เท่าเทียมกัน เคล็ดลับง่ายๆ ที่สามารถใช้เพื่อจำได้คือ: หากคุณรู้ว่าคุณสนใจเพียงค่าใดค่าหนึ่ง (คุณกำหนดค่าหนึ่งให้กับค่าอื่น) คุณจะใช้เครื่องหมาย " " เดียว=มิฉะนั้น หากคุณสนใจตัวแปรทั้งหมด และค่า (คุณเปรียบเทียบ) คุณต้องมี==เครื่องหมาย " " สองเท่า

ปัญหา: การใช้ตัวดำเนินการเปรียบเทียบ (==) เพื่อทดสอบความเท่าเทียมกันของสตริง

สิ่งที่ต้องทำ:โปรดจำไว้ว่าไม่สามารถตรวจสอบออบเจ็กต์ Java เพื่อความเท่าเทียมกันได้โดยใช้(==)เนื่องจากตัวดำเนินการนี้ได้รับการออกแบบมาเพื่อทดสอบความเท่าเทียมกันของประเภทดั้งเดิม
ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียนรู้ Java - 2
สำหรับวัตถุคุณต้องใช้.equals(). และStringในภาษา Java มันไม่มีอะไรมากไปกว่าวัตถุ (และimmutable)
วัตถุที่ถูกทำเครื่องหมายเป็นImmutable คือวัตถุที่ไม่สามารถเปลี่ยนแปลงสถานะได้หลังจากการสร้าง ในJavaนี่หมายความว่าฟิลด์อินสแตนซ์ทั้งหมดของคลาสจะถูกทำเครื่องหมายเป็นfinalและเป็นแบบดั้งเดิม (หรือด้วยimmutable)

ปัญหา: การต่อสตริงในลูป

อย่าลองด้วยตัวเอง! แต่ละครั้งที่สตริงถูกต่อเข้าด้วยกัน ออบเจ็กต์ใหม่จะถูกสร้างขึ้นString(ดังที่เราพบข้างต้น สตริงimmutableจะไม่เปลี่ยนรูป) เมื่อถึงจุดหนึ่ง หน่วยความจำจะหมดหรือโปรแกรมเริ่มใช้เวลานานเกินไปในการดำเนินการให้เสร็จสิ้น สารละลาย. ใช้StringBuilderแทนStringเมื่อเชื่อมต่อเนื้อหาในวง คลาสนี้StringBuilderใช้เมื่อคุณต้องการเปลี่ยนแปลงสตริงอักขระจำนวนมาก และบรรทัดดังกล่าวไม่เหมือนStringไม่ใช่immutableไม่ใช่

ปัญหา: NullPointerException

ข้อยกเว้นประเภทนี้เกิดขึ้นเมื่อเราพยายามใช้ตัวชี้ว่างnullแต่จริงๆ แล้วเราต้องการวัตถุจริง
ประเภทดั้งเดิมทั้งหมดมีค่าเริ่มต้น ดังนั้น y intคือ0และy booleanคือ falseค่าเริ่มต้นของประเภทการอ้างอิงใดๆ ซึ่งก็คือออบเจ็กต์nullคือ ไม่ใช่วัตถุหรือประเภท แต่เป็นค่าพิเศษ ซึ่งโดยพื้นฐานแล้วหมายความว่า "ไม่มีอะไรที่นี่"
ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียนรู้ Java - 3
สิ่งที่ต้องทำ:หากโค้ดของคุณเขียนในลักษณะที่ออบเจ็กต์ของคุณสามารถยอมรับค่าได้nullคุณจะต้องเพิ่ม "ตรวจสอบnull" โดยเฉพาะอย่างยิ่งหากคุณไม่ได้สร้างออบเจ็กต์ด้วยตัวเอง นอกจากนี้ โปรดจำไว้ว่า เป็นการดีกว่าที่จะส่งคืนคอลเล็กชันที่ว่างเปล่ามากกว่าชุดของnull's นอกจากนี้ยังเป็นการดีที่จะเพิ่มการตรวจสอบความถูกต้องสำหรับผู้ได้รับและผู้ตั้งค่า

ปัญหา: ด้วยเหตุผลบางประการ if / while / for loop ไม่ทำงาน

if (something.equals («что-то еще»)); {// <---- корень зла!!!
     System.out.println («Почему я не работаю???»);
}
เกิดอะไรขึ้นที่นี่? ง่ายมาก: เครื่องหมายอัฒภาคเพิ่มเติมทำให้โปรแกรมเมอร์ Java มือใหม่หลายแสนคนเสียไป คุณไม่ต้องการมันหลังจากif ()นั้น จากมุมมองของภาษา ไวยากรณ์ดังกล่าวค่อนข้างยอมรับได้ ดังนั้นคอมไพเลอร์จะไม่บ่นเกี่ยวกับเรื่องนี้ แต่จะยุติคำสั่งแบบมีเงื่อนไข และโค้ดภายในบล็อก{}จะไม่เป็นไปตามเงื่อนไขข้างต้น
ปัญหาที่พบบ่อยที่สุดของผู้ที่เริ่มเรียนรู้ Java - 4
วิธีแก้ไข:จำตรรกะการออกแบบ เครื่องหมาย " ;" หมายถึงจุดสิ้นสุดของช่วงตึกหนึ่ง แต่ที่นี่ทุกอย่างเพิ่งเริ่มต้น

ปัญหา: พยายามเข้าถึงตัวแปรสมาชิกที่ไม่คงที่จากวิธีการคงที่ (เช่น main)

สารละลาย . ปัญหานี้เกี่ยวข้องกับความเข้าใจในแนวคิดนั้นstaticเอง ถ้าเมธอดถูกทำเครื่องหมายด้วยคำนี้ หมายความว่าเราไม่จำเป็นต้องสร้างอินสแตนซ์ของคลาสเพื่อเรียกเมธอดหลัก ดังนั้นวิธีแก้ปัญหาคือการมีความเข้าใจที่ดีเกี่ยวกับ "สถิตยศาสตร์" และเข้าใจสาระสำคัญของมัน

ปัญหา: พยายามสร้างวงล้อขึ้นมาใหม่โดยพัฒนาห้องสมุดและเครื่องมือที่มีอยู่แล้ว

สารละลาย. จริงๆ มันก็ไม่ได้เป็นปัญหามากนัก สำหรับมือใหม่ นี่เป็นแบบฝึกหัดที่มีประโยชน์มากกว่า อย่างไรก็ตาม หากคุณต้องการเน้นไปที่ผลลัพธ์ เช่น การสร้างฐานข้อมูลสมาชิกที่สะดวก การค้นหาสมาชิกในสมุดโทรศัพท์ก็เป็นเพียงหนึ่งในผลลัพธ์ของแอปพลิเคชันของคุณ ในกรณีนี้ ไม่จำเป็นต้องเขียนอัลกอริทึมการค้นหาแบบไบนารี ใช้อันที่มีอยู่ (เรารับรองว่ามีคนเขียนไว้ก่อนหน้าคุณแล้วและอยู่ในไลบรารีมาตรฐาน) ดังนั้นให้ศึกษาไลบรารีมาตรฐาน Java ในเอกสารประกอบของ Oracle เรียนรู้เกี่ยวกับ Google ทำความคุ้นเคยกับการอ่าน Stack Overflow และถามคำถามเกี่ยวกับความช่วยเหลือ JavaRush ! ...แน่นอนว่านี่ไม่ใช่ปัญหาของมือใหม่ทั้งหมด อธิบายของคุณในความคิดเห็น! คุณสนใจที่จะอ่านบทความที่เกี่ยวข้องกับ Java หรือไม่? เข้าร่วม กลุ่มนักพัฒนา Java มีสิ่งที่น่าสนใจมากมายที่นี่
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION