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

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

6
ต้องการสมาชิกชั้นเรียนหรือผ่านการขัดแย้งระหว่างวิธีการภายใน?
สมมติว่าในส่วนส่วนตัวของคลาสมีค่าที่ใช้โดยวิธีส่วนตัวหลายวิธี คนชอบมีการกำหนดนี้เป็นตัวแปรสมาชิกสำหรับชั้นเรียนหรือผ่านมันเป็นอาร์กิวเมนต์สำหรับแต่ละวิธี - และทำไม ในอีกด้านหนึ่งฉันสามารถเห็นการโต้เถียงที่จะทำให้การลดสถานะ (เช่นตัวแปรสมาชิก) ในชั้นเรียนโดยทั่วไปเป็นสิ่งที่ดีแม้ว่าค่าเดียวกันจะถูกใช้ซ้ำหลายครั้งตลอดทั้งวิธีการเรียนดูเหมือนว่าจะเหมาะ ผู้สมัครเพื่อเป็นตัวแทนของรัฐในชั้นเรียนเพื่อให้รหัสชัดเจนขึ้นถ้าไม่มีอะไรอื่น แก้ไข: เพื่ออธิบายความเห็น / คำถามบางอย่างที่ยกขึ้นฉันไม่ได้พูดถึงค่าคงที่และนี่ไม่ได้เกี่ยวข้องกับกรณีเฉพาะ แต่เป็นเพียงสมมติฐานที่ฉันได้พูดคุยกับคนอื่น ๆ ไม่สนใจมุม OOP สักครู่กรณีการใช้งานเฉพาะที่ฉันมีในใจคือต่อไปนี้ (สมมติว่าผ่านโดยการอ้างอิงเพียงเพื่อให้ตัวทำความสะอาดรหัสเทียม) int x doSomething(x) doAnotherThing(x) doYetAnotherThing(x) doSomethingElse(x) ดังนั้นสิ่งที่ฉันหมายถึงคือมีตัวแปรบางอย่างที่เป็นเรื่องธรรมดาระหว่างฟังก์ชั่นหลายอย่าง - ในกรณีที่ฉันจำได้ว่ามันเป็นเพราะการผูกมัดของฟังก์ชั่นขนาดเล็ก ในระบบ OOP หากวิธีการเหล่านี้เป็นวิธีการเรียน (พูดเนื่องจากการปรับโครงสร้างด้วยวิธีการแยกจากวิธีการขนาดใหญ่) ตัวแปรนั้นสามารถส่งผ่านไปรอบ ๆ พวกเขาทั้งหมดหรืออาจเป็นสมาชิกชั้นเรียน

3
ทำไมโอเปอเรเตอร์ NOT แบบลอจิคัลในภาษา C-style“!” และไม่ใช่“ ~~”?
สำหรับตัวดำเนินการไบนารีเรามีตัวดำเนินการทั้งสองบิตและตรรกะ: & bitwise AND | bitwise OR && logical AND || logical OR ไม่ใช่ (โอเปอเรเตอร์ unary) ทำงานแตกต่างกัน มี ~ สำหรับ bitwise และ! สำหรับตรรกะ ฉันจำไม่ได้ว่าเป็นการดำเนินการที่ไม่เป็นเอกเทศเมื่อเทียบกับ AND และหรือ แต่ฉันไม่สามารถคิดได้ว่าทำไมนักออกแบบเลือกที่จะเบี่ยงเบนจากหลักการที่ว่าซิงเกิลเป็น bitwise และ Double นั้นมีเหตุผลที่นี่และเปลี่ยนไปใช้ตัวละครอื่นแทน ฉันเดาว่าคุณสามารถอ่านมันผิดเช่นการดำเนินการสองบิตที่จะคืนค่าตัวถูกดำเนินการ แต่นั่นไม่ได้เป็นปัญหาที่แท้จริงสำหรับฉัน มีเหตุผลที่ฉันขาดหายไปหรือไม่?
39 java  c#  c++  c 

8
นานแค่ไหนที่จะรอก่อนที่จะลบวิธีการเลิก? [ปิด]
ฉันกำลังรักษา API สาธารณะและต้องเลิกใช้วิธีการ มีกฎทั่วไปเกี่ยวกับจำนวนเดือน / ปี / รุ่นก่อนการลบฉันควรคัดค้านวิธีการหรือไม่?
38 java  deprecation 

7
มันสมเหตุสมผลหรือไม่ที่จะสร้างบล็อกเพื่อลดขอบเขตของตัวแปร?
ฉันกำลังเขียนโปรแกรมใน Java ซึ่ง ณ จุดหนึ่งฉันต้องโหลดรหัสผ่านสำหรับที่เก็บคีย์ของฉัน เพื่อความสนุกฉันพยายามเก็บรหัสผ่านของฉันไว้ในจาวาให้สั้นที่สุดโดยทำสิ่งนี้: //Some code .... KeyManagerFactory keyManager = KeyManagerFactory.getInstance("SunX509"); Keystore keyStore = KeyStore.getInstance("JKS"); { char[] password = getPassword(); keyStore.load(new FileInputStream(keyStoreLocation), password); keyManager.init(keyStore, password); } ... //Some more code ตอนนี้ฉันรู้ว่าในกรณีนี้มันเป็นใบ้ มีสิ่งอื่น ๆ อีกมากมายที่ฉันสามารถทำได้ส่วนใหญ่จริง ๆ แล้วดีกว่า (ฉันไม่เคยใช้ตัวแปรเลย) อย่างไรก็ตามฉันสงสัยว่ามีกรณีที่การทำเช่นนี้ไม่ได้โง่ขนาดนั้น สิ่งเดียวที่ฉันคิดได้ก็คือถ้าคุณต้องการใช้ชื่อตัวแปรที่เหมือนกันอีกครั้งเช่นcountหรือtempแต่การตั้งชื่อที่ดีและวิธีการสั้น ๆ ทำให้มันไม่น่าเป็นไปได้ที่จะเป็นประโยชน์ มีกรณีที่ใช้บล็อกเพียงเพื่อลดขอบเขตตัวแปรที่เหมาะสมหรือไม่?
38 java  variables  scope 

2
ภาษาสมัยใหม่ยังใช้เครื่องแยกวิเคราะห์หรือไม่?
ฉันกำลังค้นคว้าเกี่ยวกับชุดคอมไพเลอร์ gcc ในวิกิพีเดียที่นี่เมื่อสิ่งนี้เกิดขึ้น: GCC เริ่มต้นใช้ตัวแยกวิเคราะห์ LALR ที่สร้างด้วย Bison แต่ค่อย ๆ เปลี่ยนเป็นตัวแยกวิเคราะห์แบบสืบเชื้อสายแบบเขียนด้วยมือซ้ำ; สำหรับ C ++ ในปี 2004 และสำหรับ C และ Objective-C ในปี 2549 ปัจจุบันส่วนหน้าทั้งหมดใช้ตัวแยกวิเคราะห์ที่เขียนด้วยมือแบบเรียกซ้ำ ดังนั้นด้วยประโยคสุดท้ายนั้น (และสำหรับที่ฉันไว้ใจ wikipedia) ฉันสามารถพูดได้อย่างแน่นอนว่า "C (gcc), C ++ (g ++), Objective-C, Objective-C ++, Fortran (gfortran), Java (gcj), Ada (GNAT), Go (gccgo), Pascal (gpc), ... Mercury, Modula-2, Modula-3, …

8
ทำไมวิธีการแบบคงที่สามารถใช้ข้อมูลแบบคงที่เท่านั้น?
ฉันไม่เข้าใจว่าทำไมวิธีการคงที่ไม่สามารถใช้ข้อมูลที่ไม่คงที่ได้ ใครช่วยอธิบายได้ว่าปัญหาคืออะไรและทำไมเราถึงทำไม่ได้?
38 java 

9
การจัดการหน่วยความจำในการเขียนโปรแกรมกลายเป็นปัญหาที่ไม่เกี่ยวข้องหรือไม่?
ความเป็นมา ฉันเยี่ยมชมเว็บไซต์เก่า (แต่ยอดเยี่ยม) ที่ฉันไม่เคยไปมานานหลายปี - Alioth Language Shootout ( http://benchmarksgame.alioth.debian.org/ ) ฉันเริ่มเขียนโปรแกรมใน C / C ++ หลายปีที่ผ่านมา แต่หลังจากนั้นก็ทำงานใน Java โดยเฉพาะเนื่องจากข้อ จำกัด ทางภาษาในโครงการที่ฉันเข้าร่วมไม่จำตัวเลขได้ฉันต้องการเห็นประมาณว่า Java ดีแค่ไหน อาการเทียบกับ C / C ++ ในแง่ของการใช้ทรัพยากร เวลาการดำเนินการยังคงค่อนข้างดีกับ Java ที่เลวร้ายที่สุดที่มีประสิทธิภาพ 4x ช้ากว่า C / C ++ แต่ในรอบเฉลี่ย (หรือต่ำกว่า) 2x เนื่องจากลักษณะของการนำ Java มาใช้เองจึงไม่แปลกใจเลยและเวลาในการแสดงนั้นต่ำกว่าที่ฉันคาดไว้จริงๆ อิฐจริงคือการจัดสรรหน่วยความจำ - ที่แย่ที่สุดคือ Java จัดสรร: …

2
คุณควรเข้าสู่ระบบจากรหัสห้องสมุด?
ถ้าฉันพัฒนาห้องสมุด Java มันเป็นวิธีที่ดีในการออกคำสั่งบันทึกจากภายในรหัสของห้องสมุดหรือไม่ การมีการบันทึกภายในไลบรารีจะทำให้การดีบักและการแก้ไขปัญหาโปร่งใสขึ้น อย่างไรก็ตามในทางกลับกันฉันไม่ชอบทิ้งขยะไลบรารีของฉันด้วยคำสั่งการบันทึก มีความหมายของประสิทธิภาพที่จะต้องพิจารณาด้วยหรือไม่?
38 java  logging 

4
แพ็คเกจ“ core” API ของ Java 1.0 คืออะไร?
อ่านเกี่ยวกับคดีของ Google v Oracle ฉันเจอคำถามเหล่านี้ (เห็นได้ชัดจากผู้พิพากษาหัวหน้า) ... มันตกลงกันหรือไม่ว่าสิ่งต่อไปนี้เป็นจริงอย่างน้อยก็ในปี 1996? ต่อไปนี้เป็นอินเตอร์เฟส Java Application Programming Core: java.lang, java.util และ java.io. ภาษาการเขียนโปรแกรม Java อ้างถึงหรือต้องการวิธีการชั้นเรียนหรือแพคเกจนอกสามข้างต้น? ... แหล่งที่มา: Groklaw มีชัดมาก ๆ ของเครือข่ายทางกฎหมายของ Google และ Oracle อาจจะไม่เห็นด้วยกับบางจุดและฉันไม่สนใจ ออกกฎหมายไปยังทนายความ อย่างไรก็ตามฉันสงสัยว่ามีประวัติที่น่าสนใจอยู่บ้าง คำถามของฉัน (เป็นคนแรกที่ได้ใด Java เข้ารหัสรอบปี 2001 ในรุ่น 1.3) ในรุ่น 1.0 ชวาถูกต้องอะไรนอกjava.lang, java.utilและjava.ioการรวบรวมโปรแกรม Java ที่ถูกต้อง? เป็นตัวอย่าง (โดยใช้ C # …
38 java  history 

5
Java dev learning Python: ฉันต้องใช้แนวคิดอะไรในการห่อหัวของฉัน?
ความเป็นมา: ฉันทำงานไม่กี่บทช่วยสอนและเขียนโครงการขนาดเล็ก ทั้งหมดเป็นไปอย่างดีพอโดยใช้ Google และStackOverflow หลายครั้งในช่วงไม่กี่วันที่ผ่านมาฉันพบว่าตัวเองสงสัยว่า - ฉันรู้สึกว่าฉันยังคงคิดถึง Java อยู่เมื่อฉันเขียนเป็น Python คำถามนี้ที่ StackOverflow เต็มไปด้วยเคล็ดลับเกี่ยวกับแหล่งข้อมูลที่จะอ่านเพื่อการเรียนรู้ของ Python แต่ฉันยังรู้สึกว่าฉันเป็นนักพัฒนา Java ที่มีพจนานุกรม สิ่งที่ฉันต้องการทำจริงๆคือ refactor หัวของฉันให้สามารถเขียน Pythonic Python แทน Java ที่ปลอมตัวเป็น Python โดยไม่สูญเสียทักษะ Java ของฉัน ดังนั้นปมคำถามของฉันคือ: แนวคิดอะไรที่ Java dev ต้องการเรียนรู้ที่จะคิด Pythonic จริงๆ? รวมถึงสิ่งใดก็ตามที่จำเป็นต้องเรียนรู้ หมายเหตุ: ฉันกำลังถามเกี่ยวกับแนวคิดภาษาไม่ใช่เกี่ยวกับไวยากรณ์ภาษา

4
ทำไมจึงชอบคลาสภายในที่ไม่คงที่มากกว่าสแตติก
คำถามนี้เกี่ยวกับว่าจะสร้างคลาสที่ซ้อนใน Java เป็นคลาสที่ซ้อนกันหรือคลาสซ้อนภายใน ฉันค้นหาแถว ๆ นี้และใน Stack Overflow แต่ไม่พบคำถามใด ๆ เกี่ยวกับความหมายของการออกแบบของการตัดสินใจนี้ คำถามที่ฉันพบกำลังถามเกี่ยวกับความแตกต่างระหว่างคลาสแบบคงที่และแบบซ้อนภายในซึ่งชัดเจนสำหรับฉัน อย่างไรก็ตามฉันยังไม่พบเหตุผลที่น่าเชื่อถือที่จะใช้คลาสที่ซ้อนกันแบบคงที่ใน Java - ยกเว้นคลาสที่ไม่ระบุชื่อซึ่งฉันไม่ได้พิจารณาสำหรับคำถามนี้ นี่คือความเข้าใจของฉันเกี่ยวกับผลของการใช้คลาสที่ซ้อนกันคงที่: การมีเพศสัมพันธ์น้อย:โดยทั่วไปแล้วเราจะได้แต่งงานกันน้อยลงเนื่องจากชั้นเรียนไม่สามารถเข้าถึงคุณลักษณะของชั้นนอกได้โดยตรง การมีเพศสัมพันธ์น้อยโดยทั่วไปหมายถึงคุณภาพของรหัสที่ดีขึ้นการทดสอบที่ง่ายขึ้นการปรับโครงสร้างใหม่และอื่น ๆ โสดClass:ตัวโหลดคลาสไม่จำเป็นต้องดูแลคลาสใหม่ทุกครั้งที่เราสร้างวัตถุของคลาสภายนอก เราเพิ่งได้รับวัตถุใหม่สำหรับคลาสเดียวกันซ้ำแล้วซ้ำอีก สำหรับชั้นในฉันมักจะพบว่าผู้คนพิจารณาการเข้าถึงคุณลักษณะของชั้นนอกเป็นมืออาชีพ ฉันขอแตกต่างกันในเรื่องนี้จากมุมมองของการออกแบบเนื่องจากการเข้าถึงโดยตรงหมายความว่าเรามีคลัปสูงและหากเราต้องการแยกคลาสที่ซ้อนกันออกเป็นคลาสระดับบนที่แยกต่างหากเราสามารถทำได้หลังจากเปลี่ยน มันเป็นคลาสที่ซ้อนกันคงที่ ดังนั้นคำถามของฉันมาถึงสิ่งนี้: ฉันคิดผิดว่าการเข้าถึงคุณลักษณะที่มีให้กับคลาสภายในแบบไม่คงที่ทำให้เกิดการเชื่อมต่อสูงดังนั้นจึงมีคุณภาพรหัสต่ำกว่าและฉันอนุมานจากสิ่งนี้ว่าคลาสที่ซ้อนกัน โดยทั่วไปจะคงที่? หรืออีกนัยหนึ่ง: มีเหตุผลที่น่าเชื่อถือไหมว่าทำไมคนเราถึงชอบชนชั้นในที่ซ้อนกัน?

8
รูปแบบที่ยอมรับสำหรับการใช้คำหลัก `this 'ใน Java คืออะไร
ฉันมาจากภาษาต่าง ๆ เช่น Python หรือ Javascript (และอื่น ๆ ที่ไม่ค่อยมีวัตถุประสงค์เชิงวัตถุ) และฉันพยายามปรับปรุงความรู้การทำงานของ Java ซึ่งฉันรู้เพียงแค่ผิวเผินเท่านั้น มันถือว่าเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะผนวกthisเข้ากับแอ็ตทริบิวต์อินสแตนซ์ปัจจุบันเสมอ? ฉันรู้สึกเป็นธรรมชาติมากขึ้นที่จะเขียน ... private String foo; public void printFoo() { System.out.println(this.foo); } ... กว่า ... private String foo; public void printFoo() { System.out.println(foo); } ... มันช่วยให้ฉันแยกแยะแอตทริบิวต์ของอินสแตนซ์จากตัวแปรโลคอล แน่นอนในภาษาอย่าง Javascript มันสมเหตุสมผลมากกว่าที่จะใช้เสมอthisเนื่องจากมีหนึ่งฟังก์ชันที่สามารถซ้อนฟังก์ชันได้ดังนั้นตัวแปรท้องถิ่นจึงมาจากขอบเขตที่กว้างขึ้น ใน Java เท่าที่ฉันเข้าใจไม่มีการทำรังแบบนี้เป็นไปได้ (ยกเว้นคลาสภายใน) ดังนั้นอาจไม่ใช่ปัญหาใหญ่ ในกรณีใด ๆ thisฉันชอบที่จะใช้ มันจะรู้สึกแปลกและไม่สำนวนหรือไม่?

12
นักเขียนโปรแกรมใช้วิธีการเขียนโปรแกรมที่แย่ที่สุด
ฉันรู้ว่ามันแปลกที่จะพูด แต่โปรแกรมเมอร์คนหนึ่งในที่ทำงานจงใจใช้วิธีการเขียนโปรแกรมที่ไม่ดีตามวัตถุประสงค์! ฉันจะอธิบาย ก่อนอื่นให้ฉันบอกว่าเขาเป็นคนฉลาดและส่วนใหญ่เขาเขียนรหัสที่เข้าใจได้ เขาถูกขอให้ดำเนินการออกใบอนุญาตในโครงการเว็บแอปพลิเคชันที่เขียนด้วย Java เนื่องจากเป็น Java หากมีใครต้องการจริงๆก็อาจแฮ็กเปิดไหและอ่านชื่อของคลาสและวิธีการที่เขียนไว้ข้างใน วิธีการแก้ปัญหาของเขาคือการเรียกตัวแปรและวิธีการที่ชื่อไม่ชัดเจนให้ชัดเจนและวางมันไว้ในคลาสที่แออัดแล้วแทนที่จะสร้างคลาสใหม่ เหตุผลของเขาคือหากแฮกเกอร์ต้องการเปลี่ยนบางคลาสเพื่อเลี่ยงการตรวจสอบใบอนุญาต (และรับสำเนาผลิตภัณฑ์ฟรี) เขาจะมีช่วงเวลาที่ยากลำบากกว่านี้หากมันไม่ชัดเจนว่าวิธีใด ปฏิบัติงานเฉพาะเหล่านี้ หลังจากเขาทำเสร็จฉันก็พบเขาแนะนำว่าบางทีเราอาจซื้อห้องสมุด obfuscator บางประเภทเพื่อทำเพื่อเราในขณะที่ยังคงใช้วิธีการเขียนโปรแกรมที่ดี เขาอ้างว่าไม่มีเวลาหรือทรัพยากรในการค้นหาวิธีแก้ปัญหาแบบนั้น .. ซึ่งทำให้ฉันลำบากใจ ฉันจะมองหาห้องสมุด obfuscator ใน Java และแก้ไขรหัสเก่าของเขา (ซึ่งอาจเป็นเรื่องงี่เง่าเล็กน้อยเกี่ยวกับการเปลี่ยนแปลงรหัสของเขา) หรือฉันจะทิ้งมันไว้เท่าที่จะทำให้ฉันไม่สิ้นสุด?

17
ฉันจะรู้สึกมั่นใจมากขึ้นเกี่ยวกับทักษะการเขียนโปรแกรมของฉันได้อย่างไร [ปิด]
การเขียนโปรแกรมไม่ใช่คนต่างด้าวสำหรับฉัน ฉันเริ่มทำมาร์กอัพ (HTML ตอนนี้โปรดอย่าหัวเราะเยาะฉัน) เมื่อฉันอายุได้ 12 ปีและ BASIC เล็กน้อยเมื่อฉันอายุ 13 (ฉันรู้มากเกี่ยวกับ Flowcharts, Pseudocodes ณ จุดนี้) แต่แล้วฉันก็ถูกตักเตือนเป็น ชีววิทยาในโรงเรียนมัธยมและด้วยเหตุนี้จึงพลาดความรู้ด้านการเขียนโปรแกรม "ของจริง" ของภาษาเช่น C, Java, etcetera ฉันใช้ CS กับ UG BE ของฉัน (คล้ายกับ BS แต่เป็นไปตามทฤษฎีมากกว่า) ฉันเรียน C & C ++ (ในระดับที่น้อยกว่า) ด้วยตัวเอง (ศาสตราจารย์ของฉันเจ็บปวดมากและชั้นเรียนเต็มไปด้วย code-jocks (ที่เรียนมาแล้วในโรงเรียนและด้วยเหตุนี้ไม่สนใจห้องเรียน) ให้ปุถุชนน้อยกว่าอย่างฉันให้ความสนใจกับชั้นเรียนด้วย) และสามารถชักนำโปรแกรมการบวกหรือการคูณที่ยอดเยี่ยม (อันที่ตอนนี้แม้แต่ผู้ทำสวนเองก็ใจดีด้วย) ปัญหาหลักของฉันคือฉันรู้สึกไม่ดีและบีบคอด้วยทักษะการเขียนโปรแกรมที่ จำกัด ของฉันและดูหมิ่นโดย code-jocks (เชื่อฉันสิฉันเจอเว็บไซต์นี้มานานแล้ว แต่ตอนนี้อาจสร้างความกล้าหาญที่จะโพสต์จริง …

6
ตัวอย่างที่ดีของรหัสที่ซับซ้อนโดยใช้ TDD [ปิด]
อะไรจะเป็นตัวอย่างที่ดีของการใช้ TDD ในโครงการขนาดใหญ่ชีวิตจริงที่ซับซ้อน? ตัวอย่างทั้งหมดที่ฉันเคยเห็นเป็นโครงการของเล่นสำหรับหนังสือหรือกระดาษ ... คุณสามารถตั้งชื่อโครงการโอเพ่นซอร์สที่ใช้ TDD อย่างหนักได้หรือไม่? โดยเฉพาะอย่างยิ่งใน C ++ แต่ฉันสามารถอ่าน Java และ C # หรือภาษาอื่นที่คล้ายคลึงกัน
37 java  c#  open-source  c++  tdd 

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