JavaRush /จาวาบล็อก /Random-TH /การดำเนินการตัวเลขใน Java

การดำเนินการตัวเลขใน Java

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

การดำเนินการทางคณิตศาสตร์

เริ่มจากสิ่งที่ง่ายที่สุด - ด้วยการดำเนินการทางคณิตศาสตร์ สิ่งเหล่านี้คือการบวก (เครื่องหมาย +) การลบ (-) การคูณ (*) และการหาร (/) ที่รู้จักกันดี
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 เป็นตัวดำเนินการกำหนด โดยที่ตัวแปรถูกกำหนดเป็นตัวเลข สตริง หรือค่าของตัวแปรอื่น การดำเนินการตัวเลขใน Java - 3
public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);// expect false to be printed to the console
   }
}
เอาต์พุตคอนโซล:

999
อ๊ะ! เห็นได้ชัดว่านี่ไม่ใช่ผลลัพธ์ที่เราคาดหวัง นี่เป็นข้อมูลประเภทที่แตกต่างไปจากเดิมอย่างสิ้นเชิง: เราคาดว่าจะเห็นbooleanแต่ได้ตัวเลขมา เนื่องจากในวงเล็บเรามีการดำเนินการมอบหมาย ไม่ใช่การเปรียบเทียบ 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);
   }
}
เอาต์พุตคอนโซล:

false
ตอนนี้เราเปรียบเทียบตัวเลข 2 ตัวได้อย่างถูกต้องแล้ว! :) คุณสมบัติอีกประการหนึ่งของการดำเนินการมอบหมาย ( =) ก็คือสามารถดำเนินการแบบ "ถูกล่ามโซ่" ได้:
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

พวกเขาเรียกว่า "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 a 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);
       }
    }

    เอาต์พุตคอนโซล:

    
    1000
    999
สัญกรณ์รูปแบบนี้อาจคุ้นเคยสำหรับคุณหากคุณเคยได้ยินภาษา C++ ด้วยความช่วยเหลือของชื่อที่น่าสนใจ ผู้สร้างได้ถ่ายทอดความคิดของพวกเขา: “C++ เป็นส่วนเสริมของภาษา C” Notepad เวอร์ชันปรับปรุงยอดนิยมเรียกว่า Notepad++ จุดสำคัญ. การดำเนินการเพิ่มและลดมีสองประเภท: postfix และ prefix x++- สัญกรณ์ postfix ++x- สัญกรณ์นำหน้า อะไรคือความแตกต่างพื้นฐานหากคุณใส่เครื่องหมายบวกและเครื่องหมายลบก่อนหรือหลังตัวเลข? ลองดูตัวอย่าง:
public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
เอาต์พุตคอนโซล:

999
มีอะไรผิดปกติหรือเปล่า! เราต้องการเพิ่มขึ้น 1 และกำหนดค่า ใหม่xให้กับตัวแปร 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
1000
ที่จริงแล้ว นั่นคือสาเหตุว่าทำไมการดำเนินการ 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; ความแตกต่างนี้ควรค่าแก่การจดจำทันทีเพื่อไม่ให้เกิดข้อผิดพลาดในโปรแกรมจริงซึ่งพฤติกรรมทั้งหมดสามารถกลับหัวกลับหางได้ด้วยเหตุนี้ :)

การดำเนินงานแบบผสมผสาน

นอกจากนี้ใน 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 ยังมีการดำเนินการกับตัวแปรบูลีน - trueและfalse. การดำเนินการเหล่านี้ดำเนินการโดยใช้ตัวดำเนินการเชิงตรรกะ
  • !— ตัวดำเนินการ "ไม่ใช่" กลับค่าของตัวแปรบูลีน

    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }

    เอาต์พุตคอนโซล:

    
    false

  • &&— ตัวดำเนินการ “และ” ส่งคืนค่าtrueเฉพาะในกรณีที่ตัวถูกดำเนินการทั้งสองtrueเป็น

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }

    เอาต์พุตคอนโซล:

    
    false
    true

    ผลลัพธ์ของการดำเนินการแรกคือfalseเนื่องจากเงื่อนไขข้อใดข้อหนึ่งเป็นเท็จ กล่าวคือ 100 > 200 ตัวดำเนินการต้องการให้เงื่อนไขทั้งหมดเป็นจริง (เช่น ในบรรทัดที่สอง เป็นต้น) &&เพื่อส่งคืนtrue

  • ||— ตัวดำเนินการ “หรือ” ส่งคืนtrueเมื่อตัวถูกดำเนินการอย่างน้อยหนึ่งตัวเป็นจริง

    ตัวอย่างก่อนหน้านี้ของเราจะทำงานแตกต่างออกไป:

    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }

    เอาต์พุตคอนโซล:

    
    true

    นิพจน์ 100 > 200 ยังคงเป็นเท็จ แต่ตัวดำเนินการ "หรือ" ค่อนข้างพอใจที่ส่วนแรก (100 > 10) เป็นจริง

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION