ผู้ให้บริการเกือบทั้งหมดสามารถใช้งานได้ใน "Primitives" เท่านั้น ข้อยกเว้นคือ "=", "==" และ "! =" ซึ่งใช้งานวัตถุทั้งหมด นอกจากนี้คลาสสตริงยังรองรับ "+" และ "+="
ประเภทพื้นฐานเก็บค่าตัวเลขจริง แทนที่จะอ้างถึงวัตถุ ดังนั้นเมื่อกำหนดค่าให้กับมันเนื้อหาของที่หนึ่งจะถูกคัดลอกโดยตรงไปยังสถานที่อื่น ตัวอย่างเช่นหาก A = B ใช้สำหรับชนิดข้อมูลพื้นฐานเนื้อหาของ B จะถูกคัดลอกไปยัง A หาก A ถูกแก้ไข B จะไม่ได้รับผลกระทบจากการดัดแปลงนี้เลย (ในแนวคิดการเขียนโปรแกรม Java ก่อนหน้า (2) เรารู้ว่าประเภทพื้นฐานถูกเก็บไว้ในสแต็กสมมติว่า A = 4 ถ้าไม่มี 4 ในสแต็กพื้นที่จะเปิดเพื่อให้ค่า 4 หลังจาก A = B ไม่ส่งผลกระทบ B)
อย่างไรก็ตามเมื่อ "กำหนดค่า" ให้กับวัตถุสถานการณ์จะเปลี่ยนไป ก่อนอื่นเรารู้ว่าสิ่งที่เราทำงานจริง ๆ เมื่อใช้งานวัตถุนั้นเป็นการอ้างอิงถึงวัตถุ ดังนั้นหาก "การกำหนดวัตถุให้กับวัตถุอื่น" จริง ๆ แล้วมันคือการคัดลอก "การอ้างอิง" จากที่หนึ่งไปยังอีกที่หนึ่ง ซึ่งหมายความว่าหากใช้ C = D กับวัตถุทั้ง C และ D จะชี้ไปที่วัตถุที่เดิมชี้ไปที่ D (ทั้งการควบคุมระยะไกล (การอ้างอิง) สามารถทำงานและกดชุดทีวี (วัตถุ))
ลำดับความสำคัญ:
| ลำดับความสำคัญ | การผูกมัด | |
1 | ผู้ดำเนินการต่อท้าย | - () (การเรียกใช้ฟังก์ชัน) | จากซ้ายไปขวา |
2 | ผู้ประกอบการคนเดียว | - ~ ++ - +(ตัวถูกดำเนินการเดี่ยว) (ตัวถูกดำเนินการเดี่ยว) | จากขวาไปซ้าย |
3 | สร้าง | ใหม่ | จากซ้ายไปขวา |
4 | การคูณและการแบ่ง | - | จากซ้ายไปขวา |
5 | การเพิ่มและการลบ | - | จากซ้ายไปขวา |
6 | กะ | - | จากซ้ายไปขวา |
7 | ความสัมพันธ์ | <<= >> = อินสแตนซ์ของ | จากซ้ายไปขวา |
8 | เท่ากัน | - | จากซ้ายไปขวา |
9 | bitwise และ | - | จากซ้ายไปขวา |
10 | bitwise xor | - | จากซ้ายไปขวา |
11 | bitwise หรือ | - | จากซ้ายไปขวา |
12 | ตรรกะและ | - | จากซ้ายไปขวา |
13 | ตรรกะหรือ | - | จากซ้ายไปขวา |
14 | เงื่อนไข | - - | จากขวาไปซ้าย |
15 | งานที่มอบหมาย | - | จากขวาไปซ้าย |
(1) การมอบหมาย
ประเภทหลักใช้ "A = B" และเนื้อหาที่ B ถูกคัดลอกไปยัง A หาก A ถูกแก้ไขแล้ว B จะไม่ได้รับผลกระทบจากการดัดแปลงเลย
สถานการณ์เปลี่ยนแปลงเมื่อวัตถุ "กำหนด" เมื่อใช้งานวัตถุสิ่งที่เราใช้งานได้จริงคือการจัดการ ดังนั้นหากคุณกำหนดค่าจากวัตถุหนึ่งไปยังอีกวัตถุหนึ่งจริง ๆ แล้วการคัดลอกด้ามจับจากที่หนึ่งไปยังอีกที่หนึ่ง ซึ่งหมายความว่าถ้า "C = D" ใช้สำหรับวัตถุดังนั้น C และ D ในที่สุดจะชี้ไปที่วัตถุที่ D เพียงจุดเดียวในสถานที่แรก
สั้น S1 = 1; S1 = S1 + 1; (ผลลัพธ์ของการดำเนินการ S1+1 เป็นประเภท int และจำเป็นต้องมีประเภทการหล่อ)
สั้น S1 = 1; S1 += 1; (สามารถรวบรวมได้อย่างถูกต้อง) += ตัวดำเนินการโดยไม่มีปัญหาการแปลงประเภท
(2) ผู้ดำเนินการเลขคณิต
ผู้ประกอบการเลขคณิตของ Java: Plus Sign (+), Minus Sign (-), Division Sign (/), Multiplical Sign (*) และ Modulus (%, ได้รับส่วนที่เหลือจากการแบ่งจำนวนเต็ม) แผนกจำนวนเต็มจะตัดทศนิยมโดยตรงแทนที่จะพกพา
(3) เพิ่มขึ้นและลดลงอัตโนมัติ
สำหรับการเพิ่มจำนวนและการเพิ่มขึ้นล่วงหน้า (เช่น ++ A หรือ-A) การดำเนินการจะดำเนินการก่อนและค่าจะถูกสร้างขึ้น
สำหรับการโพสต์และโพสต์-การเพิ่ม (เช่น ++ หรือ a--) ค่าจะถูกสร้างขึ้นและการดำเนินการจะดำเนินการ
(4) ผู้ประกอบการเชิงสัมพันธ์
ตัวดำเนินการเชิงสัมพันธ์รวมถึง <,>, <=,> =, = =,! =
เท่ากับและไม่เท่ากับใช้กับประเภทข้อมูลในตัวทั้งหมด แต่การเปรียบเทียบอื่น ๆ ไม่ได้ใช้กับประเภทบูลีน
ในการเปรียบเทียบว่าเนื้อหาจริงของวัตถุทั้งสองนั้นเหมือนกันคุณต้องใช้วิธีการพิเศษเท่ากับ () ที่ใช้กับวัตถุทั้งหมดหรือไม่
วิธี Equals () ไม่ได้ใช้กับ "ประเภทหลัก" ประเภทเหล่านั้นสามารถใช้โดยตรงกับ == และ! =
ค่าเริ่มต้นของ Equals () คือที่จับเปรียบเทียบ ดังนั้นหากคุณไม่เปลี่ยนเท่ากับ () ในชั้นเรียนใหม่ของคุณมันเป็นไปไม่ได้ที่จะแสดงพฤติกรรมที่เราต้องการ
ไลบรารีคลาส Java ส่วนใหญ่ใช้ Equals () ดังนั้นจึงเปรียบเทียบเนื้อหาของวัตถุมากกว่าที่จับ
= = และ! = เปรียบเทียบการจับวัตถุไม่ใช่เนื้อหาจริงของวัตถุ
(5) ตัวดำเนินการเชิงตรรกะ
ตัวดำเนินการเชิงตรรกะ &&, || ,! สามารถสร้างค่าบูลีน
& และ && สามารถใช้เป็นตัวดำเนินการตรรกะ "และ" แต่ && คือ "ลัดวงจรและ" เมื่อคำนวณค่าของนิพจน์ก่อนที่สัญลักษณ์จะถูกตัดสินครั้งแรก หากสามารถกำหนดค่าของนิพจน์ทั้งหมดได้การดำเนินการของนิพจน์หลังจากสัญลักษณ์ไม่ได้ดำเนินการ
นอกจากนี้และสามารถใช้เป็นตัวดำเนินการบิตได้
(6) ตัวดำเนินการ bitwise
Bitwise และ Operator (&)
Bitwise หรือ Operator (|)
bitwise xor (^, xor)
Bitwise Not (~ หรือเรียกอีกอย่างว่า "ตัวดำเนินการ" ไม่ใช่ ") เป็นของตัวดำเนินการที่ไม่ได้สร้างค่าตรงข้ามกับบิตอินพุต
(7) ตัวดำเนินการกะ
ตัวดำเนินการกะซ้าย (<<) สามารถย้ายวัตถุการทำงานไปทางซ้ายไปยังจำนวนบิตที่ระบุทางด้านขวาของผู้ปฏิบัติงาน (เติมเต็ม 0 ที่บิตต่ำ)
ตัวดำเนินการ Shift Right (>>) ย้ายวัตถุการดำเนินการไปทางขวาจำนวนบิตที่ระบุทางด้านขวาของผู้ประกอบการ ตัวดำเนินการกะขวาที่ลงนามใช้ส่วนขยายสัญญาณ: หากค่าเป็นบวก 0 จะถูกแทรกที่ตำแหน่งสูง; หากค่าเป็นลบ 1 จะถูกแทรกที่ตำแหน่งสูง
ตัวดำเนินการกะขวาที่ไม่ได้ลงชื่อ (>>>) ซึ่งใช้ "ส่วนขยายศูนย์": แทรก 0 ที่ตำแหน่งสูงโดยไม่คำนึงถึงบวกหรือลบ
(8) ตัวดำเนินการสาม IF-ELSE
การแสดงออกของบูลีน? ค่า 0: ค่า 1 ผลลัพธ์ของ "นิพจน์ bolean" เป็นจริงและ "ค่า 0" ถูกคำนวณมิฉะนั้น "ค่า 1" จะถูกคำนวณ
(9) ตัวดำเนินการสตริง +
int x = 0, y = 1, z = 2; system.out.println ("out:" + x + y + z);ที่นี่คอมไพเลอร์ Java แปลง X, Y และ Z เป็นรูปแบบสตริงแทนที่จะเพิ่มเข้าด้วยกันก่อน
เมื่อใช้ "String +" หากนิพจน์เริ่มต้นด้วยสตริงวัตถุการดำเนินการที่ตามมาทั้งหมดจะถูกแปลงเป็นสตริง
ในการเชื่อมต่อสตริงด้วยเครื่องหมาย "บวก" (ใช้ Java เวอร์ชันก่อนหน้า) ให้แน่ใจว่าได้ตรวจสอบให้แน่ใจว่าองค์ประกอบแรกเป็นสตริง
(10) ผู้ดำเนินการจำลอง (CAST)
สำหรับการดำเนินการเช่น "การแปลงที่ จำกัด " (ประเภทข้อมูลที่สามารถรองรับข้อมูลเพิ่มเติมและแปลงเป็นประเภทเล็ก ๆ เช่น int ถึงสั้น) คุณอาจเผชิญกับความเสี่ยงของการสูญเสียข้อมูล ณ จุดนี้คอมไพเลอร์จะบังคับให้เราสร้างรูปร่างที่ชัดเจน
สำหรับ "การแปลงที่กว้างขึ้น" ไม่จำเป็นต้องมีรูปร่างอย่างชัดเจนเนื่องจากประเภทใหม่สามารถรองรับประเภทของข้อมูลดั้งเดิมได้อย่างแน่นอนและจะไม่ทำให้เกิดการสูญเสียข้อมูลใด ๆ
ค่าบูลีน (Bolleans) ไม่อนุญาตให้มีการประมวลผลการจัดแต่งทรงผมเลยและประเภทหลักอื่น ๆ สามารถเข้าด้วยกันได้
หลังจากสร้างค่าลอยหรือค่าสองเท่าเป็นค่าจำนวนเต็มส่วนทศนิยมจะถูก "ตัด" เสมอโดยไม่มีการพกพาใด ๆ
Math.round (11.5) เท่าไหร่เท่าไหร่? Math.round (-11.5) เท่าไหร่เท่าไหร่?
Math.round(11.5)==12 Math.round(-11.5)==-11
วิธีการกลมส่งคืนจำนวนเต็มยาวที่อยู่ใกล้กับพารามิเตอร์มากที่สุด หลังจากเพิ่ม 1/2 ลงในพารามิเตอร์ให้ค้นหาพื้น
สรุป
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้เกี่ยวกับผู้ประกอบการ Java และลำดับความสำคัญของพวกเขาและฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
หลักการอัลกอริทึมการจับคู่สตริง Multimode และรหัสการใช้งาน Java
คำอธิบายโดยละเอียดเกี่ยวกับวิธีการใช้ตัวดำเนินการฟังก์ชั่น RXJAVA
การอภิปรายสั้น ๆ เกี่ยวกับการแปลงระหว่างอาร์เรย์สตริงสตริงและรูปร่างใน Java
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!