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

19
วิธีการแปลง int [] เป็น List <Integer> ใน Java
ฉันจะแปลงint[]เป็นList&lt;Integer&gt;Java ได้อย่างไร แน่นอนฉันสนใจคำตอบอื่นที่ไม่ใช่การวนซ้ำเรียงตามข้อ แต่ถ้าไม่มีคำตอบอื่นฉันจะเลือกอันนั้นให้ดีที่สุดเพื่อแสดงความจริงว่าฟังก์ชั่นนี้ไม่ได้เป็นส่วนหนึ่งของ Java

10
วิธีการเปรียบเทียบจำนวนเต็มสองตัวใน Java อย่างถูกต้องเป็นอย่างไร
ฉันรู้ว่าถ้าคุณเปรียบเทียบจำนวนเต็มดั้งเดิมของกล่องกับค่าคงที่เช่น: Integer a = 4; if (a &lt; 5) a จะถูกเลิกทำโดยอัตโนมัติและการเปรียบเทียบจะใช้งานได้ อย่างไรก็ตามจะเกิดอะไรขึ้นเมื่อคุณเปรียบเทียบสองกล่องIntegersและต้องการเปรียบเทียบความเท่าเทียมกันหรือน้อยกว่า / มากกว่า Integer a = 4; Integer b = 5; if (a == b) โค้ดด้านบนจะส่งผลให้มีการตรวจสอบเพื่อดูว่าพวกเขาเป็นวัตถุเดียวกันหรือไม่หรือจะกล่องอัตโนมัติในกรณีนั้น? เกี่ยวกับ: Integer a = 4; Integer b = 5; if (a &lt; b) ?
217 java  integer  autoboxing 

8
ส่งคืน null เป็น int ที่ได้รับอนุญาตกับผู้ประกอบการที่ประกอบไปด้วยสามส่วน แต่ไม่ใช่ถ้ามีคำสั่ง
ลองดูโค้ด Java อย่างง่ายในตัวอย่างต่อไปนี้: public class Main { private int temp() { return true ? null : 0; // No compiler error - the compiler allows a return value of null // in a method signature that returns an int. } private int same() { if (true) { return null; // …

21
ทำไมคนยังคงใช้ประเภทดั้งเดิมใน Java?
ตั้งแต่ Java 5 เรามีการชกมวย / การแยกประเภทดั้งเดิมเพื่อที่intจะห่อjava.lang.Integerและอื่น ๆ และอื่น ๆ ฉันเห็นมากของโครงการ Java ใหม่เมื่อเร็ว ๆ นี้ (ที่แน่นอนต้องมี JRE อย่างน้อย 5 รุ่นหากไม่ได้ 6) ที่มีการใช้intมากกว่าjava.lang.Integerแม้ว่ามันจะสะดวกสบายมากขึ้นที่จะใช้หลังตามที่มีวิธีการช่วยเหลือไม่กี่สำหรับการแปลง ถึงlongค่าและอื่น ๆ ทำไมบางชนิดยังคงใช้ชนิดดั้งเดิมใน Java มีประโยชน์ใด ๆ ที่เป็นรูปธรรม?

4
บูลีนตัวดำเนินการตามเงื่อนไขและการทำกล่องอัตโนมัติ
ทำไมถึงโยน NullPointerException public static void main(String[] args) throws Exception { Boolean b = true ? returnsNull() : false; // NPE on this line. System.out.println(b); } public static Boolean returnsNull() { return null; } ในขณะที่สิ่งนี้ไม่ public static void main(String[] args) throws Exception { Boolean b = true ? null : false; …

10
Weird Integer ชกมวยใน Java
ฉันเพิ่งเห็นรหัสที่คล้ายกับสิ่งนี้: public class Scratch { public static void main(String[] args) { Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); } } เมื่อรันโค้ดบล็อกนี้จะพิมพ์ออกมา: false true ฉันเข้าใจว่าเหตุใดสิ่งแรกคือfalse: เนื่องจากวัตถุทั้งสองเป็นวัตถุที่แยกจากกันดังนั้นจึง==เปรียบเทียบการอ้างอิง แต่ฉันไม่สามารถคิดออกทำไมคำสั่งที่สองกลับมาtrue? มีกฎการเขียนกล่องอัตโนมัติแปลก ๆ ที่เริ่มต้นเมื่อค่าจำนวนเต็มอยู่ในช่วงที่กำหนดหรือไม่? เกิดอะไรขึ้นที่นี่?
114 java  autoboxing 

4
การเปรียบเทียบค่า Long แบบบรรจุกล่อง 127 และ 128
ฉันต้องการเปรียบเทียบค่าLong object สองค่าโดยใช้ifเงื่อนไข เมื่อค่าเหล่านี้มีน้อยกว่า 128ในifสภาพที่ใช้งานได้อย่างถูกต้อง แต่เมื่อพวกเขามีค่ามากกว่าหรือเท่ากับ 128เปรียบเทียบล้มเหลว ตัวอย่าง: Long num1 = 127; Long num2 = 127; if (num1 == num2) { // Works ok } การเปรียบเทียบโค้ดด้านบนทำงานได้อย่างถูกต้อง แต่ล้มเหลวในโค้ดด้านล่าง: Long num1 = 128; Long num2 = 128; if (num1 == num2) { // Does NOT work } ทำไมถึงมีปัญหาในการเปรียบเทียบยาวตัวแปรที่มีค่าสูงกว่า 127 ? หากชนิดข้อมูลตัวแปรถูกเปลี่ยนเป็นแบบดั้งเดิมแบบยาวการเปรียบเทียบจะใช้ได้กับทุกกรณี

3
เหตุใด int num = Integer.getInteger (“ 123”) จึงโยน NullPointerException
รหัสต่อไปนี้พ่นNullPointerException: int num = Integer.getInteger("123"); คอมไพเลอร์ของฉันเรียกใช้getIntegernull เนื่องจากเป็นแบบคงที่หรือไม่ นั่นไม่สมเหตุสมผลเลย! เกิดอะไรขึ้น?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.