ลูปสามประเภทใน Java
ที่มา: สื่อ หลังจากอ่านโพสต์นี้ คุณจะได้เรียนรู้เกี่ยวกับวิธีต่างๆ ของการวนซ้ำใน Java Loop ได้รับการออกแบบมาเพื่อดำเนินการบล็อกโค้ดจนกว่าเงื่อนไขจะเป็นจริง ลูปใน Java มีสามประเภท:- ในขณะที่
- ทำในขณะที่
- สำหรับ
ในขณะที่วนซ้ำ
การวนซ้ำ while จะเกิดขึ้นซ้ำจนกว่าเงื่อนไขบูลีนที่ระบุจะประเมินเป็นจริง ดังที่แสดงในแผนภาพด้านล่าง คำสั่งจะถูกดำเนินการจนกว่าการทดสอบเงื่อนไขจะคืนค่าเป็นจริงไวยากรณ์
while (condition true) {
// Блок codeа
}
ตัวอย่าง
ในที่นี้จะทำการวนซ้ำ while จนกว่าเงื่อนไขจะเป็นจริงสำหรับ x น้อยกว่า 3public class WhileLoop {
static int x = 1;
public static void main(String[] args) {
while(x < 3) {
System.out.println("x = "+x);
x++;
}
}
}
บทสรุป:
ทำในขณะที่วนซ้ำ
การวนซ้ำแบบ do- While นั้นคล้ายกับการวนซ้ำแบบ while โดยมีข้อแตกต่างเล็กๆ น้อยๆ อย่างหนึ่ง การวนซ้ำ do- While จะทำงานหนึ่งครั้งก่อนที่จะทดสอบเงื่อนไขเสมอไวยากรณ์
do {
// Блок codeа
} while(condition);
ตัวอย่าง
ในตัวอย่างนี้ คุณจะเห็นว่าคำสั่ง do หรือบล็อกของโค้ดถูกดำเนินการหนึ่งครั้งเสมอก่อนที่จะทดสอบว่าเงื่อนไขเป็นจริงหรือเท็จstatic int x = 5;
public static void main(String[] args) {
do {
System.out.println("x = "+x);
x++;
} while(x < 3);
}
บทสรุป
สำหรับวง
for loop นั้นแตกต่างอย่างมากจาก while และ do- While loop ในบรรทัดคำสั่งหนึ่งบรรทัด เรากำหนดการเริ่มต้น เงื่อนไข (จริงหรือเท็จ) การเพิ่มขึ้น/ลดลงไวยากรณ์
For (initialization; condition; increment/decrement) {
// Блок codeа
}
ตัวอย่าง
public static void main(String[] args) {
for(int i = 0 ; i < 2 ; i++) {
System.out.println("i = " + i);
}
}
บทสรุป:
ขยายสำหรับการวนซ้ำ (สำหรับแต่ละ)
มี for loop อีกเวอร์ชันหนึ่งที่มีขนาดกะทัดรัดและอ่านง่ายกว่า for loop แบบธรรมดา เรียกว่าส่วนขยายสำหรับลูป (หรือสำหรับแต่ละลูป) และใช้เพื่อวนซ้ำผ่านคอลเลกชันและอาร์เรย์ สามารถใช้ได้กับออบเจ็กต์ใดๆ ที่ใช้อินเทอร์เฟซ Iterableตัวอย่าง
class Main
{
public static void main(String[] args)
{
int[] A = { 1, 2, 3, 4, 5 };
for (int i: A) {
System.out.println(i);
}
}
}
บทสรุป:
JDK 19: คุณสมบัติใหม่ของ Java 19 ที่จะมาในเดือนกันยายน
ที่มา: Infoworld นี่คือรายการคุณสมบัติใหม่ที่จะปรากฏใน JDK ที่กำลังจะมาถึง มีกำหนดฉายวันที่ 20 กันยายน 2022 Java Development Kit 19 ซึ่งเป็นรุ่นสนับสนุนระยะสั้นที่มีกำหนดออกในเดือนกันยายน ได้เข้าสู่ขั้นตอนการเปิดตัวแล้ว มีคุณลักษณะเจ็ดประการที่ต้องระวัง: ความขนานที่มีโครงสร้าง เทมเพลตบันทึก การแสดงตัวอย่าง API ต่างประเทศและหน่วยความจำ และการรองรับสถาปัตยกรรมชุดคำสั่ง Linux/RISC-V แบบโอเพ่นซอร์ส (ISA) เนื่องจากคุณสมบัติใหม่ถูกแช่แข็งไว้แล้วสำหรับ JDK 19 คุณสมบัติที่วางแผนไว้อื่นๆ เช่น ข้อมูลทั่วไปและออบเจ็กต์คุณค่า จึงถูกเลื่อนไปเป็นแพลตฟอร์มเวอร์ชันใหม่กว่า โดยปกติแล้ว Java เวอร์ชันใหม่จะออกทุกๆ หกเดือน ผู้สมัครเปิดตัว JDK 19 ได้รับการเผยแพร่เมื่อวันที่ 11 สิงหาคม หลังจากการเปิดตัวทางลาดสองครั้งในเดือนมิถุนายนและกรกฎาคม ผู้สมัครรุ่นที่สองคาดว่าจะในวันที่ 25 สิงหาคม สามารถดาวน์โหลด JDK 19 รุ่นก่อนๆ ได้จากjdk.java.net/19 คุณสมบัติ JDK 19 ประกอบด้วย:-
โครงสร้างความเท่าเทียม (ระหว่างระยะฟักตัว) ได้รับการออกแบบมาเพื่อทำให้การเขียนโปรแกรมแบบมัลติเธรดง่ายขึ้นโดยใช้ Structured Concurrency API ความเท่าเทียมนี้ถือว่างานหลายงานที่ทำงานบนเธรดที่แตกต่างกันเป็นหน่วยงานเดียว ดังนั้นสิ่งนี้จะช่วยลดความยุ่งยากในการจัดการและการยกเลิกข้อผิดพลาดและความน่าเชื่อถือจะได้รับการปรับปรุงด้วย
-
ดูตัวอย่างเทมเพลตบันทึก (สำหรับการแยกวิเคราะห์ค่าบันทึก) รูปแบบบันทึกและรูปแบบประเภทสามารถซ้อนกันได้ โดยให้รูปแบบการนำทางและการจัดการข้อมูลที่ชัดเจน มีประสิทธิภาพ และประกอบได้ คุณลักษณะใหม่นี้รวมถึงการขยายการจับคู่รูปแบบเพื่อแสดงการสืบค้นข้อมูลแบบผสมที่ซับซ้อนมากขึ้น โดยไม่ต้องเปลี่ยนไวยากรณ์หรือความหมายของรูปแบบประเภท
นวัตกรรมนี้สร้างขึ้นจากการจับคู่รูปแบบสำหรับอินสแตนซ์ที่เปิดตัวใน JDK 16 ในเดือนมีนาคม 2021 การเปิดตัวในอนาคตอาจกำหนดให้เทมเพลตบันทึกได้รับการขยายด้วยคุณสมบัติต่างๆ เช่น เทมเพลตอาร์เรย์และเทมเพลต vararg
เทมเพลตโพสต์เป็นส่วนหนึ่งของโครงการ Amberซึ่งมีเป้าหมายเพื่อสำรวจและพัฒนาฟีเจอร์ Java ขนาดเล็กที่เน้นประสิทธิภาพ
-
ดูตัวอย่างเวอร์ชันของฟังก์ชัน API ต่างประเทศและหน่วยความจำ รุ่นใหม่จะแนะนำ API ที่ช่วยให้โปรแกรม Java สามารถโต้ตอบกับโค้ดและข้อมูลภายนอกรันไทม์ Java ได้ ด้วยการเรียกใช้ฟังก์ชันของบุคคลที่สามอย่างมีประสิทธิภาพ (นั่นคือโค้ดภายนอก JVM) และการเข้าถึงหน่วยความจำภายนอกอย่างปลอดภัย (หน่วยความจำที่ไม่ได้จัดการโดย JVM) API จะช่วยให้โปรแกรม Java เรียกใช้ไลบรารีดั้งเดิมและประมวลผลข้อมูลดั้งเดิมโดยไม่มีข้อเสียของ Java อินเทอร์เฟซดั้งเดิม (JNI)
API ภายนอกและหน่วยความจำรวม API การบ่มก่อนหน้านี้สองรายการ: API การเข้าถึงหน่วยความจำภายนอกและ API ตัวเชื่อมโยงภายนอก ฟังก์ชันต่างประเทศและ API หน่วยความจำถูกบ่มก่อนหน้านี้ใน JDK 17 และบ่มใหม่ใน JDK 18
-
การแสดงตัวอย่าง เธรดเสมือน คุณลักษณะนี้แนะนำเธรดน้ำหนักเบาซึ่งช่วยลดความพยายามในการเขียน การบำรุงรักษา และการตรวจสอบแอปพลิเคชันแบบขนานประสิทธิภาพสูงได้อย่างมาก วัตถุประสงค์ของนวัตกรรมนี้คือเพื่อให้ความสามารถในการปรับขนาดแอปพลิเคชันเซิร์ฟเวอร์ที่เขียนในรูปแบบเธรดต่อคำขอที่เรียบง่าย โค้ดเป้าหมายคุณลักษณะที่ใช้ java.lang Thread API เพื่อแทรกเธรดเสมือนโดยมีการเปลี่ยนแปลงเพียงเล็กน้อย และเพื่อแก้ไขปัญหา ดีบัก และโปรไฟล์เธรดเสมือนโดยใช้เครื่องมือ JDK ที่มีอยู่
- ตัวอย่างที่สามของการจับคู่รูปแบบสำหรับนิพจน์และคำสั่ง ของสวิตช์ โดยขยายการจับคู่รูปแบบไปยังสวิตช์ ซึ่งจะช่วยให้สามารถทดสอบนิพจน์กับรูปแบบจำนวนหนึ่ง โดยแต่ละรูปแบบมีผลกระทบเฉพาะ ดังนั้นจึงสามารถแสดงการสืบค้นที่เน้นข้อมูลเป็นศูนย์กลางที่ซับซ้อนได้อย่างกระชับและปลอดภัย
ก่อนหน้านี้ฟีเจอร์นี้แสดงตัวอย่างใน JDK 17 และ JDK 18 การแสดงตัวอย่างที่สามเพิ่มการปรับปรุง รวมถึงการแทนที่การป้องกันเมื่อรูปแบบมีส่วนคำสั่งในบล็อกสวิตช์ นอกจากนี้ รันไทม์ซีแมนทิกส์ของรูปแบบสวิตช์เมื่อค่าของนิพจน์ตัวเลือกเป็นโมฆะ ขณะนี้รองรับซีแมนทิกส์สวิตช์แบบเดิมแล้ว
นวัตกรรมนี้จะขยายความหมายและการบังคับใช้ของนิพจน์สวิตช์และผู้ปฏิบัติงาน โดยอนุญาตให้มีรูปแบบปรากฏในป้ายกำกับเคส นอกจากนี้ ยังช่วยให้นักพัฒนาสามารถผ่อนคลายความเกลียดชังในอดีตที่มีต่อค่า null และสวิตช์เมื่อจำเป็น ปรับปรุงความปลอดภัยของคำสั่ง switch และตรวจสอบให้แน่ใจว่าคำสั่ง switch และคำสั่งที่มีอยู่ยังคงคอมไพล์ไม่เปลี่ยนแปลงและดำเนินการด้วยความหมายที่เหมือนกัน
-
การฟักตัวครั้งที่สี่ของvector API โดยจะแสดงการคำนวณเวกเตอร์ที่คอมไพล์ ณ รันไทม์ได้อย่างน่าเชื่อถือเป็นคำสั่งเวกเตอร์ที่เหมาะสมที่สุดบนสถาปัตยกรรมโปรเซสเซอร์ที่รองรับ ซึ่งจะให้ประสิทธิภาพที่ดีกว่าการคำนวณสเกลาร์ที่เทียบเท่า นักพัฒนาที่ใช้ API จะได้รับความสามารถในการเขียนอัลกอริธึมเวกเตอร์ที่ซับซ้อนใน Java โดยใช้ autovectorizer ของ HotSpot แต่ด้วยโมเดลแบบกำหนดเองที่ทำให้การทำเวกเตอร์สามารถคาดเดาและเชื่อถือได้มากขึ้น ก่อนหน้านี้ Vector API ได้รับการบ่มใน JDK 16, JDK 17 และ JDK 19
Vector API จะขยายการดำเนินการเชิงเส้นอินทิกรัลระดับบิต ซึ่งรวมถึงการดำเนินการ เช่น การนับจำนวนบิต การกลับลำดับของบิต และการบีบอัดและการขยายบิต
-
พอร์ต Linux/RISC-V Java จะได้รับการสนับสนุนชุดคำสั่งฮาร์ดแวร์ซึ่งได้รับการสนับสนุนโดยชุดเครื่องมือภาษาที่หลากหลาย ขณะนี้พอร์ต Linux/RISC-V จะสนับสนุนการกำหนดค่า RV64GV RISC-V ซึ่งเป็น ISA วัตถุประสงค์ทั่วไป 64 บิตที่มีคำสั่งเวกเตอร์
พอร์ตยังรองรับตัวเลือกเครื่องเสมือน HotSpot ต่อไปนี้: ตัวแปลเทมเพลต, คอมไพเลอร์ C1 JIT (ไคลเอนต์), คอมไพเลอร์ C2 JIT (เซิร์ฟเวอร์) และผู้รวบรวมขยะหลักในปัจจุบันทั้งหมด รวมถึง ZGC และ Shenandoah
GO TO FULL VERSION