สวัสดี! วัน นี้ เราจะพิจารณาหัวข้อที่สำคัญมาก นั่นคือตัวดำเนินการตัวเลขใน Java
ในการเขียนโปรแกรม ตัวเลขมีอยู่ทุกที่ หากคุณเจาะลึกและจำโรงเรียนมัธยมได้ คุณอาจจำได้ว่าคอมพิวเตอร์แสดงข้อมูลทั้งหมดในรูปแบบตัวเลข: การรวมกันของศูนย์และหนึ่งหรือที่เรียกว่ารหัสไบนารี
มีตัวดำเนินการตัวเลขมากมายในการ เขียน โปรแกรม ดังนั้นเราจะใช้ตัวอย่างเพื่อสำรวจตัวดำเนินการที่สำคัญที่สุด :) เริ่มจากตัวดำเนินการที่ง่ายที่สุด: ตัวดำเนินการทางคณิตศาสตร์


+
เหล่านี้คือตัวดำเนินการการบวก ( ) การลบ ( -
) การคูณ ( *
) และการหาร ( /
) ที่รู้จักกันดี
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
System.out.println(x+y);
System.out.println(x-y);
System.out.println(x*y);
System.out.println(x/y);
}
}
เอาต์พุตคอนโซล: 1032 966 32967 30 คุณใช้ทั้งหมดนี้แล้ว สำหรับกลุ่มนี้ คุณสามารถเพิ่ม%
ตัวดำเนินการที่เหลือหรือโมดูโล ( )
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 33%2;
System.out.println(y);
}
}
เอาต์พุตคอนโซล: 1 ในตัวอย่างนี้ เราหาร 33 ด้วย 2 ซึ่งได้ 16 โดยมี "ส่วนท้าย" พิเศษ (หนึ่ง) ที่หารด้วย 2 ไม่ได้ "ส่วนท้าย" นี้เป็นผลลัพธ์ของการดำเนินการ "ส่วนที่เหลือจากการหาร" Java ยังใช้การเปรียบเทียบ/ตัวดำเนินการเชิงสัมพันธ์ (เช่นเดียวกับในวิชาคณิตศาสตร์) พวกเขาอาจคุ้นเคยกับคุณจากโรงเรียนเช่นกัน:
- เท่ากับ (
==
) - มากกว่า (
>
) - น้อยกว่า (
<
) - มากกว่าหรือเท่ากับ (
>=
) - น้อยกว่าหรือเท่ากับ (
<=
) - ไม่เท่ากัน (
!=
)
==
ไม่ใช่ =
ใน Java ตัวเดียว=
คือ ตัวดำเนิน การกำหนดซึ่งใช้เมื่อตัวแปรถูกกำหนดเป็นตัวเลข สตริง หรือค่าของตัวแปรอื่น

public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x=y);// We expect false to be displayed
}
}
เอาต์พุตคอนโซล: 999 อ๊ะ! เห็นได้ชัดว่านี่ไม่ใช่ผลลัพธ์ที่เราคาดไว้ เป็นประเภทข้อมูลที่แตกต่างไปจากเดิมอย่างสิ้นเชิง เราคาดว่าจะเห็นบูลีนแต่เราได้ตัวเลขมา ทั้งหมดเป็นเพราะเราใช้ ตัวดำเนิน การกำหนดในวงเล็บแทนการ เปรียบเทียบ x=y
ค่าของy
(999) ถูกกำหนดให้กับตัวแปรx
จากนั้นเราจึงแสดงค่าx
ของ นี่คือวิธีที่ถูกต้อง:
public class Main {
public static void main(String[] args) {
int x = 33;
int y = 999;
System.out.println(x==y);
}
}
เอาต์พุตคอนโซล: เท็จ ตอนนี้เราได้เปรียบเทียบตัวเลขทั้งสองอย่างถูกต้องแล้ว! :) ต่อไปนี้เป็นคุณลักษณะอื่นของโอเปอเรเตอร์การกำหนด ( =
): สามารถ "เชื่อมโยง" เข้าด้วยกันได้:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
int z = 256;
x = y = z;
System.out.println(x);
}
}
เอาต์พุตของคอนโซล: 256 โปรดจำไว้ว่าการมอบหมายนั้นมาจากขวาไปซ้าย นิพจน์นี้ ( x = y = z
) จะถูกดำเนินการตามขั้นตอน:
y = z
, นั่นคือ,y = 256
x = y
, นั่นคือ,x = 256
ตัวดำเนินการยูนารี
พวกเขาเรียกว่า " unary " จากคำว่า " uno " ซึ่งแปลว่า " หนึ่ง " พวกเขาได้ชื่อนี้เพราะไม่เหมือนกับโอเปอเรเตอร์รุ่นก่อนหน้า พวกเขาใช้หมายเลขเดียว ไม่ใช่หลายตัว เหล่านี้รวมถึง:-
ยูนารี ลบ. มันพลิกเครื่องหมายของตัวเลข
public class Main {
public static void main(String[] args) {
int x = 999;
// Change the sign for the first time
x = -x;
System.out.println(x);
// Change the sign for the second time
x= -x;
System.out.println(x);
}
}
เอาต์พุตคอนโซล: -999 999 เราใช้ตัวดำเนินการลบเลขคู่สองครั้ง เป็นผลให้จำนวนของเราติดลบก่อนแล้วจึงกลับมาเป็นบวกอีกครั้ง!
- เพิ่มขึ้น (++) และลด (--)
++
ดำเนินการเพิ่มจำนวนทีละหนึ่ง และ--
ตัวดำเนินการลดจำนวนด้วยจำนวนที่เท่ากัน
public class Main {
public static void main(String[] args) {
int x = 999;
x++;
System.out.println(x);
x--;
System.out.println(x);
}
}
เอาต์พุตของคอนโซล: 1,000 999 สัญลักษณ์นี้อาจคุ้นเคยกับคุณหากคุณเคยได้ยินเกี่ยวกับภาษา C++ ผู้สร้างใช้ชื่อที่น่าสนใจนี้เพื่อสื่อถึงแนวคิดที่ว่า "C++ เป็นส่วนขยายของภาษา C" Notepad รุ่นปรับปรุงที่ได้รับความนิยมเรียกว่า Notepad++ นี่คือประเด็นสำคัญ ตัวดำเนิน การ เพิ่มและลดมีสองประเภท ได้แก่postfixและprefix x++
- postfix ++x
- prefix อะไรคือความแตกต่างพื้นฐานระหว่างการใส่ pluses/minuses ก่อนหรือหลังตัวเลข? เราจะเห็นในตัวอย่างต่อไปนี้:
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
}
}
เอาต์พุตคอนโซล: 999 มีบางอย่างผิดปกติ! เราต้องการเพิ่มx
ทีละ 1 และกำหนดค่าใหม่ให้กับตัวแปร y กล่าวอีกนัยหนึ่ง y ควรเป็น 1,000 แต่เราได้อย่างอื่นแทน: 999 ดูเหมือนว่า x ไม่เพิ่มขึ้นและตัวดำเนินการเพิ่มไม่ทำงาน แต่มันได้ผล เพื่อโน้มน้าวใจตัวเอง ลองแสดงx
ในตอนท้าย :)
public class Main {
public static void main(String[] args) {
int x = 999;
int y = x++;
System.out.println(y);
System.out.println(x);
}
}
เอาต์พุตของคอนโซล: 999 1,000 อัน ที่จริง นี่คือเหตุผลว่าทำไมการดำเนินการนี้จึงเรียกว่า postfix: ดำเนินการหลังจากนิพจน์หลัก ในกรณีของเรา หมายความว่า int y = x++;
y = x
ดำเนินการก่อน (และตัวแปรy
จะเริ่มต้นเป็นค่าของx
) และจากนั้นจึงจะ x++
ดำเนินการ ถ้านี่ไม่ใช่พฤติกรรมที่เราต้องการ จากนั้นเราจำเป็นต้องใช้ สัญกรณ์ นำหน้า :
public class Main {
public static void main(String[] args) {
int x = 999;
int y = ++x;
System.out.println(y);
}
}
ในกรณีนี้++x
จะดำเนินการก่อนและหลังจากนั้นคือy = x
; ดำเนินการ คุณควรมอบความแตกต่างนี้ให้กับหน่วยความจำทันทีเพื่อหลีกเลี่ยงความผิดพลาดในโปรแกรมจริง ซึ่งการใช้ postfix แทนคำนำหน้าอาจทำให้ทุกอย่างกลับหัวกลับหางได้ :)
ตัวดำเนินการผสม
นอกจากนี้ใน Java ยังมีตัวดำเนินการผสมที่เรียกว่า พวกเขารวมตัวดำเนินการสองตัว:- งานที่มอบหมาย
- ตัวดำเนินการทางคณิตศาสตร์
+=
-=
*=
/=
%=
public class Main {
public static void main(String[] args) {
int x = 999;
int y = 33;
x += y;
System.out.println(x);
}
}
เอาต์พุตคอนโซล: 1032 x += y
หมายถึงx = x + y
. สัญลักษณ์ทั้งสองนี้ใช้ติดต่อกันเพื่อความกระชับ ชุดค่าผสม-=
, *=
และ/=
ทำงาน%=
ในลักษณะเดียวกัน
ตัวดำเนินการเชิงตรรกะ
นอกจากตัวดำเนินการตัวเลขแล้ว Java ยังมีการดำเนินการที่เกี่ยวข้องกับค่าบูลีน ( จริงและเท็จ ) การดำเนินการเหล่านี้ดำเนินการโดยใช้ตัวดำเนินการเชิงตรรกะ!
- ตรรกะไม่ . มันพลิกค่าของบูลีน
public class Main {
public static void main(String[] args) {
boolean x = true;
System.out.println(!x);
}
}
เอาต์พุตคอนโซล: เท็จ
&&
- ตรรกะและ . มันจะคืนค่าจริงก็ต่อเมื่อ ตัวถูกดำเนินการ ทั้งสองเป็นจริง เท่านั้น
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 && 100 > 200);
System.out.println(100 > 50 && 100 >= 100);
}
}
เอาต์พุตคอนโซล: เท็จ จริง ผลลัพธ์ของการดำเนินการแรกเป็นเท็จ เนื่องจากหนึ่งในตัวถูกดำเนินการเป็นเท็จ กล่าว100 > 200
คือ ในการคืนค่าจริง&&
ตัวดำเนินการต้องการให้ตัวถูกดำเนินการทั้งสองเป็นจริง (เช่นกรณีในบรรทัดที่สอง)
||
- ตรรกะหรือ . มันจะคืนค่าจริงเมื่อ ตัวถูกดำเนินการ อย่างน้อยหนึ่งตัวเป็นจริง
public class Main {
public static void main(String[] args) {
System.out.println(100 > 10 || 100 > 200);
}
}
เอาต์พุตคอนโซล: จริง นิพจน์100 > 200
ยังคงเป็นเท็จ แต่สำหรับ ตัวดำเนินการ ORนั้นเพียงพอแล้วที่ส่วนแรก ( 100 > 10
) เป็นจริง
GO TO FULL VERSION