สำภาษณ์งาน Java คำถาม Operator | กับ || ต่างกันยังไง
บทความเกี่ยวกับ : สำภาษณ์งาน Java คำถาม Operator | กับ || ต่างกันยังไง
เอามาถามเล่นๆนะครับสมัยผมเดินหางานเคยเจอคำถามแบบนี้
เค้าก็ถามประมาณว่า
สองบรรทัดนี้อันใหนถูก
ผมตอบอย่างมั่นใจเลยครับว่า ข้อ 1 ถูก แต่ข้อสอง compile ไม่ผ่าน
นั่นก็เป็นเพราะว่าประติแล้วผมจะเขียนแบบข้อ 1 ไม่เคยเขียนแบบข้อ 2
ข้อนี้ผมชิลๆ ครับมั่นใจมากพอตอบเสร็จก็เฉยๆนะครับคนถามเค้าก็ไม่ได้ว่าอะไร
ไม่ได้บอกว่าถูกหรือผิดแต่ผลการสัมภาษณ์วันนั้นผมตกครับ เห่อๆ
เซ็งมากเลยมานั่งลองเขียนดูตามที่เค้าถาม ผลปรากฏว่า พระเจ้า
เพราะไปคุยไว้เยอะแล้วตอบแบบมั่นใจสุดๆ ผมว่าคนถามเค้าคงขำในใจอ่ะ เห่อๆ ชิลๆ
เอามาถามเล่นๆนะครับสมัยผมเดินหางานเคยเจอคำถามแบบนี้
เค้าก็ถามประมาณว่า
1. if( a==b || a==c)
2. if(a==b | a ==c )
สองบรรทัดนี้อันใหนถูก
ผมตอบอย่างมั่นใจเลยครับว่า ข้อ 1 ถูก แต่ข้อสอง compile ไม่ผ่าน
นั่นก็เป็นเพราะว่าประติแล้วผมจะเขียนแบบข้อ 1 ไม่เคยเขียนแบบข้อ 2
ข้อนี้ผมชิลๆ ครับมั่นใจมากพอตอบเสร็จก็เฉยๆนะครับคนถามเค้าก็ไม่ได้ว่าอะไร
ไม่ได้บอกว่าถูกหรือผิดแต่ผลการสัมภาษณ์วันนั้นผมตกครับ เห่อๆ
เซ็งมากเลยมานั่งลองเขียนดูตามที่เค้าถาม ผลปรากฏว่า พระเจ้า
ข้อ 2 มันไม่ Error ครับ Run ได้ปรกติ
ลองใช้ & กับ && ก็ได้มีค่าเท่ากันครับ
ถึงตอนนี้บอกตามตรงว่ายังไม่ได้คำตอบ แต่นึกย้อนไปทีไรก็รู้สึกอายตัวเองทุกทีเพราะไปคุยไว้เยอะแล้วตอบแบบมั่นใจสุดๆ ผมว่าคนถามเค้าคงขำในใจอ่ะ เห่อๆ ชิลๆ
& กับ && ต่างกันตรงที่
ตอบลบexp1 && exp2
ถ้า exp1 เป็น false จะ return false ทันทีโดยไม่มีการ execute exp2
แต่ถ้าเป็น exp1 & exp2
ถึง exp1 จะเป็น false ก็จะยัง execute exp2 ต่อครับ
ขอบคุณ คุณ Keng ครับผม
ตอบลบสำหรับคำแนะนำดีๆ
เดี๋ยวต้องเอาไปลองดูก่อนแระ หุหุ
มันเป็น Shortcut Operand ครับ ถ้าเงื่อนไขตัวไหน ที่จะทำให้นิพจน์นั้นได้ผลลัพธ์เป็น true หรือ false อย่างใดอย่างหนึ่งอย่างแน่นอนแล้ว จะข้ามนิพจน์ตัวหลังไปทำโค้ดในบล็อกทันทีเลย โดยไม่ผ่านการประมวลผลนิพจน์ที่เหลือ
ตอบลบแต่ถ้าเป็นแบบปกติคือตัวเดียว มันจะบังคับให้ทำทุกนิพจน์ครับ
ขอบคุณสำหรับข้อมูลครับ คุณ มะนาวต่างดุ๊ด
ตอบลบเข้าผิดแล้วมั้งครับ & กับ | ในจาวาใช้ในการ and หรือ or ในระดับ bit เช่น
ตอบลบ6 & 1 = 1 เพราะเป็นการ and ระหว่าง
110 and 001 = 001
ส่วน
6 | 1 = 7 เพราะเป็นการ or ระหว่าง
110 or 001 = 111
ส่วน boolean เป็น bit เดียวดังนั้นจะ | หรือ || ก็ได้ผลเหมือนกัน
อ้างอิง: 7. โอเปอเรเตอร์ที่เกี่ยวข้องกับบิต http://www.jarticles.com/tutorials/basic/javaoperator.html