คำถามติดแท็ก java

Java เป็นภาษาการเขียนโปรแกรมเชิงวัตถุในระดับสูงที่พัฒนาโดย Sun Microsystems ปัจจุบัน Java เป็นเจ้าของโดย Oracle ซึ่งซื้อ Sun ในปี 2010

4
อินเตอร์เฟสว่างเพื่อรวมหลายอินเตอร์เฟส
สมมติว่าคุณมีสองอินเตอร์เฟส: interface Readable { public void read(); } interface Writable { public void write(); } ในบางกรณีวัตถุที่ใช้งานสามารถรองรับหนึ่งในสิ่งเหล่านี้ แต่ในหลายกรณีการใช้งานจะสนับสนุนทั้งสองอินเตอร์เฟส ผู้ใช้อินเทอร์เฟซจะต้องทำสิ่งที่ชอบ: // can't write to it without explicit casting Readable myObject = new MyObject(); // can't read from it without explicit casting Writable myObject = new MyObject(); // tight coupling to actual implementation …

8
Java - ทำไมเราจึงเรียกอาร์เรย์ว่า“ เวกเตอร์”?
ฉันกำลังอ่านหนังสือเกี่ยวกับ Java Programming และต้องการยืนยันว่าฉันเข้าใจคำจำกัดความของคำว่า "vector" วิกิพีเดียบอกว่าเวกเตอร์คือ "อาร์เรย์หนึ่งมิติ" แหล่งhttp://en.wikipedia.org/wiki/Vector การเรียกอาเรย์นั้นง่ายกว่านี้หรือไม่? มีเหตุผลใดบ้างที่เราจำเป็นต้องใช้ภาษาแฟนซีเช่น "เวกเตอร์"? มีความแตกต่างระหว่างอาร์เรย์และเวกเตอร์หรือไม่? ที่มา: แคร็กสัมภาษณ์การเข้ารหัสรุ่นที่ 4 โดย Gayle McDowell หน้า 47 คำถามที่พบบ่อย Q - ทำไมคุณไม่โพสต์สิ่งนี้บน english.stackexchange.com? - เพราะฉันคิดว่ามี แต่วิทยาการคอมพิวเตอร์ที่มุ่งเน้นผู้คนเท่านั้นที่จะได้คำตอบที่ดี
20 java 

5
วิธีที่มีประสิทธิภาพในการสลับวัตถุ
ฉันกำลังเขียนโปรแกรมสำหรับซอฟต์แวร์ตอบคำถาม ฉันมีชั้นคำถามที่มี ArrayLists สำหรับคำถามคำตอบตัวเลือกเครื่องหมายและเครื่องหมายลบ บางสิ่งเช่นนี้ class question { private ArrayList<Integer> index_list; private ArrayList<String> question_list; private ArrayList<String> answer_list; private ArrayList<String> opt1_list; private ArrayList<String> opt2_list; } ฉันต้องการสลับคำถามทั้งหมด แต่สำหรับคำถามที่จะสับได้วัตถุทั้งหมดต้องถูกสับ ฉันจะเข้าหาปัญหานี้ด้วยวิธีนี้: ก่อนอื่นฉันจะไม่ใช้การออกแบบนี้และใช้ String ที่ไม่ArrayList<String>พิมพ์เป็นตัวแปรอินสแตนซ์และจากนั้นจะใช้Collections.shuffleวิธีการสลับวัตถุ แต่ทีมของฉันยืนยันในการออกแบบนี้ ตอนนี้คลาสคำถามจะมี ArrayLists ที่เพิ่มขึ้นเมื่อมีการป้อนคำถาม จะสลับคำถามได้อย่างไร
20 java  collections 

6
การทำให้เป็นอันดับ Java - ข้อดีและข้อเสียใช้หรือหลีกเลี่ยง? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว การทำให้เป็นอนุกรมใช้สำหรับการคงอยู่ใน Java มันอาจไม่เป็นไรที่จะคงอยู่วัตถุบางอย่างที่ใช้เป็นอันดับ แต่สำหรับวัตถุจำนวนมาก ORM ฐานข้อมูล ฯลฯ อาจดีกว่า ดูเหมือนว่าการจัดลำดับจะมีประโยชน์สำหรับงานขนาดเล็กเท่านั้น อาจเป็นฉันผิด ดังนั้นโปรดบอกฉันว่าข้อดีของการทำให้เป็นอนุกรมมากกว่าวิธีที่ไม่เป็นอนุกรมนั้นคืออะไร ควรใช้เมื่อใดและควรหลีกเลี่ยงเมื่อใด คำถามนี้มาถึงใจหลังจากเห็นบทความ DZone Is Object Serialization Evil หรือไม่? และนี่คือบรรทัดที่ก่อให้เกิดคำถามของฉัน: หากคุณดูที่ Java และวัตถุเซสชันจะมีการใช้การทำให้เป็นอันดับวัตถุอย่างแท้จริง สมมติว่าเซสชันแอปพลิเคชันค่อนข้างสั้นซึ่งมีความหมายมากที่สุดในเวลาไม่กี่ชั่วโมงการทำให้เป็นอันดับวัตถุนั้นง่าย ๆ ได้รับการสนับสนุนอย่างดีและสร้างขึ้นในแนวคิด Java ของเซสชัน อย่างไรก็ตามเมื่อการคงอยู่ของข้อมูลเป็นระยะเวลานานอาจเป็นวันหรือหลายสัปดาห์และคุณต้องกังวลเกี่ยวกับแอพพลิเคชั่นใหม่ ๆ ตามที่นักพัฒนา Java ที่ดีทุกคนรู้ถ้าคุณวางแผนที่จะทำให้เป็นอันดับวัตถุแม้ในเซสชั่นคุณต้องมีซีเรียลไลซ์เซชั่น ID จริง ๆ (serialVersionUID) ไม่ใช่แค่ 1L และคุณต้องใช้อินเตอร์เฟส Serializable อย่างไรก็ตามผู้พัฒนาส่วนใหญ่ไม่ทราบกฎที่แท้จริงที่อยู่เบื้องหลังกระบวนการดีซีเรียลไลเซชั่น Java …

4
เหตุใดขนาดฮีปจึงถูกแก้ไขใน JVM
ใครสามารถอธิบายให้ฉันฟังได้ว่าทำไม JVM (ฉันไม่ได้ตรวจสอบมากเกินไป แต่ฉันไม่เคยเห็นใครที่ไม่ได้ทำแบบนั้น) จำเป็นต้องใช้ขนาดฮีปคงที่ ฉันรู้ว่ามันง่ายกว่าที่จะนำไปใช้กับกองซ้อนที่เรียบง่าย แต่ตอนนี้ Sun JVM มีอายุเกินหนึ่งทศวรรษแล้วดังนั้นฉันจึงคาดหวังให้พวกเขามีเวลาปรับปรุงสิ่งนี้ จำเป็นต้องกำหนดขนาดหน่วยความจำสูงสุดของโปรแกรมของคุณเมื่อเวลาเริ่มต้นดูเหมือนว่าสิ่งที่ต้องทำ 1960 และมีการโต้ตอบที่ไม่ดีกับการจัดการหน่วยความจำเสมือนของ OS (GC การดึงข้อมูลสลับไม่สามารถกำหนดจำนวนหน่วยความจำกระบวนการ Java ใช้งานจริงจากทางด้าน OS พื้นที่ VM จำนวนมากสูญเปล่า (ฉันรู้ว่าคุณไม่สนใจเครื่อง 48 บิตแฟนซีของคุณ ... )) ฉันยังเดาว่าความพยายามเศร้าต่าง ๆ ในการสร้างระบบปฏิบัติการขนาดเล็กภายใน JVM (EE แอ็พพลิเคชันเซิร์ฟเวอร์ OSGi) เป็นอย่างน้อยบางส่วนที่จะตำหนิในสถานการณ์เช่นนี้เพราะการเรียกใช้กระบวนการ Java หลายกระบวนการบนระบบนำไปสู่การสูญเสียทรัพยากร ให้หน่วยความจำแต่ละอันที่พวกเขาอาจต้องใช้สูงสุด น่าแปลกใจที่ Google ไม่ได้ยอมแพ้กับความชั่วร้ายที่เกิดขึ้นกับสิ่งที่ฉันคาดหวัง แต่พวกเขาอาจถูกฝังอยู่ใต้ผู้คนหลายล้านคนเพื่อค้นหาขนาดกองที่มั่นคงและยอมรับความจริง
20 java 

3
marshaller และ serializer แตกต่างกันอย่างไร
... และ unmarshalling / deserializing หรือไม่ คำอธิบายของ Wikipediaทำให้ฉันไม่มีใครฉลาด! ฉันเป็นโปรแกรมเมอร์ Java ในกรณีที่มีการใช้คำศัพท์ต่างกันในภาษาต่างๆ
20 java  xml 

4
ใครขยายส่วนต่อประสาน? และทำไม?
AFAIK คลาสextendsแม่และคลาสimplementsอินเทอร์เฟซของฉัน implements SomeInterfaceแต่ผมทำงานในสถานการณ์ที่ฉันไม่สามารถใช้ มันคือการประกาศประเภททั่วไป ตัวอย่างเช่น: public interface CallsForGrow {...} public class GrowingArrayList <T implements CallsForGrow> // BAD, won't work! extends ArrayList<T> ที่นี่ใช้implementsเป็นสิ่งต้องห้าม syntactically ฉันคิดก่อนว่าการใช้อินเทอร์เฟซภายใน <> นั้นเป็นสิ่งต้องห้าม แต่ไม่ใช่ มันเป็นไปได้ฉันมีเพียงแค่ใช้ แทนextends implementsเป็นผลให้ฉัน "ขยาย" อินเทอร์เฟซ ตัวอย่างอื่นนี้ใช้งานได้: public interface CallsForGrow {...} public class GrowingArrayList <T extends CallsForGrow> // this works! extends ArrayList<T> สำหรับฉันดูเหมือนว่าจะไม่สอดคล้องกันทางไวยากรณ์ …

7
Java IDE เขียนด้วยภาษาจาวาบริสุทธิ์ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา มี Java IDE เขียนใน Java หรือไม่ ฉันเพิ่งได้แล็ปท็อป DET ปี 9 ที่โรงเรียนในวันนี้และมีข้อ จำกัด ทุกประเภท ค่อนข้างน่ารำคาญคุณไม่สามารถเรียกใช้งานโปรแกรมอื่นนอกเหนือจากที่ติดตั้งไว้แล้วในระบบ (ด้วยเหตุผลบางอย่างที่พวกเขาไม่ได้ปิดการใช้งานพรอมต์คำสั่งPowerShellหรือ regedit แปลก ๆ ) พวกเขาอนุญาตให้คุณเรียกใช้โปรแกรมปฏิบัติการ Java ดังนั้นฉันคิดว่ามันจะเป็นวิธีเดียวที่จะสามารถเขียนโปรแกรมบนแล็ปท็อปเส็งเคร็งของฉันที่โรงเรียน (เมื่อฉันทำงานทั้งหมดเสร็จตามธรรมชาติ): D แก้ไข: โดยเขียนใน Java ฉันยังหมายความว่าปฏิบัติการที่ใช้ในการเรียกใช้โปรแกรมที่มีนามสกุลไฟล์ "ขวด" จึงทำงานบนJVM แก้ไข 2: ฉันลองDrJava IDE และมันใช้งานได้ดีขอบคุณ (ฉันสามารถรวบรวมและรันโปรแกรม)! เกี่ยวกับการรัน Eclipse ผ่านบรรทัดคำสั่งโดยใช้คำสั่ง …

6
แนวทางปฏิบัติที่ดีที่สุดในการเขียนความคิดเห็นและเอกสาร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา การแสดงความคิดเห็นในปัจจุบันนั้นง่ายกว่าที่เคย ใน Java มีเทคนิคที่ดีในการเชื่อมความคิดเห็นไปยังคลาสและ Java IDEs สามารถสร้างเชลล์ความคิดเห็นให้คุณได้ดี ภาษาเช่น Clojure ช่วยให้คุณสามารถเพิ่มคำอธิบายของฟังก์ชันในโค้ดฟังก์ชันเองเป็นอาร์กิวเมนต์ อย่างไรก็ตามเรายังคงอยู่ในยุคที่มักมีความคิดเห็นล้าสมัยหรือไม่ดีเขียนโดยนักพัฒนาที่ดี - ฉันสนใจที่จะปรับปรุงความทนทานและประโยชน์ของความคิดเห็นของฉัน โดยเฉพาะฉันสนใจ Java / Clojure / Python ที่นี่ แต่คำตอบไม่จำเป็นต้องเฉพาะภาษา มีเทคนิคใด ๆ ที่เกิดขึ้นใหม่ที่ตรวจสอบความคิดเห็นและตรวจสอบความคิดเห็น "บอบบาง" โดยอัตโนมัติ (ตัวอย่างเช่นความคิดเห็นที่มีหมายเลขเวทย์มนตร์ประโยคที่ไม่สมบูรณ์ ฯลฯ ) หรือความคิดเห็นที่ไม่ถูกต้อง (ตัวอย่างเช่นการตรวจสอบตัวแปรที่สะกดผิด และที่สำคัญยิ่งกว่า: มี "นโยบายการแสดงความคิดเห็น" หรือกลยุทธ์ที่ยอมรับได้หรือไม่? มีคำแนะนำมากมายเกี่ยวกับวิธีการเขียนโค้ด - แต่จะมีวิธีการอย่างไรในการแสดงความคิดเห็น?

2
วิธีการโมฆะ Java เป็นโมฆะกลับนี้
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่ผ่านมา มีการสนทนาสองสามครั้งเกี่ยวกับ SO เกี่ยวกับเมธอด setter ที่ส่งคืนชนิด "this" และดูเหมือนว่า java 7 มีข้อเสนอของวิธีการโมฆะส่งกลับนี้ แต่ข้อเสนอนี้ไม่สามารถใช้กับคุณสมบัติของ Java 7 ได้ ฉันไม่พบว่าข้อเสนอนี้ถูกย้ายไปยังจาวา 8 หรือในอนาคตหรือถูกยกเลิกไปอย่างสมบูรณ์แล้ว ใช่ไหม? ลิงก์อ้างอิง - /programming/31584/design-java-and-returning-self-reference-in-setter-methods
20 java 

8
วิธีการกระจายความรู้สำหรับการเขียนโปรแกรมทั่วไปในหมู่สมาชิกในทีม?
ฉันอยู่ในสภาพแวดล้อมที่ผู้คนเชื่อว่า: Java generics เป็นคุณสมบัติที่ใช้สำหรับการเขียนไลบรารีโดยเฉพาะและไม่ใช่การเข้ารหัสที่แท้จริง C ++ เป็นภาษาการเขียนโปรแกรม OO; templateเป็นคุณสมบัติเสริมและหลีกเลี่ยงได้ แม้ว่าคนเหล่านี้จะพึ่งพาไลบรารีที่เขียนโดยใช้โปรแกรมทั่วไป (เช่น STL, คอนเทนเนอร์ Java) ถ้าผมเขียนโค้ดที่ใช้templateหรือgenericsรหัสวิจารณ์มีแนวโน้มที่จะปฏิเสธมันและจะแสดงความคิดเห็นที่จะเขียนมันใน"เหมาะสม / เข้าใจ / สง่างาม"วิธี ความคิดดังกล่าวสามารถใช้งานได้จากโปรแกรมเมอร์ปกติถึงผู้จัดการส่วนใหญ่อาวุโส ไม่มีทางออกเพราะ 90% ของเวลาคนเหล่านี้มีการวิ่งเต้น เป็นวิธีที่ดีที่สุด ( ไม่ถูกตัดคอ ) ของการอธิบายพวกเขาวิธีการปฏิบัติของการเขียนโค้ดซึ่งประกอบด้วย OO และการเขียนโปรแกรมทั่วไปทั้งสองในเวลาเดียวกันคืออะไร?
20 java  c++  templates  generics 

7
Java (ยัง) เป็นภาษาข้ามแพลตฟอร์มที่เลือกหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อฉันเริ่มใช้ Java ใน nineties นั่นคือทั้งหมด " เขียนครั้งเดียวทำงานได้ทุกที่ " ตั้งแต่วันแรก นั่นอาจเป็นจริงทั้งหมดและฉันก็เป็นส่วนหนึ่งของคณะนักร้องด้วย ฉันไม่แน่ใจว่าจะต้องคิดอะไรอีกต่อไปพิจารณาภาษาอื่น ๆ ทั้งหมดโดยใช้หลายแพลตฟอร์มรันไทม์ (python, flash, perl, html, php ... ) แต่ฉันยังเห็นข้อโต้แย้งมากมายที่บอกว่าคุณควรใช้ Java เพราะมันควรจะดีกว่าสำหรับการพัฒนาข้ามแพลตฟอร์ม ดังนั้นวันนี้ยังเป็นจริงหรือไม่? Java ยังคงเป็นภาษาของทางเลือกสำหรับการพัฒนาหลายแพลตฟอร์มหรือไม่? โปรดเจาะจงโดยเน้นด้านข้ามแพลตฟอร์ม ฉันไม่ได้ขอเปรียบเทียบคุณสมบัติทั่วไปของภาษา อัปเดต: การตอบสนองที่ยอดเยี่ยม! คำตอบส่วนใหญ่น่าจะเป็นที่นิยม Java หรือเว็บ ข้อมูลใด ๆ จากฝูงชนสคริปต์หรือไม่

9
init () มีวิธีการดมกลิ่นของรหัสหรือไม่?
มีวัตถุประสงค์ในการประกาศinit()วิธีการสำหรับประเภทใด ๆ ? ฉันไม่ได้ถามว่าเราควรจะต้องการinit()มากกว่านวกรรมิกหรือวิธีการหลีกเลี่ยงการประกาศinit() ฉันถามว่ามีเหตุผลใด ๆ ที่อยู่เบื้องหลังการประกาศinit()วิธีการ (ดูว่ามันเป็นเรื่องธรรมดา) หรือไม่ถ้ามันเป็นกลิ่นรหัสและควรหลีกเลี่ยง init()สำนวนเป็นเรื่องธรรมดามาก แต่ผมยังไม่เห็นประโยชน์ที่แท้จริงใด ๆ ฉันกำลังพูดถึงประเภทที่สนับสนุนการเริ่มต้นด้วยวิธีการ: class Demo { public void init() { //... } } สิ่งนี้จะใช้ในรหัสการผลิตเมื่อใด ฉันรู้สึกว่ามันอาจจะเป็นกลิ่นรหัสเพราะมันบอกว่านวกรรมิกไม่เริ่มต้นวัตถุอย่างสมบูรณ์ทำให้วัตถุที่สร้างขึ้นบางส่วน วัตถุไม่ควรมีอยู่หากไม่ได้ตั้งสถานะ นี่ทำให้ฉันเชื่อว่ามันอาจเป็นส่วนหนึ่งของเทคนิคบางชนิดที่ใช้เพื่อเพิ่มความเร็วในการผลิตในแง่ของการใช้งานระดับองค์กร มันเป็นเหตุผลเดียวที่ฉันคิดได้ว่ามีสำนวนแบบนี้ฉันไม่แน่ใจว่ามันจะมีประโยชน์อย่างไรถ้าเป็นเช่นนั้น

7
เหตุใด Java จึงมีพื้นฐานสำหรับตัวเลขขนาดแตกต่างกัน
ใน Java มีชนิดดั้งเดิมสำหรับbyte, short, intและlongและสิ่งเดียวกันและfloat doubleเหตุใดจึงจำเป็นต้องให้บุคคลตั้งค่าจำนวนไบต์ที่ควรใช้สำหรับค่าดั้งเดิม ไม่สามารถกำหนดขนาดแบบไดนามิกได้ขึ้นอยู่กับว่าจำนวนที่ส่งผ่านนั้นใหญ่แค่ไหน มี 2 ​​เหตุผลที่ฉันนึกถึง: การตั้งค่าขนาดของข้อมูลแบบไดนามิกหมายความว่ามันจะต้องสามารถเปลี่ยนแบบไดนามิกได้เช่นกัน สิ่งนี้อาจทำให้เกิดปัญหาประสิทธิภาพหรือไม่ บางทีโปรแกรมเมอร์อาจไม่ต้องการให้ใครบางคนสามารถใช้ตัวเลขที่ใหญ่กว่าขนาดที่กำหนดและช่วยให้พวกเขา จำกัด มันได้ ฉันยังคงคิดว่าจะได้รับประโยชน์มากมายจากการใช้งานแบบเดี่ยวintและfloatแบบเรียบง่ายมีเหตุผลบางประการที่ Java ตัดสินใจไม่ให้ไปเส้นทางนี้หรือไม่?

7
ความแตกต่างระหว่างรูปแบบและหลักการ
รูปแบบการออกแบบเชิงวัตถุและหลักการต่างกันอย่างไร พวกเขาต่างกันไหม? เท่าที่ฉันเข้าใจพวกเขาทั้งสองพยายามบรรลุเป้าหมายร่วมกัน (เช่นความยืดหยุ่น) ดังนั้นฉันสามารถพูดได้ว่ารูปแบบเป็นหลักการและในทางกลับกัน? หลักการออกแบบ = SOLID (เช่นหลักการผกผันของการพึ่งพา) รูปแบบการออกแบบ = Gof (เช่นรูปแบบนามธรรมของโรงงาน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.