หนึ่ง. เกี่ยวกับลักษณะของอาร์เรย์
1. ใน Java มีการตรวจสอบขอบเขตว่าคุณใช้อาร์เรย์หรือคอลเลกชัน หากการดำเนินการหมดขอบเขตจะได้รับ RuntimeException
2. อาร์เรย์สามารถบันทึกประเภทเฉพาะเท่านั้น อาร์เรย์สามารถบันทึกชนิดข้อมูลดั้งเดิมได้ แต่คอลเลกชันไม่สามารถทำได้ คอลเลกชันไม่ประมวลผลวัตถุในประเภทเฉพาะ พวกเขาประมวลผลวัตถุทั้งหมดตามประเภทวัตถุ สิ่งที่เก็บไว้ในคอลเลกชันคือการอ้างอิงของวัตถุมากกว่าวัตถุเอง
3. คลาสคอลเลกชันสามารถบันทึกการอ้างอิงไปยังวัตถุเท่านั้น สามารถสร้างอาร์เรย์เพื่อบันทึกชนิดข้อมูลดั้งเดิมโดยตรงหรือเพื่อบันทึกการอ้างอิงไปยังวัตถุ ในคอลเลกชันคุณสามารถใช้คลาส wrapper เช่นจำนวนเต็ม, double, ฯลฯ เพื่อบันทึกค่าชนิดข้อมูลดั้งเดิม
รหัสตัวอย่าง:
int a = 10; จำนวนเต็มจำนวนเต็ม = จำนวนเต็มใหม่ (a); int b = integer.intvalue (); System.out.println (a = b);
4. อาร์เรย์วัตถุและอาร์เรย์ชนิดข้อมูลดั้งเดิมเกือบจะเหมือนกันในการใช้งาน ความแตกต่างเพียงอย่างเดียวคืออาร์เรย์วัตถุบันทึกการอ้างอิงและอาร์เรย์ชนิดข้อมูลดั้งเดิมถือค่าของชนิดข้อมูลดั้งเดิม
2. การใช้อาร์เรย์ที่ถูกต้อง
หากคุณต้องการจัดเก็บข้อมูลจำนวนมากตัวอย่างเช่นหากคุณต้องการอ่านตัวเลข 100 ตัวคุณต้องกำหนดตัวแปร 100 ตัว เห็นได้ชัดว่ามันไม่สมเหตุสมผลที่จะทำซ้ำรหัส 100 ครั้ง วิธีแก้ปัญหานี้? ภาษา Java จัดเตรียมโครงสร้างข้อมูลอาร์เรย์ (อาร์เรย์) ซึ่งเป็นคอนเทนเนอร์ที่สามารถจัดเก็บองค์ประกอบของชนิดข้อมูลเดียวกันและสามารถเก็บหมายเลข 100 ไว้ในอาร์เรย์ อาร์เรย์จะช่วยได้อย่างดีในเวลานี้ ~
1. ประโยชน์ของอาร์เรย์
มีความแตกต่างระหว่างการจัดเก็บข้อมูลและไม่จัดเก็บข้อมูลหรือไม่? ข้อได้เปรียบที่ใหญ่ที่สุดของอาร์เรย์คือพวกเขาสามารถกำหนดจำนวนองค์ประกอบที่เก็บไว้ทั้งหมดโดยอัตโนมัติ โปรดทราบว่าจำนวนเริ่มต้นจาก 0. ใช้งานง่ายต่อการใช้งานข้อมูลเหล่านี้
ตัวอย่างเช่นหมายเลขนักเรียนสามารถใช้เพื่อค้นหานักเรียนที่เกี่ยวข้อง
2. รูปแบบอาร์เรย์
รูปแบบ 1:
ประเภทองค์ประกอบ [] ชื่ออาร์เรย์ = ประเภทองค์ประกอบใหม่ [จำนวนองค์ประกอบหรือความยาวอาร์เรย์];
ตัวอย่าง:
int [] arr = new int [5]; arr [0] = 1; arr [1] = 2;
รูปแบบที่ 2:
ประเภทองค์ประกอบ [] ชื่ออาร์เรย์ = ประเภทองค์ประกอบใหม่ [] {องค์ประกอบ, องค์ประกอบ, …};
int [] arr = new int [] {3,5,1,7}; int [] arr = {3,5,1,7};หมายเหตุ: เมื่อจัดสรรพื้นที่ให้กับอาร์เรย์คุณต้องระบุจำนวนองค์ประกอบที่อาร์เรย์สามารถจัดเก็บเพื่อกำหนดขนาดอาร์เรย์ ขนาดของอาร์เรย์ไม่สามารถแก้ไขได้หลังจากสร้างอาร์เรย์ คุณสามารถใช้แอตทริบิวต์ความยาวเพื่อรับขนาดของอาร์เรย์
3. ประกาศตัวแปรอาร์เรย์
ในการใช้อาร์เรย์จะต้องประกาศอาร์เรย์ในโปรแกรมและประเภทองค์ประกอบของอาร์เรย์จะต้องระบุ
= ครึ่งซ้าย:
ก่อนอื่นเขียนด้านซ้ายเพื่อชี้แจงว่าประเภทองค์ประกอบคือ int และคอนเทนเนอร์ใช้อาร์เรย์ แล้วคุณจะระบุอาร์เรย์ได้อย่างไร? . จากนั้นใช้สัญลักษณ์พิเศษ [] วงเล็บเพื่อแสดง ในการใช้อาร์เรย์คุณต้องตั้งชื่ออาร์เรย์ดังนั้นเราจึงตั้งชื่ออาร์เรย์ x ที่นี่ จากนั้นทำตามเครื่องหมายที่เท่าเทียมกัน
รหัสสะท้อน:
int [] x
หมายเหตุ: int x [] ยังเป็นรูปแบบสำหรับการสร้างอาร์เรย์ ขอแนะนำให้ประกาศอาร์เรย์ int [] x
4. สร้างอาร์เรย์
= ครึ่งขวา:
หากต้องการใช้คำหลักใหม่ที่เรียกว่าใหม่ ใหม่ใช้เพื่อสร้างเอนทิตีคอนเทนเนอร์ในหน่วยความจำ การจัดเก็บข้อมูลต้องใช้พื้นที่ พื้นที่สำหรับการจัดเก็บข้อมูลจำนวนมากจะเปิดขึ้นพร้อมกับผู้ให้บริการใหม่ ใหม่ int [3]; 3 นี้คือจำนวนองค์ประกอบ ส่วนทางด้านขวากำหนดอาร์เรย์จริงในหน่วยความจำที่สามารถจัดเก็บองค์ประกอบ 3 อย่าง
ใหม่ int [3] ทำสองสิ่ง ขั้นแรกให้ใช้ Int ใหม่ [3] เพื่อสร้างอาร์เรย์จากนั้นกำหนดการอ้างอิงให้กับตัวแปรอาร์เรย์ x
int [] x=new int[3];
X เป็นประเภทใด?
ตัวแปรใด ๆ จะต้องมีชนิดข้อมูลของตัวเอง โปรดทราบว่า x นี้ไม่ใช่ประเภท int int แสดงถึงประเภทขององค์ประกอบในคอนเทนเนอร์ จากนั้น x เป็นประเภทอาร์เรย์
อาร์เรย์เป็นชนิดข้อมูลแยกต่างหาก ชนิดข้อมูลแบ่งออกเป็นสองโรงเรียนหลักซึ่งแบ่งออกเป็นประเภทข้อมูลพื้นฐานและชนิดข้อมูลอ้างอิง โรงเรียนที่ใหญ่เป็นอันดับสองคือประเภทข้อมูลอ้างอิง ดังนั้นตอนนี้คุณได้ติดต่อกับหนึ่งในสามของข้อมูลอ้างอิง นั่นคือประเภทอาร์เรย์ [] วงเล็บแสดงอาร์เรย์
int[] arr = new int[5]; จะเกิดอะไรขึ้นในความทรงจำ?
เมื่อโปรแกรมใดทำงานมีความจำเป็นที่จะต้องเปิดพื้นที่ในหน่วยความจำ inint [] arr = new int [5]; โปรแกรมนี้มีลักษณะอย่างไรในหน่วยความจำ? สิ่งนี้เกี่ยวข้องกับพื้นที่ที่เปิดโดย Java Virtual Machine เมื่อดำเนินการโปรแกรม Java เปิดพื้นที่เท่าไหร่? เรียนรู้โครงสร้างหน่วยความจำของ Java ต่อไป
5. การเริ่มต้นอาเรย์
วิธีที่ 1: อย่าใช้ตัวดำเนินการใหม่
int [] arr = {1, 2, 3, 4, 5};วิธีที่ 2: ใช้ตัวดำเนินการใหม่
int [] arr2 = new int [] {1, 2, 3, 4, 5}; int [] arr3 = int ใหม่ [3]; arr3 [0] = 1; arr3 [1] = 5; arr3 [2] = 6;หากผู้ประกอบการใหม่ไม่ได้ใช้ในการเริ่มต้นอาร์เรย์ หมายเหตุ: วิธีการเขียนต่อไปนี้ไม่ถูกต้อง
int [] arr; arr = {1,2,3,4,5};ในเวลานี้การเริ่มต้นอาร์เรย์คุณต้องวางประกาศการสร้างและการเริ่มต้นในคำสั่งเดียว การแยกมันจะทำให้เกิดข้อผิดพลาดทางไวยากรณ์
ดังนั้นคุณสามารถเขียนได้ดังนี้:
int [] arr = {1,2,3,4,5};6. อาเรย์เดินทางข้าม
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int [] x = {1, 2, 3}; สำหรับ (int y = 0; y <3; y ++) {system.out.println (x [y]); // system.out.println ("x ["+y+"] ="+x [y]); พิมพ์เอฟเฟกต์ x [0] = 1;} // จากนั้นนี่คือการดำเนินการทั่วไปครั้งแรกของอาร์เรย์ Traversal}มีแอตทริบิวต์ในอาร์เรย์ที่สามารถรับจำนวนองค์ประกอบในอาร์เรย์ได้นั่นคือความยาวของอาร์เรย์ ชื่ออาร์เรย์ความยาว
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int [] x = {1, 2, 3}; สำหรับ (int y = 0; y <x.length; y ++) {system.out.println (x [y]); // system.out.println ("x ["+y+"] พิมพ์เอฟเฟกต์ x [0] = 1;} // จากนั้นนี่คือการดำเนินการทั่วไปครั้งแรกของอาร์เรย์ Traversal}7. ข้อยกเว้นทั่วไปของอาร์เรย์
เครื่องหมายมุมอาร์เรย์ข้ามข้อยกเว้นขอบเขต: หมายเหตุ: เครื่องหมายมุมของอาร์เรย์เริ่มต้นจาก 0
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int [] x = {1, 2, 3}; system.out.println (x [3]); // java.lang.arrayIndexoutofboundsexception}}ข้อยกเว้นตัวชี้สองตัว:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int [] x = {1, 2, 3}; x = null; system.out.println (x [1]); // java.lang.nullpointerexception}อาร์เรย์:
เมื่อใดที่ควรใช้อาร์เรย์: เมื่อมีองค์ประกอบหลายอย่างเพื่ออำนวยความสะดวกในการทำงานของอาร์เรย์เหล่านี้จะดำเนินการจัดเก็บชั่วคราวก่อนและภาชนะที่ใช้เป็นอาร์เรย์
คุณสมบัติ:
ความยาวอาร์เรย์ได้รับการแก้ไข
8. การดำเนินการทั่วไปของอาร์เรย์
1: กรณี:
อาร์เรย์จะใช้ค่าสูงสุด
/*กำหนดฟังก์ชันเพื่อรับค่าสูงสุด:
1. กำหนดผลลัพธ์: ประเภทค่าคืนค่า int
2. เนื้อหาที่ไม่รู้จัก: ค่าสูงสุดของอาร์เรย์ที่ไม่ได้กำหนดดังนั้นอาร์เรย์จะไม่ถูกกำหนด
แนวคิด:
1. กำหนดตัวแปรและบันทึกองค์ประกอบที่ใหญ่กว่าของอาร์เรย์
2. วนซ้ำผ่านอาร์เรย์ทั้งหมดและเปรียบเทียบแต่ละองค์ประกอบของอาร์เรย์กับตัวแปร
3. เมื่อตัวแปรพบองค์ประกอบที่ใหญ่กว่ามันให้ตัวแปรบันทึกค่าขององค์ประกอบ เมื่อลูปสิ้นสุดลงค่าสูงสุดจะถูกสร้างขึ้น
*/สาธารณะคงที่ int getMax (int [] arr) {// กำหนดตัวแปรเพื่อบันทึกค่าที่ใหญ่กว่าและเริ่มต้นเป็นองค์ประกอบใด ๆ ในอาร์เรย์ int max = arr [0]; สำหรับ (int x = 1; x <arr.length; x ++) {ถ้า (arr [x]> max) max = arr [x];} return max;}สอง: การเรียงลำดับโดยตรง
กรณีที่ 2: เรียงลำดับอาร์เรย์โดยใช้การเรียงลำดับโดยตรง:
-
เลือกเรียงลำดับ
เปรียบเทียบองค์ประกอบกับมุมหนึ่งกับองค์ประกอบอื่น ๆ
ที่ปลายแรกของลูปด้านในค่ามากที่สุดจะปรากฏขึ้นที่ตำแหน่งมุมหัว
*/โมฆะคงที่สาธารณะ selectsort (int [] arr) {สำหรับ (int x = 0; x <arr.length-1; x ++) {สำหรับ (int y = x+1; y <arr.length; y ++) // ทำไมค่าเริ่มต้นของ y x+1? เพราะทุกครั้งที่คุณเปรียบเทียบ // จะถูกเปรียบเทียบกับองค์ประกอบถัดไปที่ทำเครื่องหมายไว้ที่มุม X {ถ้า (arr [x]> arr [y]) {int temp = arr [x]; arr [x] = arr [y]; arr [y] = temp;}}}}สาม: การเรียงลำดับฟอง
/*การจัดเรียงเดือด วิธีการเปรียบเทียบ: เปรียบเทียบสององค์ประกอบที่อยู่ติดกัน หากเป็นไปตามเงื่อนไขการเปลี่ยนตำแหน่งจะดำเนินการ หลักการ: ลูปด้านในจะสิ้นสุดลงหนึ่งครั้งและค่ามากที่สุดจะปรากฏขึ้นที่ตำแหน่งมุมหาง */Void Bubblesort (int [] arr) {สำหรับ (int x = 0; x <arr.length-1; x ++) {สำหรับ (int y = 0; y <arr.length-x-1; //-1: หลีกเลี่ยงเครื่องหมายมุมข้ามขอบเขต {ถ้า (arr [y]> arr [y+1]) {int temp = arr [y]; arr [y] = arr [y+1]; arr [y+1] = temp;}}}}สี่: การค้นหาครึ่งเท่า (วิธีคู่อนุภาค)
/*เพื่อปรับปรุงประสิทธิภาพการค้นหาคุณสามารถใช้วิธีการค้นหาครึ่งสุดท้าย หมายเหตุ: การค้นหานี้ใช้ได้กับอาร์เรย์ที่สั่งซื้อเท่านั้น วิธีนี้ได้กลายเป็นวิธีการค้นหาแบบไบนารี */public Static int halfseach (int [] arr, int key) {int min, mid, max; min = 0; max = arr.length -1; mid = (max + min)/2; ในขณะที่ (arr [mid]! = key) {ถ้า (key> arr [mid]) min = mid + 1; (สูงสุด+นาที)/2;} return mid;}ห้า: อาร์เรย์พลิก
/*การผกผันเป็นจริงการแทนที่ตำแหน่งขององค์ประกอบของเครื่องหมายมุมศีรษะและหางจากนั้นเครื่องหมายมุมหัวจะเพิ่มขึ้นโดยอัตโนมัติ เครื่องหมายมุมหางถูกทำลายตัวเอง เมื่อเครื่องหมายมุมหัวคือ <เครื่องหมายมุมหางการกระทำการทดแทนสามารถทำได้ */โมฆะแบบคงที่สาธารณะ reverseArray (int [] arr) {สำหรับ (int start = 0, end = arr.length-1; start <end; start ++, end-) {swap (arr, start, end);}} // ดำเนินการกระจัดตำแหน่งขององค์ประกอบของอาร์เรย์ การแลกเปลี่ยนโมฆะแบบคงที่สาธารณะ (int [] arr, int a, int b) {int temp = arr [a]; arr [a] = arr [b]; arr [b] = temp;}11. อาร์เรย์สองมิติ
การใช้อาร์เรย์
คำอธิบายโดยละเอียดของอาร์เรย์ Java
Traversal: ToString () ส่งคืนองค์ประกอบของอาร์เรย์เป็นสตริง
เรียงลำดับ: เรียงลำดับ () สั่งซื้ออาร์เรย์ตามลำดับจากน้อยไปมาก
ค้นหา: BinarySearch () ค้นหาองค์ประกอบที่ระบุในอาร์เรย์ที่ระบุส่งคืนดัชนีขององค์ประกอบ หากไม่พบการส่งคืน (-Insert Point-1) หมายเหตุ: เมื่อใช้ฟังก์ชั่นการค้นหาอาเรย์จะต้องเรียงลำดับก่อน
อาร์เรย์สองมิติ:
การสูบบุหรี่:
ไม่มีเงินซื้อ 1 ตัวแปร
เงินเล็กน้อยคือแพ็คของตัวแปร 20 มิติ 20 ตัวแปร
Rich 10 แพ็ค (อาร์เรย์สองมิติ) 2d Array
อาร์เรย์สองมิติ: ในสาระสำคัญการจัดเก็บเป็นอาร์เรย์หนึ่งมิติ
คำจำกัดความของอาร์เรย์:
ประเภทอาร์เรย์ [] [] ชื่ออาร์เรย์ = ประเภทอาร์เรย์ใหม่ [จำนวนอาร์เรย์หนึ่งมิติ] [จำนวนองค์ประกอบในแต่ละมิติหนึ่งอาร์เรย์];
คำอธิบายโดยละเอียดของอาร์เรย์ Java
คำถาม: ทำไม A.Length = 3, A [0] .length = 4?
คำอธิบายโดยละเอียดของอาร์เรย์ Java
การเริ่มต้นของอาร์เรย์:
การเริ่มต้นแบบคงที่:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
การเริ่มต้นแบบไดนามิก:
คำอธิบายโดยละเอียดของอาร์เรย์ Java
การดำเนินการทั่วไปสำหรับอาร์เรย์สองมิติ:
1. สำรวจอาร์เรย์สองมิติ
2. สรุปอาร์เรย์สองมิติ
คลาส Demo3 {// กำหนดฟังก์ชั่นการทำงานที่ผ่านการพิมพ์สองมิติแบบสแตติก printarr2 (int [] [] a) {// 1. การแยกอาร์เรย์สองมิติสำหรับ (int i = 0; i <a.length; i ++) {// 2 j ++) {system.out.print (a [i] [j]+","); }}} // กำหนดฟังก์ชั่นเพื่อคำนวณผลรวมการสะสมขององค์ประกอบในอาเรย์สองมิติสาธารณะคงที่คงที่ getsum (int [] [] a) {// 0. กำหนดค่าตัวแปรผลลัพธ์ที่ยาว = 0l; // 1. แยกชิ้นส่วนอาเรย์สองมิติสำหรับ (int i = 0; i <a.length; i ++) {// 2. แยกชิ้นส่วนอาร์เรย์หนึ่งมิติเพื่อรับข้อมูลสำหรับ (int j = 0; j <a [i] .length; j ++) {sum+= a [i] [J]; }} return sum;} // สถิติจำนวนองค์ประกอบในอาร์เรย์สองมิติสาธารณะคงที่ int getDataCount (int [] [] A) {// 0. บันทึกจำนวนองค์ประกอบ int count = 0; // 1. แยกชิ้นส่วนอาร์เรย์สองมิติสำหรับ (int i = 0; i <a.length; i ++) {// 2. แยกชิ้นส่วนอาร์เรย์หนึ่งมิติเพื่อรับข้อมูลสำหรับ (int j = 0; j <a [i] .length; j ++) {นับ ++; }} การนับคืน;} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {int [] [] a = new int [] [] {{23,4,5}, {2}, {4,5,78,56,90}}; printAr2 (a); System.out.println (); System.out.println ("ผลรวมสะสมคือ:"+getSum (a)); system.out.println ("จำนวนองค์ประกอบทางสถิติ:"+getDatacount (a)); system.out.println ("Hello World!");}};ข้างต้นเป็นหัวข้อทั้งหมดเกี่ยวกับอาร์เรย์ Java อย่างที่คุณเห็นอาร์เรย์ Java เป็นโครงสร้างข้อมูลที่ทรงพลังมาก