โพสต์โดยผู้โพสต์ต้นฉบับ: 17-06-2008 15:26:20 น
แอลเจบีเอส
1. รายการข้อดี 10 ประการของภาษา JAVA
a: ฟรี, โอเพ่นซอร์ส, ข้ามแพลตฟอร์ม (เป็นอิสระจากแพลตฟอร์ม), ใช้งานง่าย, ฟังก์ชั่นครบถ้วน, เชิงวัตถุ, แข็งแกร่ง, มัลติเธรด, มีโครงสร้างเป็นกลาง, แพลตฟอร์มที่สมบูรณ์สำหรับแอปพลิเคชันระดับองค์กร, แอปพลิเคชันไร้สาย
2. แสดงรายการคำศัพท์การเขียนโปรแกรมเชิงวัตถุ 10 คำใน JAVA
a: แพ็คเกจ, คลาส, ส่วนต่อประสาน, วัตถุ, คุณลักษณะ, วิธีการ, ตัวสร้าง, การสืบทอด, การห่อหุ้ม, ความหลากหลาย, สิ่งที่เป็นนามธรรม, กระบวนทัศน์
3. รายการ 6 แพ็คเกจที่ใช้กันทั่วไปใน JAVA
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4. ฟังก์ชันและคุณลักษณะของตัวระบุใน JAVA คืออะไร ฟังก์ชัน: ตัวระบุใช้เพื่อตั้งชื่อตัวแปร คลาส และลักษณะเฉพาะ: นอกจากการขึ้นต้นด้วยตัวอักษรแล้ว ให้ขีดเส้นใต้อักขระ "_" และ "$" แล้วยังสามารถตามหลังด้วย ตัวอักษร ขีดล่าง "_" และ "$" อักขระหรือตัวเลข
Java คำนึงถึงขนาดตัวพิมพ์ และตัวระบุก็ไม่มีข้อยกเว้น
5.คุณสมบัติของคำสำคัญใน JAVA คืออะไร? ระบุคำหลักอย่างน้อย 20 คำ
คำบางคำใน Java ที่ให้ความหมายเฉพาะและใช้เพื่อวัตถุประสงค์พิเศษเรียกว่าคำสำคัญ
คีย์เวิร์ด Java ทั้งหมดเป็นตัวพิมพ์เล็ก TURE, FALSE, NULL ฯลฯ ไม่ใช่คีย์เวิร์ด Java
goto และ const แม้ว่าจะไม่เคยใช้ แต่ก็ถูกสงวนไว้เป็นคีย์เวิร์ด Java
มีคำหลัก Java ทั้งหมด 51 คำใน •
abstract assert boolean แบ่งไบต์ต่อไป
case catch char คลาส const double
ค่าเริ่มต้นจะขยายส่วนอื่นเป็นโฟลตสุดท้าย
ใช้เวลานานหากดำเนินการนำเข้า
อินสแตนซ์ null ใหม่ของอินเทอร์เฟซ int
แพคเกจส่วนตัวที่ได้รับการคุ้มครองสาธารณะคืนสั้น
สวิตช์ซูเปอร์เข้มงวด strictfp แบบคงที่ซิงโครไนซ์สิ่งนี้
ในขณะที่การโยนเป็นโมฆะเป็นการพยายามชั่วคราว
ระเหย
6.ประเภทข้อมูลใน JAVA ถูกจำแนกอย่างไร?
สามารถแบ่งออกเป็นประเภทข้อมูลธรรมดาและประเภทข้อมูลอ้างอิง:
ประเภทข้อมูลอย่างง่าย: ประเภทตัวเลข (ไบต์, สั้น, int, ยาว, ลอยคู่), ประเภทอักขระ (อักขระ), ประเภทบูลีน (บูลีน);
ประเภทข้อมูลอ้างอิง: คลาส, อินเตอร์เฟส, อาร์เรย์
7. การจำแนกประเภทและตัวอย่างตัวดำเนินการใน JAVA
• ตัวคั่น:,,;,[],()
• ตัวดำเนินการทางคณิตศาสตร์: +, ―, *, /, %, ++, ――
• ตัวดำเนินการเชิงสัมพันธ์: >, <, >=, <=, ==, !=
• ตัวดำเนินการตรรกะบูลีน: !, &, |, ^, &&, ||
• ตัวดำเนินการบิต: &, |, ^, ~, >>, < <, >>>
• ตัวดำเนินการกำหนด: = ตัวดำเนินการกำหนดเพิ่มเติม: +=, ―=, *=, /=
• ตัวดำเนินการต่อสตริง: +
• ตัวดำเนินการรูปร่าง: ()
8.ฟังก์ชั่นและการใช้งานซุปเปอร์และคีย์เวิร์ดนี้
• ใช้ super ในคลาส Java เพื่ออ้างถึงส่วนประกอบของคลาสพาเรนต์
– สามารถใช้เพื่อเข้าถึงคุณลักษณะที่กำหนดไว้ขั้นสูงในคลาสพาเรนต์
– สามารถใช้เพื่อเรียกเมธอดสมาชิก super ที่กำหนดไว้ในคลาสพาเรนต์
– สามารถใช้เพื่อเรียกตัวสร้างคลาส super super ในตัวสร้างคลาสย่อย
– ความสามารถในการตรวจสอบย้อนกลับไม่ได้จำกัดอยู่เพียง super ระดับพาเรนต์โดยตรง
เพื่อที่จะแก้ปัญหาความขัดแย้งในการตั้งชื่อและปัญหาความไม่แน่นอนของตัวแปร คำสำคัญ "นี่" จึงถูกนำมาใช้เพื่อแสดงถึงวัตถุปัจจุบันของวิธีการที่ตัวแปรนั้นอยู่ ชวา
– Constructor หมายถึงวัตถุใหม่ที่สร้างขึ้นโดย Constructor
– วิธีการอ้างอิงถึงวัตถุที่เรียกวิธีการ
• การใช้คำหลักนี้
– อ้างอิงตัวแปรอินสแตนซ์และวิธีการของคลาสในเมธอดหรือตัวสร้างของคลาสเอง
– ส่งผ่านวัตถุปัจจุบันเป็นพารามิเตอร์ไปยังวิธีการหรือตัวสร้างอื่น
– ใช้เพื่อเรียกตัวสร้างที่โอเวอร์โหลดอื่น ๆ
9. นิพจน์ใน JAVA คืออะไร? มันทำอะไร?
• นิพจน์คือการรวมกันของตัวดำเนินการและตัวถูกดำเนินการ และเป็นองค์ประกอบสำคัญของภาษาการเขียนโปรแกรมใดๆ
• นิพจน์ช่วยให้โปรแกรมเมอร์ทำการคำนวณทางคณิตศาสตร์ การเปรียบเทียบค่า การดำเนินการเชิงตรรกะ และการจัดการวัตถุใน Java
• ตัวอย่างสำนวนบางส่วน:
–เอ็กซ์
– เอ็กซ์+10
– ย=x+10
–อาร์ร์[10]
– Student.geName()
10. สร้างตารางแสดงรายการตัวดัดแปลงทั้งหมดใน JAVA และขอบเขตการใช้งาน (สามารถปรับเปลี่ยนตัวสร้าง คุณสมบัติ บล็อกอิสระ ฯลฯ)
ตัวสร้างเมธอดคลาสแอ็ตทริบิวต์คลาสภายในบล็อกฟรี
สาธารณะ YYY Y Y
ป้องกันแล้ว YY Y Y
(ค่าเริ่มต้น) ปปปปปป
ส่วนตัว YY Y Y
สุดท้าย YY Y Y
นามธรรม ใช่ ใช่
คงที่ ใช่ ใช่
11. เขียนวิธีการพิมพ์ตารางสูตรคูณโดยใช้ for loop
-
*A for loop จะพิมพ์ตารางสูตรคูณ
-
publicvoid nineNineMultiTable()
-
สำหรับ (int i = 1,j = 1; j <= 9; i++) {
System.out.print(i+"*"+j+"="+i*j+" ");
ถ้า(i==j)
-
ฉัน=0;
เจ++;
System.out.println();
-
-
-
12. กำหนดวัตถุ java.util.Date วิธีแปลงเป็นสตริงในรูปแบบ "2007-3-22 20:23:22"
-
*แปลงวันที่ให้เป็นสตริงในรูปแบบคงที่
*@paramdate
*@returnstr
-
สตริงสาธารณะ dateToStr (วันที่ java.util.Date)
-
SimpleDateFormat sdf = SimpleDateFormat ใหม่ ("yyyy-MM-dd HH:mm:ss");
สตริง str = sdf.format (วันที่);
กลับ STR;
-
13. เขียนวิธีการที่สามารถระบุได้ว่าจำนวนเต็มใด ๆ ที่เป็นจำนวนเฉพาะ
-
* พิจารณาว่าจำนวนเต็มใดๆ เป็นจำนวนเฉพาะหรือไม่
*@พรอมน
*@returnboolean
-
publicboolean isPrimes (int n)
-
สำหรับ (int i = 2; i <= Math.sqrt(n); i++) {
ถ้า(n%i==0)
-
กลับเท็จ;
-
-
ผลตอบแทนจริง;
-
14. เขียนวิธีการป้อนจำนวนเต็มใดๆ และส่งกลับค่าแฟกทอเรียล
-
*รับแฟกทอเรียลของจำนวนเต็มใดๆ
*@พรอมน
*@returnn !
-
การประชาสัมพันธ์แฟกทอเรียล (int n)
-
//เรียกซ้ำ
ถ้า(n==1)
-
กลับ 1;
-
ส่งคืน n*แฟกทอเรียล(n-1);
//ไม่เรียกซ้ำ
// int หลาย = 1;
// สำหรับ (int i = 2; i <= n; i++) {
// หลาย*=i;
-
// ส่งคืนหลาย;
-
15. เขียนวิธีการที่ใช้การค้นหาแบบไบนารี่เพื่อตรวจสอบว่ามีจำนวนเต็มอยู่ในอาร์เรย์จำนวนเต็มหรือไม่ ถ้ามี ให้ส่งคืนตำแหน่งดัชนีในอาร์เรย์ หากไม่มี ให้ส่งคืน -1
-
* การค้นหาแบบไบนารีสำหรับตำแหน่งของจำนวนเต็มเฉพาะในอาร์เรย์จำนวนเต็ม (เรียกซ้ำ)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
-
publicint binarySearch (ชุดข้อมูล int [], ข้อมูล int, int beginningIndex, int endIndex)
-
int midIndex = (beginIndex+endIndex)/2;
if(ข้อมูล <ชุดข้อมูล[beginIndex]||ข้อมูล>ชุดข้อมูล[endIndex]||beginIndex>endIndex)ส่งคืน -1;
ถ้า (ข้อมูล <ชุดข้อมูล [midIndex])
-
ส่งคืน binarySearch (ชุดข้อมูล, ข้อมูล, startIndex, midIndex-1);
}elseif(ข้อมูล>ชุดข้อมูล[midIndex])
-
ส่งคืน binarySearch (ชุดข้อมูล, ข้อมูล, midIndex + 1, endIndex);
}อื่น
-
กลับ midIndex;
-
-
-
*การค้นหาแบบไบนารีสำหรับตำแหน่งของจำนวนเต็มเฉพาะในอาร์เรย์จำนวนเต็ม (ไม่เรียกซ้ำ)
*@paramdataset
*@paramdata
*@returnindex
-
publicint binarySearch (ชุดข้อมูล int [], ข้อมูล int)
-
int startIndex = 0;
int endIndex = ชุดข้อมูล ความยาว - 1;
int midIndex = -1;
if(ข้อมูล <ชุดข้อมูล[beginIndex]||ข้อมูล>ชุดข้อมูล[endIndex]||beginIndex>endIndex)ส่งคืน -1;
ในขณะที่ (beginIndex <= endIndex) {
midIndex = (beginIndex+endIndex)/2;
ถ้า (ข้อมูล <ชุดข้อมูล [midIndex]) {
endIndex = มิดดัชนี-1;
} elseif(ข้อมูล>ชุดข้อมูล[midIndex]) {
BeginIndex = ดัชนีกลาง+1;
}อื่น
-
กลับ midIndex;
-
-
กลับ -1;
-
16. ตัวอย่างของผู้เพาะพันธุ์ที่ให้อาหารแก่สัตว์ สะท้อนถึงการคิดเชิงวัตถุใน JAVA และประโยชน์ของอินเทอร์เฟซ (คลาสนามธรรม)
แพ็คเกจ com.softeem.demo;
-
*@authorleno
* ส่วนต่อประสานกับสัตว์
-
อินเตอร์เฟซสัตว์
-
ของสาธารณะกิน(อาหารอาหาร);
-
-
*@authorleno
*ประเภทสัตว์: แมว
-
คลาส Cat ใช้ Animal
-
ของสาธารณะกิน(อาหารอาหาร)
-
System.out.println("ลูกแมวกิน"+food.getName());
-
-
-
*@authorleno
*ประเภทสัตว์: สุนัข
-
คลาสสุนัขดำเนินการสัตว์
-
ของสาธารณะกิน(อาหารอาหาร)
-
System.out.println("ลูกสุนัขเคี้ยว"+food.getName());
-
-
-
*@authorleno
*วิชานามธรรมอาหาร
-
บทคัดย่อคลาสอาหาร
-
ชื่อสตริงที่ได้รับการป้องกัน
สตริงสาธารณะ getName() {
ชื่อผู้ส่งคืน;
-
publicvoid setName (ชื่อสตริง) {
this.name = ชื่อ;
-
-
-
*@authorleno
*กลุ่มอาหาร: ปลา
-
คลาสปลาขยายอาหาร
-
ปลาสาธารณะ (ชื่อสตริง) {
this.name = ชื่อ;
-
-
-
*@authorleno
*กลุ่มอาหาร: กระดูก
-
คลาสโบนขยายอาหาร
-
กระดูกสาธารณะ (ชื่อสตริง) {
this.name = ชื่อ;
-
-
-
*@authorleno
*หมวดพ่อพันธุ์แม่พันธุ์
-
-
คลาสฟีดเดอร์
-
-
*ผู้เพาะพันธุ์ให้อาหารบางชนิดแก่สัตว์บางชนิด
*@paramanimal
*@paramfood
-
อาหารสาธารณะ (สัตว์ อาหารสัตว์)
-
สัตว์กิน(อาหาร);
-
-
-
*@authorleno
*พ่อพันธุ์แม่พันธุ์ทดสอบการให้อาหารสัตว์
-
TestFeeder คลาสสาธารณะ {
publicstaticvoid หลัก (สตริง [] args) {
ตัวป้อน ตัวป้อน=ตัวป้อนใหม่();
สัตว์ สัตว์=สุนัขตัวใหม่();
อาหาร อาหาร=กระดูกใหม่("กระดูกเนื้อ");
feeder.feed(สัตว์,อาหาร); //ป้อนเนื้อและกระดูกให้สุนัข
สัตว์ = แมวใหม่ ();
อาหาร = ปลาใหม่ ("ปลา");
feeder.feed(สัตว์,อาหาร); //ให้อาหารปลากับแมว
-
-
18. สร้างคลาสโหมดเดียวและโหลดไฟล์คุณสมบัติเพียงครั้งเดียว
แพ็คเกจ com.softeem.demo;
นำเข้า java.io.FileInputStream;
นำเข้า java.io.FileNotFoundException;
นำเข้า java.io.IOException;
นำเข้า java.io.InputStream;
นำเข้า java.util.Properties;
-
*@authorleno
*โหมดเดี่ยว ช่วยให้มั่นใจว่าไฟล์คุณสมบัติการกำหนดค่าจะถูกโหลดเพียงครั้งเดียวตลอดทั้งแอปพลิเคชัน
-
คลาสสาธารณะซิงเกิลตัน {
อินสแตนซ์ซิงเกิลตันส่วนตัว
สตริงส่วนตัวสุดท้าย CONFIG_FILE_PATH = "E:\config.properties";
การกำหนดค่าคุณสมบัติส่วนตัว;
ซิงเกิลตันส่วนตัว ()
-
config = คุณสมบัติใหม่ ();
InputStream คือ;
พยายาม {
คือ = FileInputStream ใหม่ (CONFIG_FILE_PATH);
config.load(เป็น);
คือ.ปิด();
} จับ (FileNotFoundException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
สาธารณะ Singleton getInstance ()
-
ถ้า (อินสแตนซ์ == null)
-
อินสแตนซ์ = ซิงเกิลตันใหม่ ();
-
ตัวอย่างการส่งคืน;
-
คุณสมบัติสาธารณะ getConfig () {
กลับการกำหนดค่า;
-
publicvoid setConfig (กำหนดค่าคุณสมบัติ) {
this.config = กำหนดค่า;
-
-
เจ2เอสอี
19. คัดลอกไดเร็กทอรี (ไฟล์) ไปยังเส้นทางที่ระบุ
-
*คัดลอกไดเรกทอรีหรือไฟล์ไปยังเส้นทางที่ระบุ
*@paramsource
*@paramtarget
-
publicvoid copy (แหล่งไฟล์, ไฟล์เป้าหมาย)
-
ไฟล์ tarpath = ไฟล์ใหม่ (เป้าหมาย, source.getName());
ถ้า(source.isDirectory())
-
tarpath.mkdir();
ไฟล์[] dir = source.listFiles();
สำหรับ (int i = 0; i < dir.length; i++) {
คัดลอก (dir [i], tarpath);
-
}อื่น
-
พยายาม {
InputStream คือ = FileInputStream ใหม่ (ที่มา);
OutputStream os = FileOutputStream ใหม่ (tarpath);
ไบต์ [] buf = ไบต์ใหม่ [1024];
อินท์เลน = 0;
ในขณะที่ ((len = is.read (buf))!=-1)
-
os.write(buf,0,len);
-
คือ.ปิด();
os.ปิด();
} จับ (FileNotFoundException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
-
20. ตัวอย่างปัญหาการถอนเงินผ่านธนาคารโดยใช้มัลติเธรดใน JAVA
packagecom.softeem.demo;
-
*@authorleno
*ประเภทบัญชี
*มียอดเงินคงเหลือตามค่าเริ่มต้นและคุณสามารถถอนเงินได้
-
บัญชีคลาส {
ยอดคงเหลือส่วนตัว = 1,000;
สาธารณะ getBalance () {
ความสมดุลของผลตอบแทน;
-
publicvoid setBalance (ยอดลอยตัว) {
this.balance = สมดุล;
-
-
*วิธีการถอนเงินจำเป็นต้องซิงโครไนซ์
*@parammoney
-
การซิงโครไนซ์สาธารณะการถอนเป็นโมฆะ(เงินลอยตัว)
-
ถ้า(สมดุล>=เงิน)
-
System.out.println("เอาไป"+เงิน+"หยวน!");
พยายาม {
เธรด.สลีป(1,000);
} จับ (InterruptedException e) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
ยอดคงเหลือ-=เงิน;
-
อื่น
-
System.out.println("ขออภัย ยอดคงเหลือไม่เพียงพอ!");
-
-
-
-
*@authorleno
*บัตรธนาคาร
-
คลาส TestAccount1 ขยายเธรด {
บัญชีบัญชีส่วนตัว
TestAccount1 สาธารณะ (บัญชีบัญชี) {
this.account = บัญชี;
-
@แทนที่
การวิ่งสาธารณะ () {
บัญชีการถอนเงิน (800);
System.out.println("ยอดคงเหลือคือ:"+account.getBalance()+"หยวน!");
-
-
-
*@authorleno
*สมุดบัญชีเงินฝาก
-
คลาส TestAccount2 ขยายเธรด {
บัญชีบัญชีส่วนตัว
TestAccount2 สาธารณะ (บัญชีบัญชี) {
this.account = บัญชี;
-
@แทนที่
การวิ่งสาธารณะ () {
บัญชีการถอนเงิน (700);
System.out.println("ยอดคงเหลือคือ:"+account.getBalance()+"หยวน!");
-
-
การทดสอบในชั้นเรียนสาธารณะ
-
publicstaticvoid หลัก (สตริง [] args) {
บัญชี บัญชี = บัญชีใหม่();
TestAccount1 testAccount1 = TestAccount1 ใหม่ (บัญชี);
testAccount1.start();
TestAccount2 testAccount2 = TestAccount2 ใหม่ (บัญชี);
testAccount2.start();
-
-
21. ใช้มัลติเธรดใน JAVA เพื่อยกตัวอย่างปัญหาการขายตั๋วสถานีรถไฟ
แพ็คเกจ com.softeem.demo;
-
*@authorleno
*จำหน่ายบัตร
-
คลาส SaleTicket ใช้งาน Runnable {
บัตรเข้า = 100;
การวิ่งสาธารณะ () {
ในขณะที่ (ตั๋ว > 0) {
ขาย();
//หรือนำไปปฏิบัติเช่นนี้
// ซิงโครไนซ์ (สิ่งนี้) {
// ถ้า (ตั๋ว > 0) {
// System.out.println(Thread.currentThread().getName() + "ขายอันแรก"
// + (100 - ตั๋ว + 1) + "ตั๋ว");
// ตั๋ว--;
-
-
-
-
การขายสาธารณะซิงโครไนซ์เป็นโมฆะ () {
ถ้า (ตั๋ว > 0) {
System.out.println(Thread.currentThread().getName() + "ขายก่อน"
+ (100 - ตั๋ว + 1) + "ตั๋ว");
ตั๋ว--;
-
-
-
TestSaleTicket คลาสสาธารณะ {
publicstaticvoid หลัก (สตริง [] args) {
SaleTicket st = ใหม่ SaleTicket();
กระทู้ใหม่(st, "หน้าต่างหมายเลข 1").start();
เธรดใหม่(st, "หน้าต่างหมายเลข 2").start();
กระทู้ใหม่(st, "หน้าต่างหมายเลข 3").start();
กระทู้ใหม่(st, "หน้าต่างหมายเลข 4").start();
-
-
22. ตัวอย่างปัญหาของผู้ผลิตและผู้บริโภคโดยใช้มัลติเธรดใน JAVA
แพ็คเกจ com.softeem.demo;
คลาส Producer ใช้งาน Runnable
-
สแต็ก SyncStack ส่วนตัว
ผู้ผลิตสาธารณะ (สแต็ก SyncStack) {
this.stack = สแต็ค;
-
การวิ่งสาธารณะ () {
สำหรับ (int i = 0; i < stack.getProducts().length; i++) {
ผลิตภัณฑ์สตริง = "ผลิตภัณฑ์"+i;
stack.push(สินค้า);
System.out.println("ผลิต: "+ผลิตภัณฑ์);
พยายาม
-
เธรด.สลีป(200);
-
จับ (InterruptedException e)
-
e.printStackTrace();
-
-
-
-
คลาส Consumer ใช้งาน Runnable
-
สแต็ก SyncStack ส่วนตัว
ผู้บริโภคสาธารณะ (สแต็ก SyncStack) {
this.stack = สแต็ค;
-
การวิ่งสาธารณะ () {
สำหรับ (int i=0;i <stack.getProducts().length;i++)
-
ผลิตภัณฑ์สตริง =stack.pop();
System.out.println("ใช้แล้ว: "+ผลิตภัณฑ์);
พยายาม
-
เธรด.สลีป(1,000);
-
จับ (InterruptedException e)
-
e.printStackTrace();
-
-
-
-
คลาส SyncStack
-
ผลิตภัณฑ์สตริงส่วนตัว [] = สตริงใหม่ [10];
อินทินดัชนีส่วนตัว;
publicsynchronizedvoid push (ผลิตภัณฑ์สตริง)
-
ถ้า(index==product.length())
-
พยายาม {
รอ();
} จับ (InterruptedException e) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
แจ้ง();
สินค้า[ดัชนี]=สินค้า;
ดัชนี++;
-
ป๊อปสตริงสาธารณะซิงโครไนซ์ ()
-
ถ้า(ดัชนี==0)
-
พยายาม {
รอ();
} จับ (InterruptedException e) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
แจ้ง();
ดัชนี--;
ผลิตภัณฑ์สตริง = ผลิตภัณฑ์ [ดัชนี];
คืนสินค้า;
-
สตริงสาธารณะ [] getProducts () {
สินค้าคืน;
-
-
TestProducerConsumer ระดับสาธารณะ {
publicstaticvoid หลัก (สตริง [] args) {
SyncStack stack=ใหม่ SyncStack();
ผู้ผลิต p=ผู้ผลิตใหม่ (สแต็ก);
ผู้บริโภค c = ผู้บริโภคใหม่ (สแต็ก);
เธรดใหม่ (p). เริ่มต้น ();
เธรดใหม่ (c). เริ่มต้น ();
-
-
23. การเขียนโปรแกรมเพื่อรับรู้การส่งวัตถุแบบอนุกรม (sno, sname) บนเครือข่าย
แพ็คเกจ com.softeem.demo;
นำเข้า java.io.IOException;
นำเข้า java.io.ObjectInputStream;
นำเข้า java.io.ObjectOutputStream;
นำเข้า java.io.Serializable;
นำเข้า java.net.ServerSocket;
นำเข้า java.net.Socket;
นักเรียนชั้นดำเนินการ Serializable {
sno ส่วนตัว;
ชื่อสตริงส่วนตัว
นักเรียนสาธารณะ (int sno, ชื่อสตริง) {
this.sno = sno;
this.sname = ชื่อ;
-
สาธารณะ int getSno() {
กลับเสียงกรน;
-
โมฆะสาธารณะ setSno (int sno) {
this.sno = sno;
-
สตริงสาธารณะ getSname() {
กลับชื่อ;
-
setSname เป็นโมฆะสาธารณะ (ชื่อสตริง) {
this.sname = ชื่อ;
-
@แทนที่
สตริงสาธารณะ toString() {
กลับ "หมายเลขนักเรียน:" + sno + ";ชื่อ:" + sname;
-
-
คลาส MyClient ขยายเธรด {
@แทนที่
โมฆะสาธารณะวิ่ง () {
พยายาม {
ซ็อกเก็ต s = ซ็อกเก็ตใหม่ ("localhost", 9999);
ObjectInputStream ois = ObjectInputStream ใหม่ (s.getInputStream());
นักเรียน stu = (นักเรียน) ois.readObject();
System.out.println("โปรแกรมไคลเอนต์ได้รับวัตถุนักเรียนที่ถ่ายโอนจากโปรแกรมเซิร์ฟเวอร์ >> " + stu);
ois.ปิด();
s.ปิด();
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
} จับ (ClassNotFoundException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
-
คลาส MyServer ขยายเธรด {
@แทนที่
โมฆะสาธารณะวิ่ง () {
พยายาม {
ServerSocket ss = ServerSocket ใหม่ (9999);
ซ็อกเก็ต s = ss.accept();
ObjectOutputStream ops = ObjectOutputStream ใหม่ (s.getOutputStream());
Student stu = นักเรียนใหม่ (1, "Zhao Benshan");
ops.writeObject(สตู);
ops.ปิด();
s.ปิด();
ss.ปิด();
} จับ (IOException จ) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
-
-
TestTransfer ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
ใหม่ MyServer().start();
ใหม่ MyClient().start();
-
-
เจดีบีซี
24. ใช้องค์ประกอบ dom4j เพื่อแยกวิเคราะห์ไฟล์รูปแบบ XML ต่อไปนี้:
<?xml version="1.0" encoding="UTF-8"?>
<เครื่องกำเนิดไฟฟ้า>
<ชื่อตาราง = "เข้าสู่ระบบ" การดำเนินงาน = "1">
<ชื่อคอลัมน์="ชื่อผู้ใช้" handle="0">aaa </คอลัมน์>
<ชื่อคอลัมน์="รหัสผ่าน" handle="0">123 </คอลัมน์>
</ตาราง>
<ชื่อตาราง = "เข้าสู่ระบบ" การดำเนินงาน = "2">
<ชื่อคอลัมน์="id" handle="1">1 </คอลัมน์>
<column name="username" handle="0">bbb </column>
<column name="password" handle="0">444 </column>
</ตาราง>
<ชื่อตาราง = "เข้าสู่ระบบ" การดำเนินงาน = "3">
<ชื่อคอลัมน์="id" handle="1">4 </คอลัมน์>
</ตาราง>
</เครื่องกำเนิด>
กฎ: <table>การดำเนินการ 1 แทรกตาราง, อัปเดตตาราง 2, ลบตาราง 3
<column>handle 1 ตารางถูกใช้เป็นเงื่อนไข, 0 ตารางถูกใช้เป็นฟิลด์การดำเนินการ
ความต้องการ: สร้างคำสั่ง SQL สามคำสั่งตามกฎ! (นั่นคือ สร้างวิธีการแยกวิเคราะห์ไฟล์ xml เพื่อสร้างสตริงที่มีคำสั่ง SQL สามคำสั่ง)
-
*แยกวิเคราะห์ไฟล์ XML เพื่อสร้างสตริงที่มีคำสั่ง SQL ที่ปฏิบัติการได้
*@paramxmlFileName
*@returnSQL
-
สาธารณะสตริง parseXmltoSQL (สตริง xmlFileName) {
StringBuffer sbsql = StringBuffer ใหม่ ();
เครื่องอ่าน SAXReader = SAXReader ใหม่ ();
พยายาม {
เอกสารเอกสาร = reader.read (ไฟล์ใหม่ (xmlFileName));
องค์ประกอบองค์ประกอบ = document.getRootElement();
ตัววนซ้ำ it = element.elementIterator("table");
ในขณะที่ (it.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it.next();
// รับการดำเนินการบนโต๊ะ
สตริงโอเปร่า = element.attributeValue ("การดำเนินการ");
//รับชื่อตาราง
สตริง tableName = element.attributeValue("ชื่อ");
ถ้า ("1".เท่ากับ (ตัวดำเนินการ)) {
sbsql.append("insert into ").append(ชื่อตาราง);
Iterator it2 = element.elementIterator("คอลัมน์");
สตริง columnName1 = null;
สตริง columnValue1 = null;
สตริง columnName2 = null;
สตริง columnValue2 = null;
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName1 = element.attributeValue("ชื่อ");
columnValue1 = องค์ประกอบ.getText();
-
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName2 = element.attributeValue("ชื่อ");
columnValue2 = องค์ประกอบ.getText();
-
sbsql.append("("+columnName1+","+columnName2+")"+" ค่า('"+columnValue1+"','"+columnValue2+"')n");
} elseif ("2".เท่ากับ(ตัวดำเนินการ)) {
sbsql.append("อัพเดต ").append(ชื่อตาราง);
Iterator it2 = element.elementIterator("คอลัมน์");
สตริง columnName1 = null;
สตริง columnValue1 = null;
สตริง columnName2 = null;
สตริง columnValue2 = null;
สตริง columnName3 = null;
สตริง columnValue3 = null;
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName1 = element.attributeValue("ชื่อ");
columnValue1 = องค์ประกอบ.getText();
-
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName2 = element.attributeValue("ชื่อ");
columnValue2 = องค์ประกอบ.getText();
-
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName3 = element.attributeValue("ชื่อ");
columnValue3 = องค์ประกอบ.getText();
-
sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' โดยที่ "+columnName1+"="+columnValue1+"n");
}elseif ("3".เท่ากับ(ตัวดำเนินการ)) {
sbsql.append("ลบจาก ").append(ชื่อตาราง);
Iterator it2 = element.elementIterator("คอลัมน์");
สตริง columnName1 = null;
สตริง columnValue1 = null;
ถ้า (it2.hasNext()) {
องค์ประกอบ = (องค์ประกอบ) it2.next();
columnName1 = element.attributeValue("ชื่อ");
columnValue1 = องค์ประกอบ.getText();
-
sbsql.append(" โดยที่ "+columnName1+"="+columnValue1);
-
-
} จับ (DocumentException e) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
-
กลับ sbsql.toString();
-
lJSP/SERVLET
25. เขียนอ็อบเจ็กต์บิวท์อินของ JSP และอธิบายฟังก์ชันของอ็อบเจ็กต์เหล่านั้น
request:request แสดงถึงวัตถุ HttpServletRequest ประกอบด้วยข้อมูลเกี่ยวกับคำขอของเบราว์เซอร์และมีวิธีการที่เป็นประโยชน์หลายประการในการรับคุกกี้และข้อมูลส่วนหัว response:response แสดงถึงอ็อบเจ็กต์ HttpServletResponse และมีหลายวิธีสำหรับการตั้งค่าการตอบกลับที่ส่งกลับไปยังเบราว์เซอร์ (เช่น คุกกี้ ข้อมูลส่วนหัว ฯลฯ) out:out object เป็นอินสแตนซ์ของ javax.jsp.JspWriter และจัดเตรียมเมธอดต่าง ๆ ที่คุณ สามารถใช้ส่งออกกลับไปยังเบราว์เซอร์ได้ pageContext: pageContext แสดงถึงอ็อบเจ็กต์ javax.servlet.jsp.PageContext เป็น API ที่ใช้อำนวยความสะดวกในการเข้าถึงขอบเขตต่างๆ ของเนมสเปซและอ็อบเจ็กต์ที่เกี่ยวข้องกับเซิร์ฟเล็ต และรวมวิธีการของฟังก์ชันทั่วไปที่เกี่ยวข้องกับเซิร์ฟเล็ต session:session แสดงถึงวัตถุ javax.servlet.http.HttpSession ที่ร้องขอ เซสชันสามารถจัดเก็บข้อมูลสถานะผู้ใช้ application:aplicaton แสดงถึงวัตถุ javax.servle.ServletContext ซึ่งช่วยในการค้นหาข้อมูลเกี่ยวกับเอ็นจิ้นเซิร์ฟเล็ตและสภาพแวดล้อมเซิร์ฟเล็ต config:config แสดงถึงอ็อบเจ็กต์ javax.servlet.ServletConfig อ็อบเจ็กต์นี้ใช้เพื่อเข้าถึงพารามิเตอร์การเริ่มต้นของอินสแตนซ์เซิร์ฟเล็ต page:page แสดงถึงอินสแตนซ์เซิร์ฟเล็ตที่สร้างจากหน้านี้
ข้อยกเว้น: วัตถุข้อยกเว้นเป็นวัตถุข้อยกเว้น เมื่อมีข้อยกเว้นเกิดขึ้นระหว่างการทำงานของเพจ วัตถุนี้จะถูกสร้างขึ้น หากเพจ JSP ต้องการใช้อ็อบเจ็กต์นี้ จะต้องตั้งค่า isErrorPage ให้เป็นจริง ไม่เช่นนั้นจะไม่สามารถคอมไพล์ได้ จริงๆ แล้วมันเป็นคู่ของ java.lang.Throwable