สำภาษณ์งาน Java คำถาม Operator | กับ || ต่างกันยังไง

บทความเกี่ยวกับ : สำภาษณ์งาน Java คำถาม Operator | กับ || ต่างกันยังไง


เอามาถามเล่นๆนะครับสมัยผมเดินหางานเคยเจอคำถามแบบนี้
เค้าก็ถามประมาณว่า

1. if( a==b || a==c)
2. if(a==b | a ==c )

สองบรรทัดนี้อันใหนถูก

ผมตอบอย่างมั่นใจเลยครับว่า ข้อ 1 ถูก แต่ข้อสอง compile ไม่ผ่าน
นั่นก็เป็นเพราะว่าประติแล้วผมจะเขียนแบบข้อ 1 ไม่เคยเขียนแบบข้อ 2
ข้อนี้ผมชิลๆ ครับมั่นใจมากพอตอบเสร็จก็เฉยๆนะครับคนถามเค้าก็ไม่ได้ว่าอะไร
ไม่ได้บอกว่าถูกหรือผิดแต่ผลการสัมภาษณ์วันนั้นผมตกครับ เห่อๆ
เซ็งมากเลยมานั่งลองเขียนดูตามที่เค้าถาม ผลปรากฏว่า พระเจ้า
ข้อ 2 มันไม่ Error ครับ Run ได้ปรกติ
ลองใช้  &  กับ && ก็ได้มีค่าเท่ากันครับ
ถึงตอนนี้บอกตามตรงว่ายังไม่ได้คำตอบ แต่นึกย้อนไปทีไรก็รู้สึกอายตัวเองทุกที
เพราะไปคุยไว้เยอะแล้วตอบแบบมั่นใจสุดๆ ผมว่าคนถามเค้าคงขำในใจอ่ะ เห่อๆ ชิลๆ

ความคิดเห็น

  1. & กับ && ต่างกันตรงที่

    exp1 && exp2
    ถ้า exp1 เป็น false จะ return false ทันทีโดยไม่มีการ execute exp2

    แต่ถ้าเป็น exp1 & exp2
    ถึง exp1 จะเป็น false ก็จะยัง execute exp2 ต่อครับ

    ตอบลบ
  2. ขอบคุณ คุณ Keng ครับผม
    สำหรับคำแนะนำดีๆ
    เดี๋ยวต้องเอาไปลองดูก่อนแระ หุหุ

    ตอบลบ
  3. มันเป็น Shortcut Operand ครับ ถ้าเงื่อนไขตัวไหน ที่จะทำให้นิพจน์นั้นได้ผลลัพธ์เป็น true หรือ false อย่างใดอย่างหนึ่งอย่างแน่นอนแล้ว จะข้ามนิพจน์ตัวหลังไปทำโค้ดในบล็อกทันทีเลย โดยไม่ผ่านการประมวลผลนิพจน์ที่เหลือ

    แต่ถ้าเป็นแบบปกติคือตัวเดียว มันจะบังคับให้ทำทุกนิพจน์ครับ

    ตอบลบ
  4. ขอบคุณสำหรับข้อมูลครับ คุณ มะนาวต่างดุ๊ด

    ตอบลบ
  5. ไม่ระบุชื่อ9 พฤษภาคม 2555 เวลา 09:55

    เข้าผิดแล้วมั้งครับ & กับ | ในจาวาใช้ในการ 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

    ตอบลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java