




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第
1
章Java程序設計語言概述1.1Java簡介1.2Java語言誕生背景1.3Java語言的特點1.4安裝Java程序開發工具1.5Java程序開發過程1.6
Java開發工具Eclipse1.7編程風格1.8JavaAPI簡介課件制作人:明日科技1.1Java簡介Java語言得名于印度尼西亞一個盛產咖啡的島嶼,中文名叫爪哇,其寓意是為世人端上一杯熱咖啡。正如認識一個新事物一樣,學習一門語言應該是從整體到細節,再從細節到整體的過程。學習Java語言也是一樣,首先需要對其有一個整體的了解,然后再慢慢的學習具體內容,最后達到完全掌握Java語言的目的。目前,Java主要有3個獨立的版本。JavaSEJavaEEJavaME課件制作人:明日科技JavaSEJavaSE是Java語言的標準版本,包含Java基礎類庫和語法。它用于開發具有豐富的GUI(圖形用戶界面)、復雜邏輯和高性能的桌面應用程序。課件制作人:明日科技JavaEEJavaEE用于編寫企業級應用程序。它是一個標準的多層體系結構,可以將企業級應用程序劃分為客戶層、表示層、業務層和數據層,主要用于開發和部署分布式、基于組件、安全可靠、可伸縮和易于管理的企業級應用程序。課件制作人:明日科技JavaMEJ2ME主要用于開發具有有限的連接、內存和用戶界面能力的設備應用程序。例如移動電話(手機)、PDA(電子商務)、能夠接入電纜服務的機頂盒或者各種終端和其他消費電子產品。課件制作人:明日科技1.2Java語言誕生背景Java語言是Sun公司于1990年開發的,當時Green項目小組的研究人員正在致力于為未來的智能設備開發出一種新的編程語言,由于該小組的成員JamesGosling對C++的執行過程中的表現非常不滿,于是把自己封閉在辦公室里編寫了一種新的語言,并將其命名為Oak。課件制作人:明日科技OakOak就是Java語言的前身,這個名稱源于Gosling辦公室的窗外正好有一棵橡樹(Oak)。這時的Oak已經具備安全性、網絡通信、面向對象、GarbageCollected、多線程等特性,是一款相當優秀的程序語言。后來,由于去注冊Oak商標時,發現它已經被另一家公司注冊,所以不得不改名。要取什么名字呢,工程師們邊喝咖啡邊討論著,看看手上的咖啡,再想到印度尼西亞有一個重要的盛產咖啡的島嶼,中文名叫爪哇,于是將其改名為Java。課件制作人:明日科技HotJava隨著Internet的迅速發展,Web的應用日益廣泛,Java語言也得到了迅速發展。1994年,Gosling用Java開發了一個實時性較高、可靠、安全、有交互功能的新型Web瀏覽器,它不依賴于任何硬件平臺和軟件平臺。這種瀏覽器名稱為HotJava,并于1995年同Java語言一起,正式在業界對外發表,引起了巨大的轟動,Java的地位隨之而得到肯定。此后的發展非常迅速。課件制作人:明日科技Java語言的特點Java語言適用于Internet環境,是一種被廣泛使用的網絡編程語言,它具有簡單、面向對象、可移植、分布性、解釋器通用性、穩健、多線程、安全及高性能等語言特性。另外Java語言還提供了豐富的類庫,方便用戶進行自定義操作。下面將對Java語言的特點進行具體介紹。課件制作人:明日科技1.3.1簡單Java語言的語法規則和C++類似。它通過提供最基本的方法完成指定的任務。但Java語言對C++進行了簡化和提高。例如,指針和多重繼承通常使程序變得復雜,Java用接口取代了多重繼承,并取消了指針。Java語言還通過實現自動垃圾收集大大簡化了程序設計人員的內存管理工作。課件制作人:明日科技1.3.2面向對象Java語言以面向對象為基礎。在Java語言中,不能在類外面定義單獨的數據和函數,所有對象都要派生于同一個基類,并共享它所有功能,也就是說,Java語言最外部的數據類型是對象,所有的元素都要通過類和對象來訪問。課件制作人:明日科技1.3.3可移植性Java程序具有與體系結構無關的特性。這一特征使Java程序可以方便地移植到網絡的不同機器。同時,Java的類庫中也實現了針對不同平臺的接口,使這些類庫可以移植。課件制作人:明日科技1.3.4分布性Java語言從誕生就和網絡緊密地聯系在一起。在Java中還內置了TCP/IP、HTTP和FTP等協議類庫。因此,Java應用程序可以通過URL地址打開訪問網絡上的對象,訪問方式與訪問本地文件系統幾乎完全相同。課件制作人:明日科技1.3.5解釋器通用性運行Java程序需要解釋器。Java解釋器能直接對Java字節碼進行解釋執行。字節代碼獨立于機器,它本身攜帶了許多編譯時信息,使得連接過程更加簡單,因此可以在任何有Java解釋器的機器上運行。課件制作人:明日科技1.3.6穩健Java能夠檢查程序在編譯和運行時的錯誤。類型檢查能幫助用戶檢查出許多在開發早期出現的錯誤。同時很多集成開發工具(IDE)的出現使編譯和運行Java程序更加容易,并且很多集成開發工具(如Eclipse)都是免費的。課件制作人:明日科技1.3.7安全Java通常被應用在網絡環境中,為此,Java提供了一個安全機制以防止惡意代碼攻擊。當使用支持Java的瀏覽器上網時,可以放心的運行JavaApplet程序,不必擔心病毒的感染和惡意企圖。課件制作人:明日科技1.3.8多線程多線程是程序同時執行多個任務的一種功能。多線程機制能夠使應用程序并行執行多項任務,而且同步機制保證了各線程對共享數據的正確操作。使用多線程,程序設計人員可以用不同的線程完成特定的行為,使程序具有更好的交互能力和實時運行能力。課件制作人:明日科技1.3.9高性能由于Java程序是可解釋的,字節碼不是直接由系統執行,而是在解釋器中運行,所以它的速度比多數交互式應用程序提高了很多。課件制作人:明日科技1.4安裝Java程序開發工具下載JDK安裝JDK配置和測試JDK課件制作人:明日科技1.5Java程序開發過程在還沒有正式開發Java程序前,首先需要對Java程序的開發過程有所了解。開發Java程序總體上可以分為3個步驟:編寫Java源文件編譯Java源文件運行Java程序課件制作人:明日科技編寫Java源文件Java源文件是一種純文本文件,它可以使用任何文本編輯器進行編輯,其擴展名為.java。例如,可以使用Windows的記事本編寫一個名稱為OneJavaApp.java的Java源文件。課件制作人:明日科技編譯Java源文件編譯Java源文件,也就是將Java源文件編譯(Compile)成Java類文件(擴展名為.class)。例如,將OneJavaApp.java文件編譯成OneJavaApp.class類文件使用如下命令:注:編譯Java的原文件,需要指定文件擴展名。javacOneJavaApp.java課件制作人:明日科技運行Java程序Java程序可以分為JavaApplication(Java應用程序)和JavaApplet(Java小應用程序)。其中,JavaApplication必須通過Java解釋器(java.exe)來解釋執行其字節碼文件,即類文件,JavaApplet需要使用支持它的瀏覽器(如NetscapeNavigator或IE等)運行。運行Java應用程序的命令如下:注:運行Java的類文件,不需要指定文件擴展名。javaOneJavaApp課件制作人:明日科技1.6開發工具Eclipse1.Eclipse簡介(一)Eclipse是基于Java的,開放源碼的、可擴展的應用開發平臺,它為編程人員提供了一流的Java集成開發環境(IntegratedDevelopmentEnvironment,IDE)。是一個可以用于構建集成Web和應用程序的開發工具平臺,其本身并不會提供大量的功能,而是通過插件來實現程序的快速開發功能。課件制作人:明日科技2.簡介(二)Eclipse是一個成熟的可擴展的體系結構。它為創建可擴展的開發環境提供了一個平臺。這個平臺允許任何人構建與環境或其他工具無縫集成的工具,而工具與Eclipse無縫集成的關鍵是插件。Eclipse還包括插件開發環境(PDE),PDE主要針對那些希望擴展Eclipse的編程人員而設定的。這也正是Eclipse最具魅力的地方。通過不斷的集成各種插件,Eclipse的功能也在不斷的擴展,以便支持各種不同的應用。課件制作人:明日科技3.Eclipse簡介(三)Eclipse利用Java語言寫成,所以Eclipse可以支持跨平臺操作,但是需要SWT(StandardWidgetToolkit)的支持,不過這已經不是什么大問題了,因為SWT已經被移植到許多常見的平臺上,例如Windows、Linux、Solaris等多個操作系統,甚至可以應用到手機或者PDA程序開發中。課件制作人:明日科技1.7編程風格1.Allmans風格Allmans風格也稱作“獨行”風格,即左、右大括號各自獨占一行,代碼如下:publicclassAllmans{publicstaticvoidmain(String[]args){System.out.println(“Allmans風格”);}}當代碼量較少時適合使用“獨行”風格,代碼布局清晰,可讀性強。
課件制作人:明日科技1.7編程風格2.Kernighan風格Kernighan風格也稱作“行尾”風格,即左大括號在上一行的行尾,右大括號獨占一行,代碼如下:publicclassKernighan{publicstaticvoidmain(String[]args){System.out.println(“Kernighan風格”);}}當代碼量較大的時候適合使用“行尾”風格,因為該風格能夠提高代碼的清晰度。
課件制作人:明日科技1.8編程風格3.注釋單行注釋使用“//”表示單行注釋的開始,也就是說從該行中從“//”開始以后的內容均為注釋部分。例如:publicclassDemo//聲明一個類,類的名字叫Demo{//類體的左大括號
publicstaticvoidmain(String[]args){System.out.println(“這是一個注釋。”);//輸出這是一個注釋。
}}//類體的右大括號課件制作人:明日科技1.8編程風格多行注釋使用“/*”表示注釋的開始,以“*/”表示注釋的結束。例如:publicclassDemo{/*以下是main方法,它是程序的入口,程序的執行首先執行main方法*/publicstaticvoidmain(String[]args){}}課件制作人:明日科技1.8JavaAPI簡介API(ApplicationProgrammingInterface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基于某軟件或硬件的的一組例程能力。當運行一個Java程序時,Java虛擬機裝載程序的class文件所使用的JavaAPIclass文件。所有被裝載的class文件和所有已經裝載的動態庫共同組成了Java虛擬機上運行的整個程序。在一個平臺能夠支持Java程序以前,必須在這個特定平臺上明確地實現API功能。《Java實用教程》課件制作人:明日科技Java實用教程第2章Java語言的基本語法課件制作人:明日科技2.1標識符和關鍵字Java語言中的類名、對象名、方法名、常量名和變量名統稱為標識符。標識符由程序員定義,可以由字母、數字、下劃線(_)和($)符號組成,但是標識符的第一個字符不允許為數字,只允許為字母、下劃線(_)或($)符號。在Java語言中還定義了一些專有詞匯,統稱為關鍵字,例如public、class、int等,它們都具有一種特定的含義,只能用于特定的位置,不能作為標識符使用。課件制作人:明日科技Java關鍵字abstractconstfinallyintpublicthisbooleancontinuefloatinterfacereturnthrowbreakdefaultforlongshortthrowsbytedogotonativestatictransientcasedoubleifnewstrictfptrycatchelseimplementspackagesupervoidcharextendsimportprivateswitchvolatileclassfinalinstanceofprotectedsynchronizedwhile在定義標識符時,不允許定義為表中列出的任一關鍵字課件制作人:明日科技Java標識符命名規則為了提高程序的可讀性,在定義標識符時,要盡量遵循“見其名知其意“的原則。Java標識符的具體命名規則如下:一個標識符可以由幾個單詞連接而成,以表明它的意思。對于類名,每個單詞的首字母都要大寫,其他字母則小寫,例如RecordInfo。對于方法名和變量名,與類名有些相似,除了第一個單詞的首字母小寫外,其他單詞的首字母都要大寫,例如getRecordName()。課件制作人:明日科技Java標識符命名規則對于常量名,每個單詞的每個字母都要大寫,如果由多個單詞組成,通常情況下單詞之間用下劃線(_)分隔,例如MAX_VALUE。對于包名,每個單詞的每個字母都要小寫,例如com.frame。注意:Java語言是區分字母大小寫的,即Java不等于java課件制作人:明日科技2.2常量與變量常量和變量在程序代碼中隨處可見,下面就具體講解常量和變量的概念及使用要點,從而達到區別常量和變量的目的。課件制作人:明日科技2.2.1常量的概念及使用要點所謂常量,就是值永遠不允許被改變的量。如果要聲明一個常量,就必須用關鍵字final修飾,聲明常量的具體方式如下:
final
常量類型常量標識符;
例如:
finalintYOUTH_AGE; //聲明一個int型常量finalfloatPIE; //聲明一個float型常量注意:按照Java命名規則,常量標識符所有的字符都要大寫,各個單詞之間用下劃線_分隔課件制作人:明日科技常量在聲明常量時,通常情況下立即為其賦值,即立即對常量進行初始化,聲明并初始化常量的具體方式如下:
final
常量類型常量標識符=
常量值;例如:finalintYOUTH_AGE=18;//聲明int型常量,初始化為18finalfloatPIE=3.14F; //聲明float型常量,初始化為3.14說明:為float型常量賦值時,需要在數值的后面加上一個字母“F”或“f”。課件制作人:明日科技常量聲明多個同一類型的常量,可以采用下面的形式:
final
常量類型常量1=常量值1,常量2=常量值2,……;例如:finalintNUM1=14,NUM2=25,NUM3=36;注意:如果在聲明常量時已經對其進行了初始化,則常量的值不允許再被修改課件制作人:明日科技2.2.2變量的概念及使用要點所謂變量,就是值可以被改變的量。聲明變量的具體方式如下:變量類型變量標識符;例如:注意:定義變量名時,按照Java的命名規則,第一個單詞的首字母小寫,其他單詞的首字母大寫,例如“partyMemberAge”。Stringname; //聲明String型變量intpartyMemberAge; //聲明int型變量課件制作人:明日科技變量在聲明變量時,可以立即為其賦值,即立即對變量進行初始化,具體語法如下:
變量類型變量標識符=變量值;例如:intpartyMemberAge=26; //聲明一個int型變量floatmoney=3150; //聲明float類型變量課件制作人:明日科技同類型變量如果需要聲明多個同一類型的變量,也可以采用下面的形式:
變量類型變量1,變量2,變量3;變量類型變量4=變量值4,變量5=變量值5,變量6=變量值6;例如:說明:變量區別于常量,它的值允許被改變。intA,B,C; //聲明3個int型變量intD=4,E=5,F=6; //聲明并分別初始化3個int型變量課件制作人:明日科技2.3數據類型Java語言中的數據類型劃分為兩大類,分別是基本數據類型和引用數據類型。其中基本數據類型由Java語言定義,不可以再進行劃分。基本數據類型的數據占用內存的大小固定,在內存中存入的是數值本身引用數據類型在內存中存入的是引用數據的存放地址,并不是數據本身。Java語言中的數據類型分類情況如下圖所示:數據類型課件制作人:明日科技2.3.1基本數據類型基本數據類型分為:整數型浮點數型字符型邏輯型(布爾型)它們分別用來存儲整數、小數、字符和布爾值,下面將依次講解這4個基本數據類型的特征及使用方法。課件制作人:明日科技整數型聲明為整數型的常量或變量用來存儲整數,整數型包括:字節型(byte)短整型(short)整型(int)長整型(long)這4個數據類型的區別是它們在內存中所占用的字節數不同,因此,它們所能夠存儲的整數的取值范圍也不同。整數占用內存大小以及取值范圍數據類型關鍵字內存字節取值范圍字節型byte1個字節-128~127短整型short2個字節-32768~32767整型int4個字節-2147483648~2147483647長整型long8個字節-9223372036854775808~9223372036854775807課件制作人:明日科技長整型數值在為long型常量或變量賦值時,需要在所賦值的后面加上一個字母“L”(或“l”),說明所賦的值為long型。如果所賦的值未超出int型的取值范圍,也可以省略字母“L”(或“l”)。例如下面的代碼均是正確的。longla=9876543234L; //超出了int取值范圍,必須加“L”longlb=98765432L; //未超出int取值范圍,也可以加“L”longlc=98765432; //未超出int取值范圍,可以省略“L”課件制作人:明日科技浮點數聲明為浮點數型的常量或變量用來存儲小數,浮點數包括單精度型(float)和雙精度(double)兩個基本數據類型,這兩個數據類型的區別是它們在內存中所占用的字節數不同,因此,它們所能夠存儲的整數的取值范圍也不同數據類型關鍵字占用內存字節數取值范圍單精度型float4字節1.4E-45~3.4028235E38雙精度型double8字節4.9E-324~1.7976931348623157E308課件制作人:明日科技float型數值在為float型常量或變量賦值時,需要在所賦值的后面加上一個字母“F”(或“f”),說明所賦的值為float型。如果所賦的值為整數,并且未超出int型的取值范圍,也可以省略字母“F”(或“f”)。例如下面的代碼均是正確的。floatfa=9412.75F; //賦值為小數,必須“F”floatfb=9876543210F; //賦值超出int取值范圍,必須“F”floatfc=9412F; //未超出int取值范圍,可以“F”floatfd=9412; //也可以省略“F”課件制作人:明日科技double型數值在為double型常量或變量賦值時,需要在所賦值的后面加上一個字母“D”(或“d”),說明所賦的值為double型。如果所賦的值為小數,或者所賦的值為整數,并且未超出int型的取值范圍,也可以省略字母“D”(或“d”)。例如下面的代碼均是正確的。doubleda=9412.75D; //所賦值為小數,可以加上“D”doubledb=9412.75; //所賦值為小數,也可以省略“D”doubledc=9412D; //未超出int取值范圍,可以加上“D”doubledd=9412; //未超出int取值范圍,可以省略“D”doublede=9876543210D; //超出int取值范圍,必須加上“D課件制作人:明日科技字符型聲明為字符型的常量或變量用來存儲單個字符,它占用內存的2個字節來存儲,字符型利用關鍵字“char”進行聲明。Java中的字符通過Unicode字符編碼,以二進制的形式存儲到計算機中,計算機可通過數據類型判斷要輸出的是一個字符還是一個整數。Unicode編碼采用無符號編碼,一共可存儲65536個字符,所以Java中的字符幾乎可以處理所有國家的語言文字。課件制作人:明日科技字符型數值在為char型常量或變量賦值時,無論值是一個英文字母,或者是一個符號,還是一個漢字,必須將所賦的值放在英文狀態下的一對單引號中。例如下面的代碼分別將字母“M”、符號“*”和漢字“男”賦值給char型變量ca、cb和cc。charca='M'; //將大寫字母“M”賦值給char型變量charcb='*'; //將符號“*”賦值給char型變量charcc='男'; //將漢字“男”賦值給char型變量課件制作人:明日科技邏輯型聲明為邏輯型的常量或變量用來存儲邏輯值,邏輯值只有true和false,分別用來代表邏輯判斷中的“真”和“假”,邏輯型利用關鍵字“boolean”進行聲明。例如下面的代碼分別將true和false賦值給變量ba和bb。booleanba=true; //將true賦值給變量babooleanbb=false; //將false賦值給變量bb課件制作人:明日科技邏輯型也可以將邏輯表達式賦值給boolean型變量,例如下面的代碼分別將邏輯表達式“6<8”和邏輯表達式“6>8”賦值給boolean型變量ba和bb。booleanba=6<8; //將表達式“6<8”賦值給變量babooleanbb=6>8; //將表達式“6>8”賦值給變量bb課件制作人:明日科技2.3.2引用數據類型引用數據類型包括類引用、接口引用以及數組引用。下面的代碼分別聲明一個java.lang.Object類的引用、java.util.List接口的引用和一個int型數組的引用。說明:將引用數據類型的常量或變量初始化為null時,表示引用數據類型的常量或變量不引用任何對象。Objectobject=null; //聲明一個Object類的引用變量Listlist=null; //聲明一個List接口的引用變量int[]months=null; //聲明一個int型數組的引用變量課件制作人:明日科技2.3.3基本類型與引用類型的區別基本數據類型與引用數據類型主要區別在以下兩個方面:基本數據類型與引用數據類型的組成Java虛擬機處理基本數據類型變量與引用數據類型變量的方式。課件制作人:明日科技組成基本數據類型是一個單純的數據類型,它表示的是一個具體的數字、字符或邏輯值,例如68、‘M’或true對于引用數據類型,若一個變量引用的是一個復雜的數據結構的實例,則該變量的類型就屬于引用數據類型在引用數據類型變量所引用的實例中,不僅可以包含基本數據類型的變量,還可以包含對這些變量的具體操作行為,甚至是包含其他引用類型的變量。課件制作人:明日科技Java虛擬機的處理方式對于基本數據類型的變量,Java虛擬機會根據變量的實際類型為其分配內存空間。例如為int型變量分配4個字節的內存空間。而引用類型的變量,Java虛擬機在內存空間中存放的并不是變量所引用的對象,而是對象在堆內存中存放的地址,所以引用變量最終只是指向被引用的對象,而不是存儲引用對象的數據,因此兩個引用變量之間的賦值,就是將一個引用變量存儲的地址復制給另一個引用變量,從而使兩個變量指向同一個對象。例如創建一個圖書類Book:聲明兩個Book類的實例,分別通過變量book1和book2進行引用,對book1進行具體的初始化,而將book2初始化為null,具體代碼如下。publicclassBook{ Stringisbn=“978-7-115-16451-3”; Stringname=“×××應用開發完全手冊”; Stringauthor=“××科技”; floatprice=59.00F;}Bookbook1=newBook();Bookbook2=null;Java虛擬機為引用變量book1、book2及book1所引用對象的成員變量分配的內存空間如下圖所示。
從圖中可以看出,變量book1引用了Book類的實例,book2沒有引用任何實例。下面對變量book2進行具體的初始化,將book1引用實例的地址復制給book2變量,即book2與book1引用同一個Book類的實例,具體代碼如下:book2=book1;此時Java虛擬機的內存空間分配情況如下圖所示。課件制作人:明日科技2.3.4數據類型之間的相互轉換所謂數據類型之間的相互轉換,就是將變量從當前的數據類型轉換為其他數據類型。在Java中數據類型之間的相互轉換可以分為以下3種情況:基本數據類型之間的相互轉換;字符串與其他數據類型之間的相互轉換;引用數據類型之間的相互轉換。說明:這里只介紹基本數據類型之間的相互轉換,其他兩種情況將在相關的章節中介紹。課件制作人:明日科技2.3.4數據類型之間的相互轉換在對多個基本數據類型的數據進行混合運算時,如果這幾個數據并不屬于同一基本數據類型,需要先將它們轉換為統一的數據類型,然后才能進行運算。基本數據類型之間的相互轉換又分為兩種情況:自動類型轉換強制類型轉換。課件制作人:明日科技1.自動類型轉換當需要從低級類型向高級類型轉換時,編程人員無需進行任何操作,Java會自動完成類型轉換。低級類型是指取值范圍相對較小的數據類型,高級類型則指取值范圍相對較大的數據類型,例如long型相對于float型是低級數據類型,但是相對于int型則是高級數據類型。在基本數據類型中,除了boolean類型外均可參與算術運算,這些數據類型從低到高的排序如下圖所示。課件制作人:明日科技自動類型轉換在不同數據類型間的算術運算中,自動類型轉換可以分為兩種情況進行考慮:第一種情況含有int、long、float或double型的數據第二種情況含有byte、short或char型的數據。課件制作人:明日科技自動類型轉換
第一種情況如果在算術表達式中含有int、long、float或double型的數據,Java首先會將所有數據類型較低的變量自動轉換為表達式中最高的數據類型,然后再進行計算,并且計算結果的數據類型是表達式中級別最高的數據類型。例如下面這段代碼:Java首先會自動將表達式“b*c-i+l”中的變量b、c和i的數據類型轉換為long型。然后再進行計算,并且計算結果的數據類型為long型。所以將表達式“b*c-i+l”直接賦值給數據類型相對小于long型(例如int型)的變量是不允許的,但是可以直接賦值給數據類型相對大于long型(例如float型)的變量。byteb=75;charc='c';inti=794215;longl=9876543210L;longresult=b*c-i+l;再看下面這段代碼:Java首先會自動將表達式“b*c-i+d”中的變量b、c和i的數據類型轉換為double型,然后再進行計算,并且計算結果的數據類型為double型。所以將表達式“b*c-i+d”直接賦值給數據類型相對小于double型(例如long型)的變量是不允許的。byteb=75;charc='c';inti=794215;doubled=11.17;doubleresult=b*c-i+d;課件制作人:明日科技自動類型轉換
第二種情況如果在算術表達式中只含有byte、short或char型的數據,Java首先會將所有變量的類型自動轉換為int型,然后再進行計算,并且計算結果的數據類型是int型。例如下面這段代碼:Java首先會自動將表達式“b+s*c”中的變量b、s和c的數據類型轉換為int型,然后再進行計算,并且計算結果的數據類型為int型。所以將表達式“b+s*c”直接賦值給數據類型小于int型(例如char型)的變量是不允許的,但是可以直接賦值給數據類型相對大于int型(例如long型)的變量。byteb=75;shorts=9412;charc='c';intresult=b+s*c;再看下面這段代碼:即使是在這段代碼中,Java也會自動將表達式“s1*s2”中的變量s1和s2的數據類型轉換為int型,然后再進行計算,并且計算結果的數據類型也為int型。對于數據類型為byte、short、int、long、float和double的變量,可以將數據類型較小的數據或變量,直接賦值給數據類型較大的變量,但是相反的條件則不成立。shorts1=75;shorts2=9412;intresult=s1*s2;課件制作人:明日科技2.強制類型轉換如果需要把數據類型較高的數據或變量賦值給數據類型相對較低的變量,就必須進行強制類型轉換。例如將Java默認為double型的數據“7.5”,賦值給數據類型為int型變量的方式如下:inti=(int)7.5;這句代碼在數據“7.5”的前方添加了代碼“(int)”,意思就是將數據“7.5”的類型強制轉換為int型。在執行強制類型轉換時,可能會導致數據溢出或精度降低。例如上面語句中變量i的值最終為7,導致數據精度降低。課件制作人:明日科技2.強制類型轉換如果將Java默認為int型的數據“774”賦值給數據類型為byte型變量,方法如下:byteb=(byte)774;最終變量b的值為6,原因是整數774超出了byte型的取值范圍,在進行強制類型轉換時,整數774的二進制數據的前24位將被舍棄,變量b的數值是后8位的二進制數據,如下圖所示。課件制作人:明日科技2.4數組數組是一種最為常見的數據結構,通過數組可以保存一組相同數據類型的數據,數組一旦創建,它的長度就固定了。數組的類型可以為基本數據類型,也可以為引用數據類型,可以是一維數據,二維數據,甚至是多維數據。課件制作人:明日科技2.4.1數組的聲明聲明一維數組的方式如下:這兩種聲明數組格式的作用是相同的。Java語言中的二維數組是一種特殊的一維數組,即數組的每個元素又是一個一維數組,Java語言并不直接支持二維數組。聲明二維數組的方式如下:數組類型[]數組標識符;數組類型數組標識符[];數組類型[][]數組標識符;或數組類型數組標識符[][];課件制作人:明日科技2.4.2創建數組創建數組實質上就是在內存中為數組分配相應的存儲空間,有兩種方式可以創建一維數組,一種是通過new關鍵字創建,另一種是通過“{}”創建,例如:int[]months=newint[12]; //months的長度為12boolean[]members={false,true,true,false}; //members的長度為4課件制作人:明日科技二維數組的創建方式如下:int[][]days=newint[2][3];booleanholidays[][]={{true,false,true},{false,true,false}};二維數組可以看做一個表格。數組days看成一個2行3列的表格,數組holidays看成2行3列的表格
列索引0列索引1列索引2行索引0days[0][0]days[0][1]days[0][2]行索引1days[1][0]days[1][1]days[1][2]課件制作人:明日科技2.4.3初始化數組在聲明數組的同時也可以給數組元素一個初始值,一維數組初始化如下:二維數組初始化如下:intboy[]={2,45,36,7,69};或intboy[]=newint[5]booleanholidays[][]={{true,false,true},{false,true,false}};課件制作人:明日科技2.4.4數組長度如果需要獲得一維數組的長度,可以通過下面的方式:System.out.println(months.length); //輸出值為12System.out.println(members.length); //輸出值為4課件制作人:明日科技如果是通過下面的方式獲得二維數組的長度,得到的是二維數組的行數:如果需要獲得二維數組的列數,可以通過下面的方式:System.out.println(days.length); //輸出值為2System.out.println(holidays.length); //輸出值為2System.out.println(days[0].length); //輸出值為3System.out.println(holidays[0].length); //輸出值為3課件制作人:明日科技2.4.5使用數組元素一維數組在訪問數組中的元素時,需要同時指定數組標識符和元素在數組中的索引,例如訪問上面代碼中創建的數組,具體代碼如下:System.out.println(months[2]);System.out.println(members[2]);課件制作人:明日科技二維數組也是通過索引符訪問自己的元素,在訪問數組中的元素時,需要同時指定數組標識符和元素在數組中的索引,例如訪問2.4.2節代碼中創建的二維數組,輸出位于第2行、第3列的元素,具體代碼如下:System.out.println(days[1][2]);System.out.println(holidays[1][2]);《Java實用教程》課件制作人:明日科技Java實用教程第3章運算符與流程控制課件制作人:明日科技第
3
章運算符與流程控制3.1運算符3.2if語句3.3switch多分支語句3.4if語句與switch語句的區別3.5循環語句3.6跳轉語句課件制作人:明日科技3.1運算符Java語言中的運算符主要包括:賦值運算符算術運算符關系運算符邏輯運算符位運算符課件制作人:明日科技3.1.1賦值運算符賦值運算符的符號為“=”,它的作用是將數據、變量、對象賦值給相應類型的變量,例如下面的代碼:賦值運算符的運算順序為從右到左。例如在下面的代碼中,首先是計算表達式“9412+75”的和,然后將計算結果賦值給變量result:inti=75; //將數據賦值給變量longl=i; //將變量賦值給變量Objectobject=newObject(); //創建對象intresult=9412+75;課件制作人:明日科技賦值運算符如果兩個變量的值相同,也可以采用下面的方式完成賦值操作:intx,y; //聲明兩個int型變量x=y=0; //為兩個變量同時賦值課件制作人:明日科技3.1.2算術運算符算術運算符支持整數型數據和浮點數型數據的運算,當整數型數據與浮點數型數據之間進行算術運算時,Java會自動完成數據類型的轉換,并且計算結果為浮點數型。運算符功能舉例運算結果結果類型+加法運算10+7.517.5double-減法運算10–7.5F2.5Ffloat*乘法運算3*721int/除法運算21/3L7Llong%求余運算10%31int課件制作人:明日科技算術運算符在進行算術運算時,有兩種情況需要考慮:沒有小數參與運算有小數參與運算。課件制作人:明日科技沒有小數參與運算在對整數型數據或變量進行加法(+)、減法(-)和乘法(*)運算時,與數學中的運算方式完全相同,但是在整數之間進行除法(/)和求余(%)運算時需要注意幾個問題。注意除法運算注意求余運算關于0的問題課件制作人:明日科技除法運算在整數類型的數據和變量之間進行除法運算時,無論能否整除,運算結果都將是一個整數,而且這個整數不是通過四舍五入得到的,而是簡單地去掉小數部分。例如通過下面的代碼分別計算10除以3和5除以2,最終輸出的運算結果依次為3和2:System.out.println(10/3); //輸出運算結果為3System.out.println(5/2); //輸出運算結果為2課件制作人:明日科技求余運算在整數類型的數據和變量之間進行求余(%)運算時,運算結果是數學運算中余數。例如通過下面的代碼分別計算10%3、10%5和10%7,最終輸出的運算結果依次為1、0和3:System.out.println(10%3); //輸出運算結果為1System.out.println(10%5); //輸出運算結果為0System.out.println(10%7); //輸出運算結果為3課件制作人:明日科技關于0的問題與數學運算一樣,0可以做被除數,但是不可以做除數。當0做被除數時,無論是除法運算,還是求余運算,運算結果都為0。例如通過下面的代碼分別計算0除以6和0除以6求余數,最終輸出的運算結果均為0:注意:如果0做除數,雖然可以編譯成功,但是在運行時會拋出java.lang.ArithmeticException異常,即算術運算異常。System.out.println(0/6); //輸出運算結果為0System.out.println(0%6); //輸出運算結果為0課件制作人:明日科技有小數參與運算在對浮點數類型的數據或變量進行算術運算時,如果在算術表達式中含有double類型的數據或變量,則運算結果為double型,否則運算結果為float型。在對浮點數類型數據或變量進行算術運算時,計算機的計算結果可能會在小數點后包含n位小數,這些小數在有些時候并不是精確的,計算機的計算結果會與數學運算的結果存在一定的誤差,只能是盡量接近數學運算中的結果。課件制作人:明日科技有小數參與運算如果被除數為浮點型數據或變量,無論是除法運算,還是求余運算,0都可以做除數。如果是除法運算,當被除數是正數時,運算結果為Infinity,表示無窮大,當被除數是負數時,運算結果為-Infinity,表示無窮小;如果是求余運算,運算結果為NaN,表示非數字。例如下面的代碼:System.out.println(7.5/0); //輸出的運算結果為InfinitySystem.out.println(-7.5/0); //輸出的運算結果為-InfinitySystem.out.println(7.5%0); //輸出的運算結果為NaNSystem.out.println(-7.5%0); //輸出的運算結果為NaN課件制作人:明日科技3.1.3關系運算符關系運算符用于比較大小,運算結果為boolean型,當關系表達式成立時,運算結果為true,否則運算結果為false。運算符功能舉例結果可運算數據類型>大于'a'>'b'false整數、浮點數、字符<小于2<3.0true整數、浮點數、字符==等于'X'==88true所有數據類型!=不等于true!=truefalse所有數據類型>=大于或等于6.6>=8.8false整數、浮點數、字符<=小于或等于'M'<=88true整數、浮點數、字符要注意關系運算符“==”和賦值運算符“=”的區別!
課件制作人:明日科技3.1.4邏輯運算符邏輯運算符用于對boolean型數據進行運算,運算結果仍為boolean型。Java中的邏輯運算符包括:!(取反)^(異或)&(與)|(或)&&(簡潔與)||(簡潔或)下面將依次介紹各個運算符的用法和特點。課件制作人:明日科技取反運算符“!”運算符“!”用于對邏輯值進行取反運算,當邏輯值為true時,經過取反運算后運算結果為false,否則當邏輯值為false時,經過取反運算后運算結果則為true,例如下面的代碼:System.out.println(!true); //輸出結果為falseSystem.out.println(!false); //輸出結果為true課件制作人:明日科技異或運算符“^”運算符“^”用于對邏輯值進行異或運算,當運算符的兩側同時為true或false時,運算結果為false,否則運算結果為true。例如下面的代碼:System.out.println(true^true); //輸出的運算結果為falseSystem.out.println(true^false); //輸出的運算結果為trueSystem.out.println(false^true); //輸出的運算結果為trueSystem.out.println(false^false); //輸出的運算結果為false課件制作人:明日科技運算符“&&”和“&”運算符“&&”和“&”均用于邏輯與運算,當運算符的兩側同時為true時,運算結果為true,否則運算結果均為false。例如下面的代碼:System.out.println(true&true); //輸出結果為trueSystem.out.println(true&false); //輸出結果為falseSystem.out.println(false&true); //輸出結果為falseSystem.out.println(false&false); //輸出結果為falseSystem.out.println(true&&true); //輸出結果為trueSystem.out.println(true&&false); //輸出結果為falseSystem.out.println(false&&true); //輸出結果為falseSystem.out.println(false&&false); //輸出結果為false課件制作人:明日科技運算符“&&”和“&”的區別運算符“&&”為簡潔與運算符,運算符“&”為非簡潔與運算符,它們的區別如下:運算符“&&”只有在其左側為true時,才運算其右側的邏輯表達式,否則直接返回運算結果false。運算符“&”無論其左側為true或false,都要運算其右側的邏輯表達式,最后才返回運算結果。課件制作人:明日科技運算符“||”和“|”運算符“||”和“|”均用于邏輯或運算,當運算符的兩側同時為false時,運算結果為false,否則運算結果均為true,例如下面的代碼:System.out.println(true|true); //輸出的運算結果為trueSystem.out.println(true|false); //輸出的運算結果為trueSystem.out.println(false|true); //輸出的運算結果為trueSystem.out.println(false|false); //輸出的運算結果為falseSystem.out.println(true||true); //輸出的運算結果為trueSystem.out.println(true||false); //輸出的運算結果為trueSystem.out.println(false||true); //輸出的運算結果為trueSystem.out.println(false||false); //輸出的運算結果為false課件制作人:明日科技運算符“||”和“|”的區別運算符“||”為簡潔或運算符,運算符“|”為非簡潔或運算符,它們的區別如下:運算符“||”只有在其左側為false時,才運算其右側的邏輯表達式,否則直接返回運算結果true。運算符“|”無論其左側為true或false,都要運算其右側的邏輯表達式,最后才返回運算結果。課件制作人:明日科技3.1.5位運算符位運算是對操作數以二進制位為單位進行的操作和運算,運算結果均為整數型。位運算符又分為邏輯位運算符和移位運算符兩種。課件制作人:明日科技邏輯位運算符邏輯位運算符包括:“~”(按位取反)“&”(按位與)“|”(按位或)“^”(按位異或)它們用來對操作數進行按位運算,運算規則如下表所示。課件制作人:明日科技邏輯位運算符按位取反運算是將二進制位中的0修改為1,1修改為0;在進行按位與運算時,只有當兩個二進制位都為1時,結果才為1;在進行按位或運算時,只要有一個二進制位為1,結果就為1;在進行按位異或運算時,當兩個二進制位同時為0或1時,結果為0,否則結果為1。操作數x操作數y~xx&yx|yx^y001000011011100011110110課件制作人:明日科技移位運算符移位運算符包括:“<<”(左移,低位添0補齊)“>>”(右移,高位添符號位)“>>>”(無符號右移,高位添0補齊)它們用來對操作數進行移位運算。課件制作人:明日科技3.1.6對象運算符(instanceof)對象運算符用來判斷對象是否為某一類型,運算結果為boolean型,如果是則返回true,否則返回false,對象運算符的關鍵字為“instanceof”,它的用法為:對象標識符instanceof類型標識符例如:java.util.Datedate=newjava.util.Date();System.out.println(dateinstanceofjava.util.Date);//結果為trueSystem.out.println(dateinstanceofjava.sql.Date);//結果為false課件制作人:明日科技3.1.7其他運算符Java中除了前面介紹的幾類運算符外,還有一些不屬于上述類別的運算符,如下表所示。運算符說明運算結果類型++一元運算符,自動遞增與操作元的類型相同-
-一元運算符,自動遞減與操作元的類型相同?:三元運算符,根據“?”左側的邏輯值,決定返回“:”兩側中的一個值,類似if…else流程控制語句與返回值的類型相同[
]用于聲明、建立或訪問數組的元素數組類型.訪問類的成員或對象的實例成員若訪問的是成員變量,則類型與該成員變量相同;若訪問的是方法,則類型與該方法的返回值相同課件制作人:明日科技自動遞增、遞減運算符與C、C++類似,Java語言也提供了自動遞增與遞減運算符,其作用是自動將變量值加1或減1。它們既可以放在操作元的前面,也可以放在操作元的后面,根據運算符位置的不同,最終得到的結果也是不同的。放在操作元前面的自動遞增、遞減運算符,會先將變量的值加1,然后再使該變量參與表達式的運算課件制作人:明日科技自動遞增、遞減運算符放在操作元后面的遞增、遞減運算符,會先使變量參與表達式的運算,然后再將該變量加1。例如:intnum1=3;intnum2=3;inta=2+(++num1);//先將變量num1加1,然后再執行“2+4”intb=2+(num2++);//先執行“2+3”,然后再將變量num2加1課件制作人:明日科技三元運算符“?:”三元運算符“?:”的應用形式如下:三元運算符“?:”的運算規則為:若邏輯表達式的值為true,則整個表達式的值為表達式1的值,否則為表達式2的值。例如:這段代碼的輸出結果為“庫存量:12”邏輯表達式?表達式1:表達式2intstore=12;System.out.println(store<=5?"庫存不足!":"庫存量:"+store);課件制作人:明日科技3.1.8運算符的優先級別
及結合性當在一個表達式中存在多個運算符進行混合運算時,會根據運算符的優先級別來決定運算順序,優先級最高的是括號“()”,它的使用與數學運算中的括號一樣,只是用來指定括號內的表達式要優先處理。例如:intnum=8*(4+6); //num為80課件制作人:明日科技3.1.8運算符的優先級別
及結合性對于處在同一層級的運算符,則按照它們的結合性,即“先左后右”還是“先右后左”的順序來執行。Java中除賦值運算符的結合性為“先右后左”外,其他所有運算符的結合性都是“先左后右”。關于運算符優先級的順序,如下表所示。課件制作人:明日科技優先級說明運算符最高括號()
正負號+-
一元運算符++--!~乘除運算*/%
加減運算+-
移位運算<<>>>>>
比較大小<><=>=比較是否相等==!=
按位與運算&
按位異或運算^
按位或運算|
邏輯與運算&&
邏輯或運算||
三元運算符?:
最低賦值及復合賦值=*=/=%=+=-=>>=>>>=<<<=&=^=|=課件制作人:明日科技3.2if語句if語句可分為以下3種形式:(1)簡單的if條件語句(2)if-else條件語句(3)if-elseif多分支條件語句課件制作人:明日科技3.2.1簡單的if條件語句
簡單的if條件語句就是對某種條件做出相應的處理。通常表現為“如果滿足某種情況,那么就進行某種處理”。它的一般形式為:例如:如果今天下雨,我們就不出去玩。條件語句為:if(表達式){
語句序列}if(今天下雨){
我們就不出去玩}課件制作人:明日科技簡單的if條件語句表達式是必要參數。其值可以由多個表達式組成,但是其最后結果一定是boolean類型,也就是其結果只能是true或false。語句序列是可選參數。包含一條或多條語句,當表達式的值為true時執行這些語句。如果該語句只有一條語句,大括號也可以省略不寫。下面的代碼都是正確的。if(今天下雨);if(今天下雨)
我們就不出去玩;課件制作人:明日科技簡單的if條件語句如圖所示,if條件語句,在條件表達式的結果為true時,將執行語句序列。課件制作人:明日科技3.2.2if...else條件語句if…else條件語句也是條件語句的一種最通用的形式。else是可選的。通常表現為“如果滿足某種條件,就做某種處理,否則做另一種處理”。它的一般形式為:if(表達式){
語句序列1}else{
語句序列2}課件制作人:明日科技if...else條件語句語句序列1是可選參數。由一條或多條語句組成,當表達式的值為true時執行這些語句。語句序列2也是可選參數。包含一條或多條語句,當表達式的值為false時執行這些語句。例如:如果指定年為閏年,二月份為29天,否則二月份為28天。條件語句為:if(今年是閏年){
二月份為29天}else{
二月份為28天}課件制作人:明日科技if...else條件語句如圖所示,if…else語句在表達式的值為true時,執行語句序列1,否則,執行語句序列2。課件制作人:明日科技3.2.3if...elseif多分支語句if…elseif多分支語句用于針對某一事件的多種情況進行處理。通常表現為“如果滿足某種條件,就進行某種處理,否則如果滿足另一種條件才執行另一種處理”。它的一般形式為:if(表達式1){
語句序列1}elseif(表達式2){
語句序列2}else{
語句序列n}課件制作人:明日科技if...elseif多分支語句語句序列1在表達式1的值為true時被執行,語句序列2在表達式2的值為true時被執行,語句序列n在表達式1的值為false,表達式2的值也為false時被執行。if…elseif多分支語句執行過程如下圖所示。課件制作人:明日科技if...elseif多分支語句例如:如果今天是星期一,上數學課;如果今天是星期二,上語文課;否則上自習。條件語句為:if(今天是星期一){
上數學課}elseif(今天是星期二){
上語文課}else{
上自習}課件制作人:明日科技3.2.4if語句的嵌套if語句的嵌套就是在if語句中又包含一個或多個if語句。這樣的語句一般都用在比較復雜的分支語句中。它的一般形式為右側的語句格式。在嵌套的語句中最好不要省略大括號。以提高代碼的可讀性。if(表達式1){if(表達式2){
語句序列1}else{
語句序列2}}else{if(表達式3){
語句序列3}else{
語句序列4}}課件制作人:明日科技3.3switch多分支語句switch(表達式){case常量表達式1:語句序列1[break;]case常量表達式2:語句序列2[break;]
……case常量表達式n:語句序列n[break;]default:語句序列n+1[break;]}switch語句是多分支的開關語句。根據表達式的值來執行輸出的語句。這樣的語句一般用于多條件多值的分支語句中。右側是它的語法格式:break用于結束switch語句。課件制作人:明日科技switch多分支語句switch語句中表達式的值必須是整型或字符型。即int、short、byte和char型。Switch會根據表達式的值,執行符合常量表達式的語句序列。當表達式的值沒有匹配的常量表達式時,則執行default定義的語句序列,即“語句序列n+1”。default是可選參數,如果沒有該參數,并且所有常量值與表達式的值不匹配,那么switch語句就不會進行任何操作。該語句執行流程如右圖所示
課件制作人:明日科技3.4if語句和switch語句的區別
if語句和switch語句可以從使用的效率上來進行區別,也可以從實用性角度去區分。如果從使用的效率上進行區分,在對同一個變量的不同值作條件判斷時,使用switch語句的效率相對更高一些,尤其是判斷的分支越多越明顯。如果從語句的實用性的角度去區分,那switch語句肯定不如if語句。if語句是應用最廣泛和最實用的語句。課件制作人:明日科技3.5循環語句循環語句就是重復執行某段程序代碼,直到滿足特定條件為止。在Java語言中循環語句有以下3種形式:for循環語句while循環語句do-while循環語句課件制作人:明日科技3.5.1for循環語句
for語句是最常用的循環語句,一般用在循環次數已知的情況下。它的一般形式為:初始化語句用于初始化循環體變量。循環條件用于判斷是否繼續執行循環體。其只能是true或false。迭代語句用于改變循環條件的語句。語句序列稱為循環體,當循環條件的結果為true時,將重復執行。for(初始化語句;循環條件;迭代語句){
語句序列}課件制作人:明日科技for循環語句for循環語句的流程首先執行初始化語句,然后判斷循環條件,當循環條件為true時,就執行一次循環體,最后執行迭代語句,改變循環變量的值。這樣就結束了一輪的循環。接下來進行下一次循環(不包括初始化語句),直到循環條件的值為false時,才結束循環。for循環語句執行過程如圖所示。課件制作人:明日科技3.5.2while循環語句while語句是用一個表達式來控制循環的語句。它的一般形式為:表達式用于判斷是否執行循環,它的值只能是true或false。當循環開始時,首先會執行表達式,如果表達式的值為true,則會執行語句序列,也就是循環體。當到達循環體的末尾時,會再次檢測表達式,直到表達式的值為false,結束循環。while(表達式){
語句序列}課件制作人:明日科技while循環語句while語句執行過程如圖所示。課件制作人:明日科技3.5.3do...while循環語句do..while循環語句稱為后測試循環語句,它利用一個條件來控制是否要繼續重復執行這個語句。它的一般形式為:do…while循環語句的執行過程與while循環語句有所區別。do…while循環至少被執行一次,它先執行循環體的語句序列,然后再判斷是否繼續執行。do{
語句序列}while(表達式);課件制作人:明日科技do...while循環語句do…while循環執行語句如圖所示。課件制作人:明日科技3.5.4循環的嵌套循環的嵌套就是在一個循環體內又包含另一個完整的循環結構,而在這個完整的循環體內還可以嵌套其他的循環循結構。循環嵌套很復雜,在for語句、while語句和do…while語句中都可以嵌套。常用的嵌套循環包括:for循環語句的嵌套while循環語句嵌套do…whi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CRIA 17003.3-2024功能鞋第3部分:防水評價技術規范
- T/CNFIA 217-2024干純(低糖)黃酒
- 上海招聘筆試題目及答案
- 信息產品免送維修維護協議7篇
- 上海安裝監理試題及答案
- 輪臺公司招聘合同范本2篇
- 房地產商合同廣東集體建設用地使用權出租合同3篇
- 運輸合同-貨物運輸委托合同2篇
- 日本平面設計師藝術解析
- 電梯安全急救指南
- YOLO目標檢測算法的改進與優化
- 2024年安徽省淮南市田家庵區小升初數學試卷(空白卷)
- 龍巖市2025年高中高三畢業班五月教學質量檢政治試卷(含答案)
- 巴黎奧運會試題及答案
- 《液相色譜-質譜聯用》課件
- 大數據與商業決策的應用試題及答案
- 展覽館展示中心項目可行性研究報告
- 學做鹵菜簽合同協議
- GB/T 15340-2025天然、合成生膠取樣及其制樣方法
- 2025年北京市海淀區高三語文一模議論文《道不遠人》范文
- 公路法知識培訓課件
評論
0/150
提交評論