![Java全部課件.pptx_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/11/1d668f16-cd85-4cae-82f6-874f9f3a77de/1d668f16-cd85-4cae-82f6-874f9f3a77de1.gif)
![Java全部課件.pptx_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/11/1d668f16-cd85-4cae-82f6-874f9f3a77de/1d668f16-cd85-4cae-82f6-874f9f3a77de2.gif)
![Java全部課件.pptx_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/11/1d668f16-cd85-4cae-82f6-874f9f3a77de/1d668f16-cd85-4cae-82f6-874f9f3a77de3.gif)
![Java全部課件.pptx_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/11/1d668f16-cd85-4cae-82f6-874f9f3a77de/1d668f16-cd85-4cae-82f6-874f9f3a77de4.gif)
![Java全部課件.pptx_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/11/1d668f16-cd85-4cae-82f6-874f9f3a77de/1d668f16-cd85-4cae-82f6-874f9f3a77de5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、core java的課程體系,Java語法基礎(chǔ) Java面向?qū)ο蟮木幊?Java的高級編程接口:4個(gè)專題 Java圖形GUI編程 多線程編程 I/O編程 網(wǎng)絡(luò)編程,Java語言的知識體系結(jié)構(gòu)圖,java語法基礎(chǔ)Day01-Day03,Day01,了解java的產(chǎn)生與發(fā)展 理解java語言的特性 理解java虛擬機(jī)jvm的特性和功能 理解字節(jié)碼和垃圾收集的概念 列舉出在java平臺上實(shí)現(xiàn)代碼安全的方法 知道在java中定義類,包,applets和applications 掌握編碼,編譯,運(yùn)行java應(yīng)用程序的步驟 安裝,搭建java開發(fā)運(yùn)行環(huán)境 第一個(gè)java程序 帶包的java程序 JVM搜索
2、類的順序和類加載 CLASSPATH的應(yīng)用 常用的java命令,Java的產(chǎn)生與發(fā)展,Java的產(chǎn)生 Sun公司的Green項(xiàng)目 基于c+開發(fā)的Oak語言 Mosaic和Netscape到JavaHot瀏覽器 Internet的蓬勃發(fā)展推動了java的發(fā)展(Applet) Java(爪哇) 名字的由來 Java的發(fā)展 Java的現(xiàn)狀 純面向?qū)ο蟮恼Z言 平臺無關(guān)性,一次編寫,到處運(yùn)行 適合于基于Internet應(yīng)用程序開發(fā) Java的地位確立 IT產(chǎn)業(yè)很多大公司購買了java的許可證 眾多軟件開發(fā)商已支持java軟件產(chǎn)品 Intranet是企業(yè)信息系統(tǒng)最佳的解決方案,java發(fā)揮了不可替代的作用
3、 Java的發(fā)展與其分支 95.5.23 Oak改名為java 98.12. java1.2,后來改名為java2 陸續(xù)出現(xiàn)了java1.3,java1.4 2004.12 java1.5版本推出 命名為java5.0 后來陸續(xù)出現(xiàn)java6.0,java7.0,Java的產(chǎn)生與發(fā)展,Java的發(fā)展與其分支 java在今天已形成了龐大的體系,經(jīng)過十年發(fā)展,已有了3個(gè)平臺標(biāo)準(zhǔn) 三大技術(shù)平臺都提供了相應(yīng)的開發(fā)工具包(SDK:SoftWare Development Kits) java SE -標(biāo)準(zhǔn)版應(yīng)用平臺 java EE-企業(yè)級應(yīng)用平臺 java ME微型版應(yīng)用平臺:應(yīng)用在存儲,運(yùn)算很小的受限
4、的平臺,Java語言的特性,什么是java? 程序設(shè)計(jì)語言;開發(fā)環(huán)境;應(yīng)用環(huán)境;部署環(huán)境 Java的特性 提供更簡單的方式寫程序 無指針,無需做內(nèi)存管理 提供龐大的類庫,純粹面向?qū)ο笤O(shè)計(jì) 支持靜態(tài)和動態(tài)的代碼繼承和重用 提供一個(gè)可解釋執(zhí)行的環(huán)境 支持任何開發(fā)平臺 只寫一次,到處使用 支持多線程 支持動態(tài)升級 以上特性如何實(shí)現(xiàn) Java虛擬機(jī):JVM 垃圾收集:Garbage Collection 代碼安全:Code Security 字節(jié)碼文件:Verifying,Java語言的特性,JVM與跨平臺性: 一次編寫,到處運(yùn)行:不同操作系統(tǒng),不同數(shù)據(jù)庫,不同的服務(wù)器 數(shù)據(jù)類型也可以實(shí)現(xiàn)跨平臺 Ja
5、va虛擬機(jī)的作用 程序的開發(fā)及運(yùn)行方式 Java的工作方式:先編譯后解釋,Java是先編譯后解釋執(zhí)行,CPU,Java語言的特性,Java源文件先通過編譯生成一個(gè)字節(jié)碼文件bytecode 字節(jié)碼不與當(dāng)前OS相關(guān),結(jié)構(gòu)中立的,是二進(jìn)制文件。任何平臺編譯生成的字節(jié)碼都是一樣的。 字節(jié)碼文件不能直接執(zhí)行,必須需要JVM的支撐才能運(yùn)行 JVM是sun開發(fā)的,字節(jié)碼的結(jié)構(gòu)也是sun定義的,他們之間有很好的接口 JVM存在的意義實(shí)際上就是屏蔽掉底層平臺的差異,為上層結(jié)構(gòu)中立的字節(jié)碼統(tǒng)一運(yùn)行的環(huán)境,而JVM會將字節(jié)碼轉(zhuǎn)化成相應(yīng)的底層平臺的機(jī)器碼執(zhí)行 java解釋器功能是用JVM來實(shí)現(xiàn)的,java的解釋器是
6、在jvm中運(yùn)行的 JVM的作用: 對下是屏蔽掉了底層平臺的差異,對于上層的字節(jié)碼而言不需要關(guān)心它運(yùn)行在什么平臺上,由JVM去把底層平臺的差異屏蔽掉 對上為結(jié)構(gòu)中立的字節(jié)碼提供了統(tǒng)一的運(yùn)行環(huán)境,實(shí)現(xiàn)了字節(jié)碼的跨平臺,JVM,Bytecode,Java語言的特性,Java的垃圾收集器 Java的垃圾收集解除了程序員分配存儲器的責(zé)任,它提供了一種系統(tǒng)級線程以便跟蹤每一存儲器的分配情況。在Java虛擬機(jī)的空閑周期,垃圾收集線程檢查并釋放那些可被釋放的存儲器。 內(nèi)存泄漏 垃圾收集線程 垃圾收集調(diào)用的方法:java.lang.System.gc()/java.lang.Runtime.gc() Java代
7、碼的安全性,Java語言的特性,字節(jié)碼的作用 字節(jié)碼的結(jié)構(gòu)是JVM特定指定的 字節(jié)碼不會破壞,篡改系統(tǒng) 禁止運(yùn)行時(shí)堆棧溢出 防止蠕蟲病毒襲擊 參數(shù)類型正確 類型轉(zhuǎn)換正確 安裝,搭建java開發(fā)運(yùn)行環(huán)境 官方網(wǎng)站下載JDK 官方網(wǎng)站: 不同系統(tǒng)平臺,JDK不一樣,選擇適合于自己平臺的JDK JDK的安裝 Windows直接安裝運(yùn)行jdk的可執(zhí)行exe文件 Linux系統(tǒng)將JDK文件壓縮包解壓后放入opt目錄,配置初始化文件的環(huán)境變量 Windows下JDK安裝后,會有2個(gè)文件夾生成 JDK:java開發(fā)工具軟件包,它包含了java的編譯,調(diào)試,運(yùn)行整個(gè)環(huán)境和包含了整個(gè)類庫的軟件包 JRE:jav
8、a運(yùn)行環(huán)境 JDK,JRE和JVM,安裝,搭建java開發(fā)運(yùn)行環(huán)境,JDK,JRE和JVM jre是jdk的子集,在一套完整的jdk中就包含了jre jre只負(fù)責(zé)運(yùn)行一個(gè)編譯好的java程序(字節(jié)碼文件bytecode) jdk它可以去編譯,調(diào)試,運(yùn)行整個(gè)操作過程都支持 在jre內(nèi)部有一個(gè)軟件組件jvm就是java虛擬機(jī) JDK的結(jié)構(gòu)簡介 bin目錄:java開發(fā)調(diào)試的命令, exe文件,連接庫文件,編譯器等等 編譯一個(gè)java文件:javac;運(yùn)行一個(gè)字節(jié)碼文件:java jre目錄:jdk中自帶的jre src壓縮文件:放置的是jdk類庫的源碼文件,按包結(jié)構(gòu)組織的 demo::java代碼
9、的演示實(shí)例文件 include:用于編譯本地方法的文件 docs:html格式的類庫文檔 lib:類庫文件 Java程序開發(fā)環(huán)境配置 在windows平臺:autoexec.bat文件;使用對話框(右擊我的電腦屬性高級環(huán)境變量系統(tǒng)或用戶的環(huán)境變量)操作 Unix平臺需要分shell:csh $HOME/.cshrc bsh/ksh $HOME/.profile 環(huán)境變量: JAVA_HOME:保存jdk的安裝目錄 windows : set JAVA_HOME=c:programfilesjavajdk1.5.0_09,Java程序開發(fā)環(huán)境配置,csh: setenv JAVA_HOME /o
10、pt/jdk1.5.0_09 bsh/ksh: JAVA_HOME=/opt/jdk1.5.0_09 CLASSPATH:系統(tǒng)搜索字節(jié)碼(類文件.class)文件的搜索路徑。設(shè)置系統(tǒng)在查找字節(jié)碼文件時(shí),它的搜索路徑。 windows: set CLASSPATH=.; %JAVA_HOME%jrelibrt.jar; csh: setenv CLASSPATH .:$JAVA_HOME/jre/lib/rt.jar bsh/ksh: CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar PATH:設(shè)置命令的搜索路徑,在執(zhí)行命令時(shí),操作系統(tǒng)就會在PATH設(shè)置的路徑去查找命令
11、的可執(zhí)行文件。 設(shè)置path不能覆蓋原有的,可以使用特殊符號 windows:%PATH%; Linux:$PATH: windows: set PATH=%PATH%;%JAVA_HOME%bin; csh: setenv PATH $PATH:$JAVA_HOME/bin bsh/ksh: PATH=$PATH:$JAVA_HOME/bin Linux系統(tǒng)使用bsh/ksh時(shí)則需要export JAVA_HOME CLASSPATH PATH 將環(huán)境變量設(shè)置為全局的 編輯,編譯,調(diào)試,運(yùn)行一個(gè)java程序 寫第一個(gè)java程序:HelloWorld.java public class He
12、lloWorld public static void main(String args) String str=“Hello World!”;,編輯,編譯,調(diào)試,運(yùn)行一個(gè)java程序,System.out.println(“The String is::”+str); System.out.println(MyAge is: +age); 通過這個(gè)程序掌握以下概念 一個(gè)java源文件中可以定義多個(gè)類,但最多只能有一個(gè)類用public來修飾,而且該public修飾的類名要與java源文件名一樣。 一個(gè)java應(yīng)用程序應(yīng)該包含一個(gè)主方法,而且主方法的簽名是固定不變的。主方法定義在哪個(gè)類中并不做固
13、定安排。 定義的所有的代碼中,只看到類的定義。在類中去封裝其他變量或方法。 編譯HelloWorld.java程序 開始運(yùn)行cmd進(jìn)入dos,修改當(dāng)前目錄為d:javacodeday01 使用javac HelloWorld.java命令編譯 編譯成功后,到day01程序目錄下查看,發(fā)現(xiàn)有2個(gè).class文件得出有效結(jié)論 編譯報(bào)錯則根據(jù)錯誤提示找出錯誤位置然后修改程序重新編譯 舉例來演示學(xué)習(xí)錯誤提示 假如將String的S寫為小寫 :string str=“HelloWorld!; 假如將out寫為out:System.otu.println(“The String is: +str); 再次
14、編譯一下,查看錯誤提示,必須要會讀錯誤提示 分析錯誤提示,排除錯誤是基本的能力,包的概念,含義和使用,運(yùn)行HelloWorld程序: 包含有主方法的程序才可以運(yùn)行,沒有包含主方法的類是不能運(yùn)行的 開始運(yùn)行cmd進(jìn)入dos;使用cd d:javacodeday01進(jìn)入程序目錄 使用 java HelloWorld(包含有主方法的類的類名)來運(yùn)行 使用java Student就會報(bào)告錯誤提示沒有主方法 要求學(xué)員做HelloWorld程序并操作演示幾種錯誤情況和調(diào)錯 帶包的java程序 包的聲明:package day01 package是關(guān)鍵字 day01是包名 包的概念和含義 包名的命名符合標(biāo)識
15、符命名規(guī)則即可 企業(yè)項(xiàng)目開發(fā)中,包的命名也有企業(yè)規(guī)范的如:com.shunshi.abs.model .來隔開每一部分,每一部分都是包結(jié)構(gòu) com.shunshi這個(gè)是軟件公司網(wǎng)址的url,可以區(qū)分確認(rèn)哪個(gè)公司開發(fā)的軟件產(chǎn)品 com.sun/com.ibm,這樣包名不會產(chǎn)生沖突 abs是項(xiàng)目名,model是項(xiàng)目中的模塊/子模塊名 寫MySecondJava.java程序 使用包結(jié)構(gòu) package com.shunshi.corejava.day01 使用包后,如何編譯 寫MySecondJava.java,使用包聲明: package corejava.day01; 編譯程序:javac d
16、 . MySecondJava.java,JVM搜索類的順序與類加載,-d選項(xiàng)的作用: 把編譯好的字節(jié)碼放在你指定的目錄下,所以需要指定目錄 如果源文件聲明了包結(jié)構(gòu),那么在給定的目錄位置下會按照包結(jié)構(gòu)自動創(chuàng)建目錄結(jié)構(gòu),編譯好的字節(jié)碼文件是放在最終的子目錄下 為什么使用包? 企業(yè)項(xiàng)目開發(fā)中方便管理不同的類 用包來分門別類地組織不同模塊功能的類 使用包的好處:舉例:航班機(jī)票預(yù)定項(xiàng)目 JVM搜索類的順序與類加載 使用包結(jié)構(gòu)編譯后,如何運(yùn)行? 使用java,注意:java corejava.day01.MySecondJava 如何運(yùn)行?類加載 演示錯誤情況的發(fā)生 直接使用 java MySecond
17、Java 則報(bào)告找不到這個(gè)類的定義的錯誤提示 為什么找不到?從系統(tǒng)如何去找類來說,與jvm在查找類時(shí)的搜索順序有關(guān)系 直接進(jìn)入包結(jié)構(gòu)目錄cd corejavaday01,使用java MySecondJava運(yùn)行,則報(bào)告找不到類的定義同時(shí)給出錯誤原因(找到的類與要運(yùn)行的類不一致),Java 常用命令,為什么不一致呢?找到的是帶包的,運(yùn)行的是不帶包的 CLASSPATH的應(yīng)用 深刻理解java技術(shù)體系 如何使用第三方的java技術(shù) 常用命令 javac 選項(xiàng) 源文件名 編譯java 源文件 -d 查看javac命令到底有哪些選項(xiàng),直接使用javac/javac -help命令回車 java 選項(xiàng)
18、 類名 參數(shù) 運(yùn)行java程序 jdb 選項(xiàng) 類名 參數(shù) 進(jìn)行debug調(diào)試的命令 javadoc 選項(xiàng) 包名 源文件名 生成jdk的api形式的程序文檔 在java源文件中允許使用文檔形式的注釋 單行注釋 /注釋內(nèi)容 多行注釋 /*注釋內(nèi)容*/ 多行注釋不能嵌套,但可以嵌套單行注釋 文檔注釋 /*注釋內(nèi)容*/ 出現(xiàn)在類的定義,方法的定義,屬性的定義之前,用來說明類的含義,方法的含義,屬性的含義 使用javadoc命令給MySecondJava.java生成文檔注釋 在MySecondJava.java中,類前,主方法前寫一些文檔注釋 使用javadoc命令將文件MySecondJava.ja
19、va中的文檔注釋抽取出來生成程序文檔。javadoc d .doc MySecondJava.java,Java 常用命令,分析程序文檔結(jié)構(gòu)和理解jdk的API文檔 jar ctxuvfm0Mi jar-file manifest-file -C directory files 創(chuàng)建/展開/更新一個(gè)jar文件 jar文件:sun公司定義的一種文件格式,與zip格式相同,可以用普通的解壓縮工具解開。jar文件壓縮的一般是java的字節(jié)碼文件,按照包結(jié)構(gòu)組織好的.class文件。 創(chuàng)建jar文件: 將d:corejavaday01中的1個(gè).class文件打包成一個(gè)jar文件 jar -cvf fi
20、rst.jar .corejava 不與源文件放在一起 c 代表創(chuàng)建jar文件 v 是可視化即可以看見創(chuàng)建過程和創(chuàng)建詳細(xì)清單 f 代表可在后面指定jar文件名 解壓生成后jar文件,有corejava和META-INF2個(gè)文件夾 jar文件有什么作用? 將開發(fā)的類打包jar文件給客戶,客戶得到后只需要設(shè)置classpath后就可以用了 開發(fā)一個(gè)中間件,將中間件的程序打包成jar 打包day01.jar(corejavaday01中的.class)給第三個(gè)程序MyThirdJava使用。 寫MyThirdJava.java程序,Jar文件和import的使用,將day01.jar路徑設(shè)置給CLA
21、SSPATH 將day01包下的MySecondJava.class移走 將javacodeday01下的MySecondJava.java移走 編譯運(yùn)行MyThirdJava來演示自定義jar文件的使用 思考問題 找不到MySecondJava,沒有給包結(jié)構(gòu)名 修改為corejava.day01.MySecondJava msj=new corejava.day01.MySecondJava(); String的使用不需要rt.jar路徑給CLASSPATH,也不需要使用包結(jié)構(gòu)名+類名 因?yàn)樗莑ang包下的類 若在MyThirdJava.java中自定義一個(gè)String class Str
22、ing則會報(bào)錯 與JVM搜索類的順序有關(guān),先搜索當(dāng)前包下的String,它無構(gòu)造方法 簡便引入某包下的類 直接使用包名+類名的形式,程序太煩瑣了 在程序的開頭使用import 包結(jié)構(gòu)名.類名來引入使用的類 要引入某包下的所有類則 import 包結(jié)構(gòu)名.*;,JDK的常用包,java.lang:JAVA語言包,核心的類和接口,無需導(dǎo)入可直接使用。如String、Math、Integer和Thread。 java.awt/javax.swing/java.awt.event:做java的圖形開發(fā)使用的包,包含有圖形組件,用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面。 java.applet:用來開發(fā)ja
23、va小程序的類和接口,包含了可執(zhí)行applet特殊行為的類。 java.io:包含了java所有做輸入輸出的類和接口,包含處理I/O文件的類 :用來做網(wǎng)絡(luò)開發(fā)的類和接口 java.util:java工具包,包含java開發(fā)常用的工具類,java的時(shí)間日期,java的數(shù)據(jù)結(jié)構(gòu),隨機(jī)數(shù)發(fā)生等。,知道java的特殊符號 熟悉java的標(biāo)識符 掌握java的關(guān)鍵字的使用 理解java各數(shù)據(jù)類型的存儲和使用 原始數(shù)據(jù)類型 基本數(shù)據(jù)類型的轉(zhuǎn)換 定義類,對象,成員變量和引用變量 類的聲明 類變量與類成員變量 創(chuàng)建類的對象實(shí)例和使用默認(rèn)值 描述引用變量與類對象的關(guān)系 掌握表達(dá)式和運(yùn)算符的使用,Day02,Ja
24、va中的特殊符號,注釋 單行注釋:/ 多行注釋:/*.*/ 這兩種注釋只能通過打開源文件來查看,寫程序一定要寫注釋。注釋與程序應(yīng)是2:1 多行注釋:/*/ 這個(gè)注釋可以不打開源文件來查看,java中有一個(gè)javadoc工具,它的作用是將源文件中的/*.*/注釋單獨(dú)抽出來放在另一個(gè)文件中。 例如: javadoc d . Hello.java,執(zhí)行后,會在當(dāng)前目錄下生成一個(gè)doc目錄,里面文件就可查看注釋了。 其他符號 ; 一個(gè)語句的結(jié)束 一個(gè)語句塊 空白字符 空格,tab,回車,換行等,Java標(biāo)識符,標(biāo)識符:程序中的組件名字,包括類名,方法的參數(shù)名,變量名,方法名,包名等 定義標(biāo)識符的規(guī)則:
25、 以_ ,$,字母開頭; 只含有_,$,字母,數(shù)字; 沒有長度限制,不能有空格; 不能使用java的關(guān)鍵字或保留字 大小寫敏感 例如:_abc , $ABC ,2A ,A# ,For,順時(shí) Java開發(fā)的命名習(xí)慣 所有的命名要望文生義,這樣才具有良好的可讀性 Total,Sum,ShunshiStudent, 類名,接口名:每個(gè)單詞的首字母大寫,其他字母小寫 如類MyFirstJava,Player,Teacher 屬性,方法,,局部變量名:第一個(gè)單詞全小寫,從第二個(gè)單詞開始以后每個(gè)單詞首字母大寫,其他字母小寫 如方法 getName() setDoctorBirthday() 常量:每個(gè)單詞
26、所有字母全部大寫,單詞之間用_來連接 java中使用final修飾 final int MARK_GREED=22; 包名:所有字母全部小寫 如package com.shunshi.corejava.day01,Java關(guān)鍵字,關(guān)鍵字:對Java技術(shù)編譯器有特殊的含義,可以被編譯器識別執(zhí)行 abstract do implements private throw boolean double import protected throws break else instanceof public transient byte extends int return true case fals
27、e interface short try catch final long static void char finally native super volatile class float new switch while continue for null synchronized default if package this Java關(guān)鍵字特點(diǎn) java關(guān)鍵字與c+很多相似,只要與c+一樣的,它的含義都與c+中的相同 有些關(guān)鍵字c+有,而java沒有 sizeof求出某種類型的變量的占內(nèi)存的大小 為什么c+有sizeof? 因?yàn)椴煌瑱C(jī)器內(nèi)存占用空間大小不一樣 16,32,64位,取
28、決于操作系統(tǒng)平臺。 為什么Java不需要? 因?yàn)橛蠮VM。 java中的關(guān)鍵字都是小寫的 true、false和null為小寫,而不是象在C+語言中那樣為大寫。嚴(yán)格地講,它們不是關(guān)鍵字。,Java關(guān)鍵字,有些關(guān)鍵字java沒有取消保留下來,但它自己也不用它也不給程序員用 goto和const不是Java編程語言中使用的關(guān)鍵字,而是保留字。 什么是保留字? 為什么保留下來但不能用? 在java中final替代const goto在c+代表無條件跳轉(zhuǎn),功能很好,但不能經(jīng)常用,要謹(jǐn)慎。 很多建議去掉goto關(guān)鍵字,沒有理解goto真正含義。 為什么c+到現(xiàn)在都沒有刪除掉goto?它有一個(gè)特殊使命 J
29、ava中使用break代替goto 跳出一層循環(huán) :break 跳出多層循環(huán):break out out是一個(gè)標(biāo)號,可以跳到out標(biāo)識處 break避免濫用goto,把goto功能削弱了,只能跳到外層循環(huán) java中加入新的關(guān)鍵字enum assert enum:枚舉 assert:斷言,Java的原始數(shù)據(jù)類型,boolean true/false byte 8位整型 1個(gè)字節(jié) short 16位整型 2個(gè)字節(jié) int 32位整型 4個(gè)字節(jié) long 64位整型 8個(gè)字節(jié) char 16位 unicode 字符 2個(gè)字節(jié) double 64位浮點(diǎn)數(shù)字型 8個(gè)字節(jié) float 32位浮點(diǎn)數(shù)字型
30、4個(gè)字節(jié),boolean類型,Java中定義boolean類型 boolean b=true; Java中的boolean類型的取值只能是true,false Java中的boolean類型不能與int通用,而在c+中可以 C+中,0代表false,非0代表true boolean與int通用好還是不好呢?不好 舉例說明 c+中的boolean與int通用 int a=1; if(0a2) coutaendl;,Integer 數(shù)據(jù)類型byte,short,int,long,Java中的4種整型類型,Java的不同整型占用內(nèi)存空間的大小不一樣 Java中整型的存儲規(guī)則與c+一樣, 但java整
31、型沒有無符號和有符號的區(qū)分,這與c+不一樣。Java中所有整型都是有符號的,這樣就可以求出每個(gè)整型能表示的范圍。 以byte為例說明 Byte是8位整型 1個(gè)字節(jié) 最多可表示28=256個(gè)數(shù) 從(-27)-128到127(27-1) 為什么是-128-127而不是-127-128呢?與整型數(shù)據(jù)在內(nèi)存的存儲規(guī)則有關(guān) 整型數(shù)據(jù)在內(nèi)存空間中的存儲方式 正整數(shù)(最高位為0)在內(nèi)存中是存儲原碼 負(fù)整數(shù)(最高位為1)在內(nèi)存中是存儲其補(bǔ)碼 補(bǔ)碼是不考慮符號情況下原碼取反后末位加1。以-5來分析補(bǔ)碼 分析一些特殊數(shù)字:8位全為1則是數(shù)字-1,8位全為0則是數(shù)字0 不考慮符號位最大的數(shù)是01111111表示數(shù)字
32、127,最小的數(shù)10000000表示數(shù)字-128,Integer 數(shù)據(jù)類型在內(nèi)存的存儲方式,為什么用補(bǔ)碼存儲負(fù)數(shù)?方便二進(jìn)制計(jì)算,例如-128+127=-1 其他類型的整型在內(nèi)存的存儲方式與byte相同,只是空間更大。其他類型的整型表示數(shù)的范圍如前面 整型數(shù)據(jù)表示 long類型使用 l或L來表示 int的不同進(jìn)制:十六進(jìn)制用0 x或H表示 8進(jìn)制用0或O表示 10進(jìn)制用D或10表示 默認(rèn)類型為int 整型定義 short s1=10000; short s2=40000; 超出范圍 long l=40000L; Long la=1234567l; int ia=0 x55; /十六進(jìn)制 int
33、 ib=011;/8進(jìn)制 byte bb=0 x771;/超出范圍 寫TestIntBool.java程序 byte a=1, b=2; byte c=a+b; int d=a+b; byte e=2;e=e+2; e+=2; int ia=0 x2aff; byte bb=(byte)ia; System.out.println(bb); boolean bl1=false; if(bl1=false) System.out.println(bl1); boolean bl2=true; if(bl2=1) System.out.println(bl2);,char類型 char 字符型為1
34、6位, 2個(gè)字節(jié),與c+不一樣,采用的是unicode編碼,unicode編碼是統(tǒng)一編碼,可包含字母,數(shù)字,符號,中文文字等 unicode碼是采用16進(jìn)制表示的 如u0061 2個(gè)字節(jié)的unicode編碼可以表示216個(gè)字符,字符使用單引號來表示 127個(gè)ASCII碼全可表示 英文字符,控制字符,數(shù)字,標(biāo)點(diǎn)符 表示其他語言的字符:中文,德語,法語,阿拉伯等 一個(gè)char類型本質(zhì)上是一個(gè)整型 char與short都是16位的,他們的差別? 通過查詢unicode編碼集可以獲取一個(gè)整型值對應(yīng)的unicode字符 unicode編碼集包含了ASCII碼集的 在0-127內(nèi)unicode編碼值與AS
35、CII碼值一樣,表示的字符也一樣 常見的ASCII碼值 :A:65 a:97 0:48 通過unicode碼得到碼值可以將16進(jìn)制轉(zhuǎn)換為10進(jìn)制,char zhchar=中; char enchar=a; char enchar1=97;在java中,int 與char 是可以互相轉(zhuǎn)換的 char ucchar=u0061; char uchar1=u61;因?yàn)閡nicode是16進(jìn)制的,2個(gè)字節(jié)則需要16位,需要4個(gè)16進(jìn)制數(shù) 下面寫一組char與int的定義,TestChar.java,char數(shù)據(jù)類型,String類型簡介,Java中的轉(zhuǎn)義字符 : 單引號 ” : “雙引號 :順斜杠 n
36、:換行 t:tab制表符 b:退格 0:u0000 unicode碼值為0的空字符 String類型 String類型:字符串類型,它不是java的8種基本類型,是類的類型 String是java的一個(gè)類,這個(gè)類的實(shí)例叫做String對象 Java中字符串用”雙引號來引用 Java中的字符串類不是以0結(jié)尾 String類是Java中使用最多的類,它有很多有用的方法,查看jdk的api文檔 獲得String類的對象變量 String str1=“Hello”; String str2=new String(“ World!”); String可做什么操作 使用+號來連接字符串 String s1
37、=“12”; int ia=3; int ib=4; System.out.println(s1+ia+ib); System.out.println(ia+ib+s1); char charAt(int):返回參數(shù)int指示位置上的字符 System.out.println(str1.charAt(0); String concat(String):將當(dāng)前String與參數(shù)String連接起來返回新串 System.out.println(str1.concat(str2);,String類型簡介,boolean contains(charSequence s):判斷一個(gè)字符串中是否包含參數(shù)
38、的子串 String str3=“Hello World!”; System.out.println(str3.contains(str1); boolean equals(String):比較2個(gè)字符串內(nèi)容是否相等,不忽略大小寫 String s2=“Hello”; String s3=“Hello”; System.out.println(s2.equals(s3); boolean equalsIgnoreCase(String):比較2個(gè)字符串內(nèi)容是否相等,忽略大小寫 String s4=“heLLo”; System.out.println(s4.equals(s3); System
39、.out.println(s4.equalsIgnoreCase(s3); int indexOf(String/char):獲得參數(shù)字符/字符串在改字符串中的第一次出現(xiàn)的位置索引,假如找不到則返回-1 System.out.println(str3.indexOf(“Wor”); System.out.println(str3.indexOf(o); length():獲得字符串的長度 System.out.println(str3.length(); 寫TestString.java,演示上面String的功能,浮點(diǎn)型數(shù)據(jù)類型,浮點(diǎn)數(shù)據(jù)類型:種 float:單精度,位個(gè)字節(jié)使用f或者F表示
40、 double:雙精度位個(gè)字節(jié)默認(rèn)類型 使用d或者D表示 浮點(diǎn)數(shù)舉例 float fa=123.4f; float fb=123.4; 默認(rèn)是double double直接賦給float精度丟失 float fc=12.5E300F; float fd=(float)12.5E301; double da=123D; double db=123.456d; double dc=123.45e301; 浮點(diǎn)數(shù)據(jù)類型的存儲方式 整型存儲方式是精確存儲 浮點(diǎn)存儲方式是近似存儲:實(shí)數(shù)范圍太大了,實(shí)數(shù)太多了,無法在內(nèi)存中對應(yīng)每一個(gè)實(shí)數(shù)的狀態(tài) 浮點(diǎn)數(shù)的近似存儲在程序中的問題:寫TestFloat.java
41、 實(shí)型值分母可為0,double d=0.0/0.0; System.out.println(d);編譯正確 double a=2.0,b=1.91,c=0.09; if(a-b=c) System.out.println(“ok”);else System.out.pringln(“no ok”); 結(jié)果輸出”on ok”。實(shí)型數(shù)值直接比較相等不安全,不要直接比較相等,但可以比較大小。,浮點(diǎn)型數(shù)據(jù)類型,假如一定想要2個(gè)實(shí)型數(shù)值比較是否相等,可以考慮比較2個(gè)實(shí)型數(shù)的差是否在一個(gè)非常小的范圍內(nèi) 想要輸出“ok”,則if(Math.abs(a-b-c)(1e-6) System.out.print
42、ln(“ok”); Math類 lang包下的類,它里面定義了很多方法來實(shí)現(xiàn)常用的數(shù)學(xué)運(yùn)算 Math類中的方法都是靜態(tài)的 Math類中的方法: abs():求絕對值 sqrt():求平方根 pow():求乘方 cos(),sin(),tan(),ctan():數(shù)學(xué)的三角函數(shù)運(yùn)算 random():獲得0-1之間的隨機(jī)數(shù) 在TestFloat.java中測試使用Math類中的方法 Math.abs(-5) Math.sqrt(9) Math.pow(2,3) Math.random()*100:獲得0-100之間的隨機(jī)數(shù),數(shù)據(jù)類型之間的轉(zhuǎn)換,數(shù)據(jù)類型之間的轉(zhuǎn)換分為2種 自動類型轉(zhuǎn)換 a類型轉(zhuǎn)換為
43、b類型時(shí),a的取值范圍是b的取值范圍的完全子集 這就是自動類型轉(zhuǎn)換 在java的8種基本類型中,除boolean以外,其他7種類型都是可以相互轉(zhuǎn)換的。 7種原始類型之間可自動轉(zhuǎn)換結(jié)構(gòu)圖 byteshortintlongfloatdouble char 順著箭頭方向可自動轉(zhuǎn)換;逆著箭頭方向則是強(qiáng)制轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換:只要不能自動轉(zhuǎn)換的,則只能是強(qiáng)制轉(zhuǎn)換 整型數(shù)據(jù)之間的強(qiáng)轉(zhuǎn):改變數(shù)據(jù)的符號;改變數(shù)值 int a=0 x2aff; byte b=(byte)a; b為-1 強(qiáng)制轉(zhuǎn)換的原理:從最低位開始取到目標(biāo)類型長度為止 整型之間的強(qiáng)轉(zhuǎn)是保留二進(jìn)制低位,去掉高位,需要考慮在內(nèi)存中如何存儲 實(shí)型強(qiáng)轉(zhuǎn)整
44、型是保留整數(shù),去掉小數(shù),不考慮實(shí)型在內(nèi)存中的如何存儲 寫一個(gè)DataTypeTest.java程序演示數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)類型之間的轉(zhuǎn)換,byte+byte會自動提升為int byte a1=1,a2=2;byte a3=a1+a2;(精度丟失) +=不進(jìn)行類型提升 byte c=3; c=c+3; c+=3;System.out.println(c); 默認(rèn)整型為int,int,long提升為float有精度丟失 float fa=37; System.out.println(fa); int ia=(int)fa; System.out.println(ia); long la=0 xfff
45、fffffffL;float fb=la;System.out.println(fb); long lb=(long)fb; System.out.println(lb); 整型之間的強(qiáng)轉(zhuǎn) int a=0 x2aff; byte b=(byte)a; System.out.println(b); float轉(zhuǎn)換為double會有精度丟失 float fe=1234.56f; double de=fe; System.out.println(de); float ff=(float)de; System.out.println(ff); 整型除法 System.out.println(5/2);
46、 System.out.println(float)5/2); char與int的轉(zhuǎn)換 char c1=A; int iic=c1;System.out.println(iic); char c2=99; System.out.println(c2);,Java中的特殊類型對象,為什么會有對象? 早些時(shí)候的編程語言和初級程序員將每個(gè)變量看作相互無關(guān)的實(shí)體。例如,如果一個(gè)程序需處理某個(gè)日期,則要聲明三個(gè)單獨(dú)的整數(shù):int day, month, year; 盡管這種作法很容易理解,但它存在兩個(gè)重大缺陷 名稱太多,會引起混亂 忽略了各個(gè)變量之間的聯(lián)系 例如:若程序需同時(shí)記錄幾個(gè)日期,則需要三個(gè)不同
47、的聲明,要記錄兩個(gè)生日, 則要使用 int myBirthDay, myBirthMonth, myBirthYear; int yourBirthDay, yourBirthMonth, yourBirthYear; 忽視了日、月和年之間的聯(lián)系并把每個(gè)變量都作為一個(gè)獨(dú)立的值,每個(gè)變量都是一個(gè)獨(dú)立單元(在本例中為date)的一部分并被相應(yīng)地處理 Java的對象類型 為克服上述兩種缺陷,Java編程語言使用類來表示這種新類型 Java除了中基本類型,還有一種類類型或者叫做對象類型(或是一個(gè)類,或是一個(gè)接口) Java的類類型不是表達(dá)一個(gè)簡單的數(shù)據(jù),而是表達(dá)一個(gè)較復(fù)雜的數(shù)據(jù)(復(fù)合數(shù)據(jù)),Java中
48、的特殊類型對象,例如:描述一個(gè)學(xué)生,定義一個(gè)學(xué)生類,它包含學(xué)生的相關(guān)信息:姓名,性別,年齡,專業(yè) 創(chuàng)建一個(gè)學(xué)生類 class Student private String name; private boolean sex; private int age; private String major; public Student(String name,boolean sex,int age,String major) =name; this.sex=sex; this.age=age; this.major=major; public void setName(Strin
49、g name) this.year=year; public void setSex(boolean sex) this.sex=sex; ,Java中的特殊類型對象,public void setAge(int age) this.age=age; public void setMajor(String major) this.major=major; public String getName() return name; public boolean getSex() return sex; public int getAge() return age; public String ge
50、tMajor() return major; Student就是一個(gè)新的類型,就像int,float等一樣可以用來定義變量 例如:Student stu; 聲明一個(gè)Student的變量stu,則它里面的name,sex,age,major也都隱含聲明了,name,sex,age,major稱為stu的成員變量。,Java中的特殊類型對象,類類型對象類型的數(shù)據(jù)的存儲方式與基本類型數(shù)據(jù)存儲方式的差別 類型創(chuàng)建一個(gè)Student對象: Student stu; stu=new Student(“LiDW,true,22,”computer”); 原始類型的聲明 int x;x=7; float y=
51、9.9f; 把類看作一個(gè)類型的話,它的使用其實(shí)和基本類型int等一樣,只不過賦值是賦的一個(gè)復(fù)雜的復(fù)合類型數(shù)據(jù),是new出的對象 存儲形式的差別 int x; x=7; 基本類型聲明變量時(shí)就已經(jīng)創(chuàng)建了變量并分配空間,無論它是否已經(jīng)賦值,賦值只是將值放入已分配的空間 Student stu;對象類型聲明Student stu;時(shí),在內(nèi)存空間也給stu分配了空間。 那分配了多少空間?Student中所有成員變量的空間大小和嗎? 不是取決于Student的大小,與Student的大小無關(guān) 那stu是什么?在java中把stu叫做引用,這個(gè)引用與c+中的引用完全不一樣 Java中的引用與c+的指針相似,
52、java中沒有指針,只有引用,它保存的也是一個(gè)地址值(內(nèi)存空間中的Student對象的地址) Java中的引用與c+的指針有差別 C+中指針可被程序員操作:int* p; p+,p-,*p等等,所以很危險(xiǎn),不安全 Java中不允許程序員對引用做操作,只能通過引用訪問對象,但不能對引用進(jìn)行+,-等操作,所以java語言更安全。,Java中的特殊類型對象,Java的引用需要多少個(gè)字節(jié)呢? 引用無論什么類型都保存的是內(nèi)存中的地址值 地址值常見的是4個(gè)字節(jié),相對來講很固定的值 地址值的長度嚴(yán)格來講也取決于不同的機(jī)器平臺,由機(jī)器的尋址空間決定的。例如常用的是32位機(jī)器,所以4個(gè)字節(jié) 那么stu=new
53、Student(“LiWD”,true,22,”computer”)又干什么? 在內(nèi)存空間中又開辟了一個(gè)區(qū)域?qū)iT用來保存該Student對象的數(shù)據(jù) 賦值語句將開辟的對象空間的地址賦給stu,stu就指向這個(gè)對象 綜上所述,對象類型的存儲方式即需要兩個(gè)空間:引用空間,對象空間 Java中的對象與引用的關(guān)系:可以打個(gè)比方來看看 對象可以看作是充滿氫氣的氣球,氣球中的空氣就是對象中的數(shù)據(jù),氣球我們無法直接拿到 任何時(shí)候我們拿到氣球都必須通過連接它的一根繩子,這跟繩子就可以看作是引用 深入理解對象與引用的關(guān)系 同一個(gè)氣球可不可以有多根繩子連著它?可以 就像雙胞胎牽同一個(gè)氣球 Student stu1=
54、new Student(“LiWD”,true,22,”computer”); Student stu2=stu1; stu2,stu1保存的是相同的地址值,stu2,stu1指向同一個(gè)對象 通過stu1修改了對象Student的數(shù)據(jù)值后,通過stu2訪問的對象也就改了,Java中的特殊類型對象,可不可能一根繩子同時(shí)栓著多個(gè)氣球?不能 如果一根繩子沒有連任何氣球,那么對于這個(gè)引用的訪問有意義嗎?沒有意義 Student stu3=null;定義了一個(gè)空引用,沒有指向任何對象 假如使用stu3去訪問name,age等會報(bào)告空指針異常 NullPointerException 如果某一個(gè)氣球沒有任
55、何繩子栓著,那它怎么辦?飛走了 這個(gè)氣球就無法訪問了,變成垃圾。(垃圾占用空間,但我們無法訪問) Student stu4=new Student(“LiWD”,true,22,”computer”); stu4=null; Java的垃圾回收機(jī)制 Java不讓程序員管理內(nèi)存 一個(gè)系統(tǒng)級線程專門掃描內(nèi)存,回收垃圾 垃圾回收是自動進(jìn)行的,程序員可以建議但不能控制,程序員調(diào)用java.lang.System.gc()來告訴JVM做垃圾回收。程序員建議后,也不一定就回收。,Java中的特殊類型對象,一般java.lang.System.gc()語句放在前面程序已釋放了很多垃圾后,則調(diào)用該語句執(zhí)行的可
56、能性大 Java的垃圾回收并不是馬上回收,jvm有一套算法來確定什么時(shí)候進(jìn)行垃圾回收 Java垃圾回收與c+內(nèi)存釋放的比較差異:打個(gè)比方 C+內(nèi)存釋放:相當(dāng)于學(xué)校食堂吃飯,吃飯后要將餐盤送到回收處,若你不做則大家會鄙視你。若大家都不做,則長時(shí)間就沒有餐盤了。 Java垃圾回收:相當(dāng)于餐館中吃飯,吃完了,只結(jié)帳就走了。餐館自然有人來回收。無需自己把餐盤送到后臺。 理解對象 對象無處不在;對象彼此聯(lián)系;對象有屬性;對象有方法 There are students and a teacher in classroom,Java的運(yùn)算符,賦值運(yùn)算符:一個(gè)簡單的賦值=和11個(gè)復(fù)合賦值 =,*=,/=,%
57、=,+=,-=,=(右移位),=, 比較運(yùn)算符 ,=,=,instanceof(比較類型),= =,!= Java的數(shù)據(jù)類型中哪些是可用比較運(yùn)算符來連接的 算術(shù)運(yùn)算符 +,-,*,/,% 5/2, (float)5/2,Java的運(yùn)算符,移位運(yùn)算符 所有的移位運(yùn)算只能針對整型數(shù)據(jù)操作 (右移,右移一位等于除2),(無符號右移) 有符號的右移:則移走后最左邊高位填補(bǔ)為原來的符號位 有符號的左移:則移出去的不管,移進(jìn)來用0來填補(bǔ) 無符號右移:則移出去的不管,移進(jìn)來都用0填補(bǔ) int a=68; a=a1); 10 System.out.println(in11); 10 int in2=-20;S
58、ystem.out.println(in21); -10 System.out.println(in21); 很大的數(shù) 位運(yùn)算符 ,Java的運(yùn)算符,想要a高8位不變,低8位全變0 a 操作數(shù)只能是布爾表達(dá)式 在java中, ,dd,Java中的變量,字符串常量:由雙引號“”括起來表示。.如“hello”,”33”,”tu0024” 空值常量:null表示空值。 常量的聲明: final 類型 常量名; final 類型 常量名=常量值; Java中的變量 什么是變量 系統(tǒng)為程序分配的內(nèi)存單元,存儲數(shù)據(jù)的,用一個(gè)標(biāo)識符來表示,其中的數(shù)據(jù)值是可以改變的,所以叫變量 變量名與變量值 定義變量的標(biāo)識
59、符叫變量名 內(nèi)存所裝載的數(shù)據(jù)值叫變量值 例如 int x=0,y; y=x+3;解釋其在內(nèi)存中的實(shí)現(xiàn)原理 變量的類型 八種基本類型:boolean,byte,short,int,long,char,float,double 對象類型:類,接口,數(shù)組 不同類型變量的取值范圍:變量的使用特別要注意的就是數(shù)據(jù)長度。,Java的變量,Java的變量,基本類型變量之間的數(shù)據(jù)轉(zhuǎn)換 自動類型轉(zhuǎn)換:也叫隱式類型轉(zhuǎn)換 轉(zhuǎn)換的兩種類型之間要兼容 目標(biāo)類型的取值范圍要大于源類型 如例:byte b=3; int t=b;/程序會將b的結(jié)果自動轉(zhuǎn)換為int型 強(qiáng)制類型轉(zhuǎn)換:顯示類型 轉(zhuǎn)換當(dāng)兩種類型不一致,不兼容 目標(biāo)類型的取值范圍小于源類型時(shí)則就需要進(jìn)行強(qiáng)制轉(zhuǎn)換 轉(zhuǎn)換方法:目標(biāo)類型 變量=(目標(biāo)類型)值 例:int x; byte b=(byte)x; 強(qiáng)制轉(zhuǎn)換是將x的值轉(zhuǎn)換后賦給b,而變量x本身的類型不變 強(qiáng)制轉(zhuǎn)換會丟失數(shù)據(jù) 表達(dá)式的數(shù)據(jù)類型自動提升 表達(dá)式在計(jì)算值時(shí)也會自動進(jìn)行數(shù)據(jù)類型提升,Java的變量,變量的聲明:類型 變量名; 類型 變量名=變量值; 變量的作用域 代碼塊:在程序中一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二年級班主任年度考核個(gè)人總結(jié)例文(二篇)
- 2025年個(gè)人租房的合同協(xié)議(4篇)
- 2025年企業(yè)公轉(zhuǎn)私借款合同模板(2篇)
- 民航旅客運(yùn)輸安全協(xié)議
- 文化產(chǎn)業(yè)土地交易居間協(xié)議
- 汽車維修傭金居間合同樣本
- 洗浴中心裝修安全合同
- 教育機(jī)構(gòu)貸款居間協(xié)議
- 汽車維修廠租賃居間協(xié)議
- 消費(fèi)品以舊換新策略在市場中的適應(yīng)性與優(yōu)化
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)生物試卷(含答案)
- 安全生產(chǎn)法律法規(guī)匯編(2025版)
- 監(jiān)察部部長崗位職責(zé)
- 山西省太原市杏花嶺區(qū)年三年級數(shù)學(xué)第一學(xué)期期末考試模擬試題含解析
- 《農(nóng)機(jī)化促進(jìn)法解讀》課件
- 最高法院示范文本發(fā)布版3.4民事起訴狀答辯狀示范文本
- 2023-2024學(xué)年度上期七年級英語期末試題
- 2024年英語高考全國各地完形填空試題及解析
- 2024至2030年中國餐飲管理及無線自助點(diǎn)單系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年燃?xì)廨啓C(jī)值班員技能鑒定理論知識考試題庫-下(多選、判斷題)
- 2024年服裝門店批發(fā)管理系統(tǒng)軟件項(xiàng)目可行性研究報(bào)告
評論
0/150
提交評論