Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例_第1頁
Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例_第2頁
Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例_第3頁
Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例_第4頁
Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java編程基礎(chǔ)教程及實(shí)戰(zhàn)案例Java作為一種面向?qū)ο蟮木幊陶Z言,自1995年誕生以來,憑借其跨平臺(tái)、健壯性、安全性等特性,在軟件開發(fā)領(lǐng)域占據(jù)重要地位。本教程結(jié)合基礎(chǔ)理論與實(shí)戰(zhàn)案例,系統(tǒng)介紹Java編程的核心知識(shí),幫助讀者建立扎實(shí)的編程能力。內(nèi)容涵蓋Java環(huán)境搭建、基礎(chǔ)語法、面向?qū)ο缶幊?、常用類庫、異常處理、集合框架、多線程編程以及數(shù)據(jù)庫操作等方面,通過實(shí)例演示關(guān)鍵技術(shù)的應(yīng)用。一、Java開發(fā)環(huán)境搭建在開始Java編程前,需要配置開發(fā)環(huán)境。以下是使用Windows系統(tǒng)安裝Java開發(fā)環(huán)境的步驟:1.下載JavaDevelopmentKit訪問Oracle官方網(wǎng)站下載JDK安裝包,推薦使用JDK8或11以上版本。選擇與操作系統(tǒng)匹配的版本,完成安裝。2.配置環(huán)境變量在系統(tǒng)屬性中添加以下環(huán)境變量:-變量名:JAVA_HOME-變量值:JDK安裝路徑(如C:\ProgramFiles\Java\jdk-11.0.1)在系統(tǒng)路徑中添加%JAVA_HOME%\bin3.驗(yàn)證安裝打開命令提示符,輸入`java-version`和`javac-version`,若顯示版本信息則安裝成功。4.選擇集成開發(fā)環(huán)境常用的IDE包括IntelliJIDEA、Eclipse和NetBeans。IntelliJIDEA功能完善,推薦新手使用。首次啟動(dòng)IDEA,需要配置項(xiàng)目JDK路徑和本地倉庫。二、Java基礎(chǔ)語法2.1變量與數(shù)據(jù)類型Java是靜態(tài)類型語言,所有變量必須聲明類型。基本數(shù)據(jù)類型包括:javabyte//8位,-128~127short//16位,-32,768~32,767int//32位,-2,147,483,648~2,147,483,647long//64位,-9,223,372,036,854,775,808~9,223,372,036,854,775,807float//32位浮點(diǎn)數(shù),如3.14fdouble//64位浮點(diǎn)數(shù),如3.14dchar//16位Unicode字符,如'字'boolean//布爾值,true或false2.2運(yùn)算符Java支持多種運(yùn)算符:java算術(shù)運(yùn)算符:+-/%++--比較運(yùn)算符:==!=><>=<=邏輯運(yùn)算符:&&||!位運(yùn)算符:&|^~<<>>>>>賦值運(yùn)算符:=+=-==/=%=&=|=^=<<=>>=>>>=示例代碼:javainta=10,b=5;booleanresult=(a>b)&&(a<20);//true2.3控制流程條件語句:javaif(條件){//執(zhí)行代碼}elseif(其他條件){//執(zhí)行代碼}else{//執(zhí)行代碼}循環(huán)語句:java//for循環(huán)for(初始化;條件;更新){//循環(huán)體}//while循環(huán)while(條件){//循環(huán)體}//do-while循環(huán)do{//循環(huán)體}while(條件);異常處理:javatry{//可能拋出異常的代碼}catch(ExceptionTypee){//處理異常}finally{//無論是否異常都會(huì)執(zhí)行}三、面向?qū)ο缶幊?.1類與對(duì)象類是對(duì)象的模板,對(duì)象是類的實(shí)例。定義類的基本結(jié)構(gòu):javapublicclassPerson{//屬性(字段)Stringname;intage;//方法voidsayHello(){System.out.println("Hello,mynameis"+name);}//構(gòu)造方法Person(Stringname,intage){=name;this.age=age;}}創(chuàng)建對(duì)象:javaPersonperson=newPerson("張三",25);person.sayHello();3.2封裝通過訪問修飾符控制成員的可見性:-private:僅當(dāng)前類訪問-protected:當(dāng)前類、子類、同包類訪問-public:所有類訪問-默認(rèn)(無修飾符):同包類訪問3.3繼承使用`extends`關(guān)鍵字實(shí)現(xiàn)繼承:javapublicclassStudentextendsPerson{StringstudentId;Student(Stringname,intage,StringstudentId){super(name,age);//調(diào)用父類構(gòu)造方法this.studentId=studentId;}voidstudy(){System.out.println(name+"isstudying");}}3.4多態(tài)子類可以重寫父類方法:java@OverridevoidsayHello(){System.out.println("Hello,Iam"+name+",astudent");}接口定義:javapublicinterfaceAnimal{voideat();voidsleep();}publicclassDogimplementsAnimal{@Overridepublicvoideat(){System.out.println("Dogiseating");}@Overridepublicvoidsleep(){System.out.println("Dogissleeping");}}四、常用類庫4.1String類String是不可變類,常用方法:javaStringstr="Hello";booleanequals=str.equals("Hello");intlength=str.length();charcharAt=str.charAt(1);Stringsubstring=str.substring(1,4);4.2Math類提供數(shù)學(xué)運(yùn)算方法:javaintmax=Math.max(10,20);doublepow=Math.pow(2,3);//8.0doublesqrt=Math.sqrt(9);//3.04.3Date與Calendar類日期時(shí)間處理:javaDatenow=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");StringformattedDate=sdf.format(now);4.4包裝類基本類型對(duì)應(yīng)的包裝類:javaIntegeri=100;Doubled=3.14;Booleanb=true;自動(dòng)裝箱與拆箱:javaintnum=10;Integerobj=num;//自動(dòng)裝箱intvalue=obj;//自動(dòng)拆箱五、實(shí)戰(zhàn)案例:學(xué)生管理系統(tǒng)5.1系統(tǒng)設(shè)計(jì)1.需求分析實(shí)現(xiàn)學(xué)生信息的增刪改查功能,包括學(xué)生ID、姓名、年齡、班級(jí)等屬性。2.類結(jié)構(gòu)設(shè)計(jì)-`Student`類:學(xué)生實(shí)體類-`StudentService`類:業(yè)務(wù)邏輯類-`StudentManager`類:界面展示類-`Main`類:程序入口5.2核心代碼實(shí)現(xiàn)Student類:javapublicclassStudent{privateStringstudentId;privateStringname;privateintage;privateStringclassName;publicStudent(StringstudentId,Stringname,intage,StringclassName){this.studentId=studentId;=name;this.age=age;this.className=className;}//GettersandSetterspublicStringgetStudentId(){returnstudentId;}publicvoidsetStudentId(StringstudentId){this.studentId=studentId;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}publicStringgetClassName(){returnclassName;}publicvoidsetClassName(StringclassName){this.className=className;}@OverridepublicStringtoString(){return"Student{"+"studentId='"+studentId+'\''+",name='"+name+'\''+",age="+age+",className='"+className+'\''+'}';}}StudentService類:javaimportjava.util.ArrayList;importjava.util.List;importjava.util.Optional;publicclassStudentService{privateList<Student>students=newArrayList<>();privateintnextId=1;publicvoidaddStudent(Studentstudent){student.setStudentId(String.valueOf(nextId++));students.add(student);}publicvoiddeleteStudent(StringstudentId){students.removeIf(student->student.getStudentId().equals(studentId));}publicOptional<Student>getStudent(StringstudentId){returnstudents.stream().filter(student->student.getStudentId().equals(studentId)).findFirst();}publicvoidupdateStudent(Studentstudent){deleteStudent(student.getStudentId());addStudent(student);}publicList<Student>getAllStudents(){returnnewArrayList<>(students);}}StudentManager類:javaimportjava.util.Scanner;publicclassStudentManager{privateStudentServiceservice=newStudentService();privateScannerscanner=newScanner(System.in);publicvoidstart(){while(true){System.out.println("\n學(xué)生管理系統(tǒng)");System.out.println("1.添加學(xué)生");System.out.println("2.刪除學(xué)生");System.out.println("3.查詢學(xué)生");System.out.println("4.更新學(xué)生信息");System.out.println("5.顯示所有學(xué)生");System.out.println("0.退出");System.out.print("請(qǐng)選擇操作:");intchoice=scanner.nextInt();scanner.nextLine();//消費(fèi)換行符switch(choice){case1:addStudent();break;case2:deleteStudent();break;case3:getStudent();break;case4:updateStudent();break;case5:displayAllStudents();break;case0:System.out.println("退出系統(tǒng)");return;default:System.out.println("無效選擇,請(qǐng)重新輸入");}}}privatevoidaddStudent(){System.out.print("輸入姓名:");Stringname=scanner.nextLine();System.out.print("輸入年齡:");intage=scanner.nextInt();scanner.nextLine();//消費(fèi)換行符System.out.print("輸入班級(jí):");StringclassName=scanner.nextLine();Studentstudent=newStudent("",name,age,className);service.addStudent(student);System.out.println("學(xué)生添加成功!");}privatevoiddeleteStudent(){System.out.print("輸入學(xué)生ID:");StringstudentId=scanner.nextLine();if(service.deleteStudent(studentId)){System.out.println("學(xué)生刪除成功!");}else{System.out.println("未找到該學(xué)生!");}}privatevoidgetStudent(){System.out.print("輸入學(xué)生ID:");StringstudentId=scanner.nextLine();Studentstudent=service.getStudent(studentId).orElse(null);if(student!=null){System.out.println(student);}else{System.out.println("未找到該學(xué)生!");}}privatevoidupdateStudent(){System.out.print("輸入學(xué)生ID:");StringstudentId=scanner.nextLine();Studentstudent=service.getStudent(studentId).orElse(null);if(student==null){System.out.println("未找到該學(xué)生!");return;}System.out.print("輸入新姓名(直接回車保留原值):");Stringname=scanner.nextLine();if(!name.isEmpty())student.setName(name);System.out.print("輸入新年齡(直接回車保留原值):");StringageInput=scanner.nextLine();if(!ageInput.isEmpty()){try{student.setAge(Integer.parseInt(ageInput));}catch(NumberFormatExceptione){System.out.println("年齡輸入無效!");return;}}System.out.print("輸入新班級(jí)(直接回車保留原值):");StringclassName=scanner.nextLine();if(!className.isEmpty())student.setClassName(className);service.updateStudent(student);System.out.println("學(xué)生信息更新成功!");}privatevoiddisplayAllStudents(){List<Student>students=service.getAllStudents();if(students.isEmpty()){System.out.println("暫無學(xué)生信息!");return;}System.out.println("\n所有學(xué)生信息:");students.forEach(System.out::println);}}Main類:javapublicclassMain{publicstaticvoidmain(String[]args){StudentManagermanager=newStudentManager();manager.start();}}5.3程序運(yùn)行編譯并運(yùn)行`Main`類,進(jìn)入管理界面:學(xué)生管理系統(tǒng)1.添加學(xué)生2.刪除學(xué)生3.查詢學(xué)生4.更新學(xué)生信息5.顯示所有學(xué)生0.退出請(qǐng)選擇操作:1輸入姓名:李四輸入年齡:20輸入班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生添加成功!學(xué)生管理系統(tǒng)1.添加學(xué)生2.刪除學(xué)生3.查詢學(xué)生4.更新學(xué)生信息5.顯示所有學(xué)生0.退出請(qǐng)選擇操作:5所有學(xué)生信息:Student{studentId='1',name='李四',age=20,className='計(jì)算機(jī)科學(xué)與技術(shù)'}六、異常處理與多線程6.1異常處理進(jìn)階自定義異常:javapublicclassInvalidStudentAgeExceptionextendsIllegalArgumentException{publicInvalidStudentAgeException(Stringmessage){super(message);}}//在StudentService中拋出publicvoidaddStudent(Studentstudent){if(student.getAge()<16||student.getAge()>60){thrownewInvalidStudentAgeException("學(xué)生年齡必須在16-60歲之間");}//添加學(xué)生邏輯}6.2多線程編程創(chuàng)建線程的兩種方式:java//方式一:繼承Thread類publicclassMyThreadextendsThread{@Overridepublicvoidrun(){System.out.println("線程名稱:"+Thread.currentThread().getName());}}//方式二:實(shí)現(xiàn)Runnable接口publicclassMyRunnableimplementsRunnable{@Overridepublicvoidrun(){System.out.println("線程名稱:"+Thread.currentThread().getName());}}//使用方式MyThreadthread1=newMyThread();thread1.start();MyRunnablerunnable=newMyRunnable();Threadthread2=newThread(runnable);thread2.start();線程同步:javapublicclassCounter{privateintcount=0;privatefinalObjectlock=newObject();publicvoidincrement(){synchronized(lock){count++;}}publicintgetCount(){synchronized(lock){returncount;}}}線程池使用:javapublicclassThreadPoolExample{publicstaticvoidmain(String[]args){ExecutorServicepool=Executors.newFixedThreadPool(3);for(inti=0;i<10;i++){inttaskNumber=i;pool.submit(()->{System.out.println(Thread.currentThread().getName()+"正在處理任務(wù)"+taskNumber);try{Thread.sleep(1000);}catch(InterruptedExceptione){Thread.currentThread().interrupt();}});}pool.shutdown();try{if(!pool.awaitTermination(5,TimeUnit.SECONDS)){pool.shutdownNow();}}catch(InterruptedExceptione){pool.shutdownNow();}}}七、數(shù)據(jù)庫操作7.1JDBC基礎(chǔ)連接MySQL數(shù)據(jù)庫:javaStringurl="jdbc:mysql://localhost:3306/students?useSSL=false&serverTimezone=UTC";Stringuser="root";Stringpassword="password";try(Connectionconnection=DriverManager.getConnection(url,user,password)){System.out.println("數(shù)據(jù)庫連接成功!");}catch(SQLExceptione){System.out.println("數(shù)據(jù)庫連接失?。?+e.getMessage());}執(zhí)行SQL查詢:javaStringsql="SELECTFROMstudentsWHEREage>?";try(Connectionconnection=DriverManager.getConnection(url,user,password);PreparedStatementstatement=connection.prepareStatement(sql)){statement.setInt(1,18);ResultSetrs=statement.executeQuery();while(rs.next()){Stringid=rs.getString("student_id");Stringname=rs.getString("name");System.out.println("ID:"+id+",Name:"+name);}}catch(SQLExceptione){System.out.println("查詢失?。?+e.getMessage());}7.2實(shí)現(xiàn)學(xué)生信息數(shù)據(jù)庫存儲(chǔ)1.創(chuàng)建數(shù)據(jù)庫表sqlCREATEDATABASEIFNOTEXISTSstudents_db;USEstudents_db;CREATETABLEstudents(student_idVARCHAR(10)PRIMARYKEY,nameVARCHAR(50)NOTNULL,ageINTNOTNULL,class_nameVARCHAR(50));2.修改StudentService類javapublicclassStudentService{privateConnectiongetConnection()throwsSQLException{Stringurl="jdbc:mysql://localhost:3306/students_db?useSSL=false&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論