คำจำกัดความและการใช้อาร์เรย์ Java <br /> หากคุณต้องการบันทึกชุดข้อมูลประเภทเดียวกันคุณสามารถใช้อาร์เรย์ได้
คำจำกัดความของอาร์เรย์และการจัดสรรหน่วยความจำ
มีสองไวยากรณ์สำหรับการกำหนดอาร์เรย์ใน Java:
พิมพ์ arrayname []; ประเภท [] arrayname;
Type เป็นประเภทข้อมูลใด ๆ ใน Java รวมถึงประเภทพื้นฐานและประเภทการรวมกัน ตัวอย่างเช่น:
int demoarray []; int [] demoarray;
ไม่มีความแตกต่างระหว่างสองรูปแบบนี้และเอฟเฟกต์การใช้งานจะเหมือนกัน
ซึ่งแตกต่างจาก C และ C ++, Java ไม่ได้จัดสรรหน่วยความจำสำหรับองค์ประกอบอาร์เรย์เมื่อกำหนดอาร์เรย์ดังนั้นจึงไม่จำเป็นต้องระบุจำนวนองค์ประกอบอาร์เรย์นั่นคือความยาวของอาร์เรย์ ยิ่งไปกว่านั้นสำหรับอาร์เรย์ที่กำหนดไว้ข้างต้นมันไม่สามารถเข้าถึงองค์ประกอบใด ๆ ได้
arrayName = ประเภทใหม่ [arraysize];
โดยที่อาร์เรย์คือความยาวของอาร์เรย์และประเภทคือประเภทของอาร์เรย์ ชอบ:
DemoArray = ใหม่ int [3];
จัดสรรพื้นที่หน่วยความจำที่ครอบครองโดยจำนวนเต็ม 3 ครั้งให้กับอาร์เรย์จำนวนเต็ม
โดยปกติคุณสามารถจัดสรรพื้นที่ได้ในขณะที่กำหนดด้วยไวยากรณ์เป็น:
พิมพ์ arrayname [] = ประเภทใหม่ [arraysize];
ตัวอย่างเช่น:
int demoarray [] = new int [3];
การเริ่มต้นของอาร์เรย์
คุณสามารถเริ่มต้น (การเริ่มต้นแบบคงที่) ในขณะที่ประกาศอาร์เรย์หรือคุณสามารถเริ่มต้นได้หลังจากการประกาศ (การเริ่มต้นแบบไดนามิก) ตัวอย่างเช่น:
// การเริ่มต้นแบบคงที่ // ในขณะที่การเริ่มต้นแบบคงที่มันจะจัดสรรพื้นที่ให้กับองค์ประกอบอาร์เรย์และกำหนดค่า intarray [] = {1,2,3,4}; สตริงสตริง stringarray [] = {"wechatyuan", "http: // www .weixueyuan.net "," ภาษาการเขียนโปรแกรมทั้งหมดเป็นเสือกระดาษ "}; // การเริ่มต้นแบบไดนามิกลอยลอยตัว [] = ใหม่ลอย [3]; floatarray [0] = 1.0f; floatarray [1] = 132.63f; floatarray [2] = 100f;การอ้างอิงอาร์เรย์
อาเรย์สามารถอ้างอิงได้โดยตัวห้อย:
arrayname [ดัชนี];
ซึ่งแตกต่างจาก C และ C ++, Java ต้องดำเนินการตรวจสอบนอกขอบเขตขององค์ประกอบอาร์เรย์เพื่อให้แน่ใจว่าปลอดภัย
แต่ละอาร์เรย์มีแอตทริบิวต์ความยาวเพื่อระบุความยาวตัวอย่างเช่น intarray.length ระบุความยาวของอาร์เรย์ intarray
[ตัวอย่าง] เขียนชิ้นส่วนของรหัสที่ต้องการอินพุตของจำนวนเต็ม 5 ตัวและส่งผลรวมของพวกเขา
นำเข้า Java.util.*; การสาธิตระดับสาธารณะ {โมฆะคงที่สาธารณะ (สตริง [] args) {intarray [] = int ใหม่ [5]; ให้องค์ประกอบอาร์เรย์กำหนด System.out.print ("โปรดป้อน" + len + "จำนวนเต็มคั่นด้วยช่องว่าง:"); ) {intarray [i] = sc.nextint ();} // คำนวณผลรวมขององค์ประกอบอาร์เรย์สำหรับ (int i = 0; i <len; i ++) ("ผลรวมขององค์ประกอบอาร์เรย์ทั้งหมดคือ:" + ทั้งหมด); ผลการทำงาน:
โปรดป้อน 5 จำนวนเต็มคั่นด้วยช่องว่าง: 10 20 15 25 50
ผลรวมขององค์ประกอบอาร์เรย์ทั้งหมดคือ: 120
การสำรวจอาเรย์
ในการพัฒนาที่เกิดขึ้นจริงมักจำเป็นต้องสำรวจอาร์เรย์เพื่อให้ได้องค์ประกอบทุกอย่างในอาร์เรย์ วิธีที่ง่ายที่สุดในการคิดคือสำหรับลูปตัวอย่างเช่น:
int arraydemo [] = {1, 2, 4, 7, 9, 192, 100}; สำหรับ (int i = 0, len = arraydemo.length; i <len; i ++) {system.out.println (arraydemo [i ] + ",");}
ผลลัพธ์ผลลัพธ์:
1, 2, 4, 7, 9, 192, 100,
อย่างไรก็ตาม Java ให้ "เวอร์ชันที่ปรับปรุงแล้ว" สำหรับลูปซึ่งใช้โดยเฉพาะในการสำรวจอาร์เรย์โดยมีไวยากรณ์เป็น:
สำหรับ (arraytype varname: arrayName) {// บางรหัส}
ArrayType เป็นประเภทอาร์เรย์ (รวมถึงประเภทขององค์ประกอบอาร์เรย์);
แต่ละลูปเสร็จสิ้นค่าขององค์ประกอบถัดไปในอาร์เรย์จะได้รับและบันทึกลงในตัวแปร varname จนกว่าจะสิ้นสุดอาร์เรย์ นั่นคือค่าของ varname ในลูปแรกคือองค์ประกอบ 0 และลูปที่สองคือองค์ประกอบที่ 1 ... ตัวอย่างเช่น:
int arraydemo [] = {1, 2, 4, 7, 9, 192, 100}; สำหรับ (int x: arraydemo) {system.out.println (x + ",");}
ผลลัพธ์ผลลัพธ์เหมือนกับข้างต้น
รุ่นที่ได้รับการปรับปรุงนี้สำหรับลูปนี้เรียกว่า "foreach loop" ซึ่งเป็นรุ่นธรรมดาสำหรับคำสั่งลูปแบบง่าย ๆ foreach loops ทั้งหมดสามารถเขียนใหม่สำหรับลูป
อย่างไรก็ตามหากคุณต้องการใช้ดัชนีของอาร์เรย์การปรับปรุงสำหรับลูปไม่สามารถทำได้
อาร์เรย์สองมิติ
การประกาศการเริ่มต้นและการอ้างอิงของอาร์เรย์สองมิตินั้นคล้ายกับอาร์เรย์หนึ่งมิติ:
intarray [] [] = {{1,2}, {2,3}, {4,5}}; int a [] [] = new int [2] [3]; a [0] [0] = 12; a [0] [1] = 34; // ...... a [1] [2] = 93; ในภาษา Java เนื่องจากอาร์เรย์สองมิติถือเป็นอาร์เรย์อาร์เรย์พื้นที่อาร์เรย์ไม่ได้รับการจัดสรรอย่างต่อเนื่องดังนั้นขนาดของแต่ละมิติของอาร์เรย์สองมิติจึงไม่จำเป็นเหมือนกัน ตัวอย่างเช่น:
intarray [] [] = {{1,2}, {2,3}, {3,4,5}}; int a [] [] = new int [2] []; a [0] = ใหม่ int [3]; a [1] = int ใหม่ [5]; [ตัวอย่าง] คำนวณผลิตภัณฑ์ของเมทริกซ์สองตัวผ่านอาร์เรย์สองมิติ
การสาธิตระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// เมทริกซ์แรก (การเริ่มต้นแบบไดนามิกของอาเรย์สองมิติ) int a [] [] = ใหม่ int [2] [3]; เมทริกซ์ (เริ่มต้นแบบคงที่ 2d อาร์เรย์) int b [] [] = {{1,5,2,8}, {5,9,10, -3}, {2,7, -5, -18}}; // ผลลัพธ์เมทริกซ์ int c [] [] = int ใหม่ [2] [4]; j ++) a [i] [j] = (i+1) * (j+2); <4; j ++) {c [i] [j] = 0; [j];}} // ผลการชำระหนี้สำหรับ (int i = 0; i <2; i ++) {สำหรับ (int j = 0; j <4; j ++) system.out.printf ("%-5d" c [i] [j]); ผลการทำงาน:
25 65 14 -65 50 130 28 -130
คำอธิบายเล็กน้อย:
ข้างต้นเป็นอาร์เรย์แบบคงที่ เมื่อมีการประกาศอาร์เรย์แบบคงที่ความสามารถจะได้รับการแก้ไขและไม่สามารถเปลี่ยนแปลงได้ ดังนั้นเมื่อประกาศอาร์เรย์คุณต้องพิจารณาความสามารถสูงสุดของอาร์เรย์เพื่อป้องกันความสามารถไม่เพียงพอ
หากคุณต้องการเปลี่ยนความสามารถเมื่อเรียกใช้โปรแกรมคุณจะต้องใช้รายการอาร์เรย์ (ArrayList หรือที่เรียกว่าอาร์เรย์แบบไดนามิก) หรือเวกเตอร์ (เวกเตอร์)
มันเป็นเพราะข้อเสียของความสามารถคงที่ของอาร์เรย์คงที่ที่ไม่ได้ใช้บ่อยในการพัฒนาจริงและถูกแทนที่ด้วย arraylist หรือเวกเตอร์เนื่องจากในการพัฒนาจริงมักจะต้องเพิ่มหรือลบองค์ประกอบไปยังอาร์เรย์และกำลังการผลิตของมัน ไม่ใช่เรื่องง่ายที่จะประเมิน
Java String (สตริง)
บนพื้นผิวสตริงเป็นข้อมูลระหว่างคำพูดสองเท่าเช่น "Weixueyuan", "http://www.weixueyuan.net" ฯลฯ ใน Java คุณสามารถใช้วิธีการต่อไปนี้เพื่อกำหนดสตริง:
สตริงสตริง = "เนื้อหาสตริง";
ตัวอย่างเช่น:
string url = "http://www.weixueyuan.net"; String webname = "Wechatyuan";
สตริงสามารถต่อกันได้ผ่าน "+"
การสาธิตคลาสสาธารณะ {โมฆะคงที่หลัก (สตริง [] args) {string stuname = "Xiao Ming"; เกรดคือ " + stuscore; system.out.println (ข้อมูล);}} ผลการทำงาน:
อายุของ Xiao Ming คือ 17 และเกรดของเขาคือ 92.5
สตริงสตริงมีสิ่งหนึ่งที่เหมือนกันกับอาร์เรย์นั่นคือหลังจากที่พวกเขาเริ่มต้นความยาวของพวกเขายังคงไม่เปลี่ยนแปลงและเนื้อหาของพวกเขายังคงไม่เปลี่ยนแปลง หากคุณต้องการเปลี่ยนค่าสตริงใหม่จะถูกสร้างขึ้นดังที่แสดงด้านล่าง:
string str = "hello"; str += "โลก!";
การแสดงออกที่ได้รับมอบหมายนี้มีลักษณะเหมือนคนเดียวที่เรียบง่ายเพิ่มสตริง "World!" โดยตรงหลังจาก STR เพื่อสร้างสตริงสุดท้าย "Hello World!" หลักการปฏิบัติการมีดังนี้: โปรแกรมสร้างสตริง STR1 ก่อนและนำไปใช้กับชิ้นส่วนของพื้นที่ในหน่วยความจำ มันเป็นไปไม่ได้ที่จะผนวกสตริงใหม่ในเวลานี้เนื่องจากความยาวของสตริงได้รับการแก้ไขหลังจากเริ่มต้น หากคุณต้องการเปลี่ยนมันคุณสามารถยอมแพ้พื้นที่เดิมได้อีกครั้งสำหรับพื้นที่หน่วยความจำที่สามารถรองรับสตริง "Hello World!" แล้วใส่สตริง "Hello World!"
ในความเป็นจริงสตริงเป็นคลาสภายใต้แพ็คเกจ java.lang
stringname = สตริงใหม่ ("เนื้อหาสตริง");
ตัวอย่างเช่น:
string url = สตริงใหม่ (http://www.weixueyuan.net);
อย่างไรก็ตามเนื่องจากสตริงถูกใช้โดยเฉพาะอย่างยิ่ง Java จึงให้ไวยากรณ์ที่ง่ายขึ้น
อีกเหตุผลหนึ่งที่ใช้ไวยากรณ์ที่ง่ายขึ้นคือตามไวยากรณ์เชิงวัตถุมาตรฐานมีของเสียค่อนข้างใหญ่ในการใช้หน่วยความจำ ตัวอย่างเช่น String str = new String ("ABC");
การทำงานของสตริง
มีหลายวิธีในการใช้งานสตริงได้อย่างง่ายดาย
1) ความยาว () วิธีการ
ความยาว () ส่งคืนความยาวของสตริงตัวอย่างเช่น:
string str1 = "weixueyuan"; string str2 = "weixueyuan"; system.out.println ("ความยาวของ str1 คือ" + str1.length ()); system.out.println ("ความยาวของ St R2 คือ" + str2.length ());
ผลลัพธ์ผลลัพธ์:
ความยาวของ str1 คือ 3 ความยาวของ str2 คือ 10
จะเห็นได้ว่าความยาวของตัวละครแต่ละตัวคือ 1 ไม่ว่าจะเป็นตัวอักษรตัวเลขหรือตัวละครจีน
2) วิธี Charat ()
ฟังก์ชั่นของวิธี Charat () คือการได้รับอักขระที่ระบุในสตริงตามค่าดัชนี Java กำหนดว่าค่าดัชนีของอักขระแรกในสตริงคือ 0 ค่าดัชนีของอักขระที่สองคือ 1 และอื่น ๆ ตัวอย่างเช่น:
string str = "123456789"; system.out.println (str.charat (0) + "" + str.charat (5) + "" + str.charat (8));
ผลลัพธ์ผลลัพธ์:
1 6 9
3) มี () วิธีการ
เมธอด Contains () ใช้เพื่อตรวจสอบว่าสตริงมีสายย่อยหรือไม่เช่น:
string str = "weixueyuan"; system.out.println (str.contains ("หยวน"));
ผลลัพธ์ผลลัพธ์:
จริง
4) แทนที่ () วิธีการ
การเปลี่ยนสตริงใช้เพื่อแทนที่สตริงย่อยที่ระบุทั้งหมดในสตริงตัวอย่างเช่น:
String str1 = "URL ของ Weixueyuan คือ www.weixueyuan.net!"; String str2 = str1.replace ("weixueyuan", "weixueyuan"); system.out.println (str1); syste m.out.println (str2 );
ผลลัพธ์ผลลัพธ์:
URL ของ Weixueyuan คือ www.weixueyuan.net! URL ของ Weixueyuan คือ www.weixueyuan.net!
หมายเหตุ: วิธีการแทนที่ () ไม่ได้เปลี่ยนสตริงต้นฉบับ แต่สร้างสตริงใหม่
5) วิธีแยก ()
ใช้สตริงที่ระบุเป็นตัวคั่นเพื่อแยกสตริงปัจจุบัน
นำเข้า java.util.*; การสาธิตคลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string str = "wei_xue_yuan_is_good"; อาร์เรย์. toString (strarr));}}
ผลการทำงาน:
[Wei, Xue, Yuan, Is, Good]
ข้างต้นแสดงเฉพาะวิธีการที่ใช้กันทั่วไปของวัตถุสตริง