java程序設(shè)計任務(wù)式教程 課件 5-面向?qū)ο缶幊踢M階_第1頁
java程序設(shè)計任務(wù)式教程 課件 5-面向?qū)ο缶幊踢M階_第2頁
java程序設(shè)計任務(wù)式教程 課件 5-面向?qū)ο缶幊踢M階_第3頁
java程序設(shè)計任務(wù)式教程 課件 5-面向?qū)ο缶幊踢M階_第4頁
java程序設(shè)計任務(wù)式教程 課件 5-面向?qū)ο缶幊踢M階_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

JaVa程序設(shè)計任務(wù)式教程01任務(wù)5-1樂自助餐飲訂單02任務(wù)5-2樂自助食材備貨03任務(wù)5-3增強型文件記事本目錄CONTNETS單元五面向?qū)ο缶幊踢M階單元目標能夠使用集合類存儲和操作數(shù)據(jù),例如添加、刪除、查找、遍歷等。能夠使用迭代器遍歷集合元素。能夠使用foreach循環(huán)遍歷集合、枚舉。能夠使用泛型定義和使用集合類,提高代碼的可讀性和安全性。能夠熟練使用集合框架進行數(shù)據(jù)組織和管理,包括列表、集合和映射。能夠使用IO流進行基本的文件操作,如讀取、寫入和文件管理。培養(yǎng)良好的編程習慣,能夠根據(jù)實際需求選擇合適的集合類。發(fā)展邏輯思維和問題解決能力,提高代碼的效率和可讀性。培養(yǎng)數(shù)據(jù)安全意識,增強代碼的安全性,避免類型錯誤。知識目標能力目標素養(yǎng)目標學習目標熟悉JavaAPI中常用類的功能StringBuffe、Math、Random等。掌握包裝類的使用方法。理解并掌握集合、泛型、枚舉類的使用方法理解Lambda表達式并能夠使用Lambda表達式簡化代碼。掌握IO流操作文件的使用方法01任務(wù)5-1樂自助餐飲訂單包裝類String類、StringBuffer和StringBuilder類日期時間類Math類和Random類Lambda表達式任務(wù)5-1樂自助餐飲訂單-Java常用API包裝類在Java中“一切皆對象”,很多方法都需要引用類型的對象,但是8種基本數(shù)據(jù)類型卻不是面向?qū)ο蟮?,這在實際使用時會存在很多的不便,Java中8種基本數(shù)據(jù)類型存在其對應(yīng)類的類型,也就是把基本數(shù)據(jù)類型包裝成類。基本類型對應(yīng)的包裝類如表基本數(shù)據(jù)類型包裝類intIntegercharCharacterfloatFloatdoubleDoublebyteBytelongLongshortShortbooleanBoolean列舉的8種基本數(shù)據(jù)類型及其對應(yīng)的包裝類。除了Integer和Character類外,其他對應(yīng)的包裝類的名稱都與其基本數(shù)據(jù)類型一致,只不過首字母需要大寫任務(wù)5-1樂自助餐飲訂單-Java常用API包裝類在包裝類和基本數(shù)據(jù)類型進行轉(zhuǎn)換時,需引入了自動裝箱(Autoboxing)和自動拆箱(AutoUnboxing)的概念,其中自動裝箱是指將基本數(shù)據(jù)類型的變量賦給對應(yīng)的包裝類變量;反之,拆箱是指將包裝類對象類型直接賦給一個對應(yīng)的基本數(shù)據(jù)類型變量任務(wù)5-1樂自助餐飲訂單-Java常用API包裝類如例5-1,以Integer和Character包裝類,演示裝箱、拆箱操作,詳見AutoboxingUnboxingDemo.java1publicclassAutoboxingUnboxingDemo{2 publicstaticvoidmain(String[]args){3 //自動裝箱示例-基本類型轉(zhuǎn)換為包裝類對象4 IntegerintObject=100;//int被自動裝箱為IntegerCharactercharObject='A';//char被自動裝箱為Character6 //輸出裝箱后的對象7 System.out.println("Integer對象:"+intObject);8 System.out.println("Character對象:"+charObject);9 //自動拆箱示例-包裝類對象轉(zhuǎn)換為基本類型10 intintPrimitive=intObject;//Integer被自動拆箱為intcharcharPrimitive=charObject;//Character被自動拆箱為char12 //輸出拆箱后的基本類型13 System.out.println("int基本類型:"+intPrimitive);14 System.out.println("char基本類型:"+charPrimitive);15 IntegernullInteger=null;16 //null處理,拋出NullPointerException17 if(nullInteger!=null){18 intsafeIntPrimitive=nullIValue();System.out.println("安全的int基本類型:"+safeIntPrimitive);20 }else{System.out.println("Integer對象是null,

無法拆箱");22 }23 }24}任務(wù)5-1樂自助餐飲訂單-Java常用API包裝類在上面的代碼中,首先演示了自動裝箱,將基本類型的int和char值分別賦值給Integer和Character類型的變量,編譯器會自動進行裝箱操作。接著,演示了自動拆箱,將Integer和Character類型的對象賦值給基本類型的變量,編譯器會自動進行拆箱操作。值得注意的是,如果包裝類對象是null,直接進行拆箱將會拋出NullPointerException。為了避免這個問題,在進行拆箱前應(yīng)該檢查對象是否為null。然后進行拆箱處理。裝箱拆箱操作的運行結(jié)果任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類String、StringBuffer和StringBuilder是用于處理字符串的三個主要類。String用于表示不可變的字符序列,一旦創(chuàng)建,字符串的內(nèi)容就不能改變;StringBuffer、StringBuilder類用于表示可變的字符序列,字符串的內(nèi)容可以在運行時改變。任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類String是字符串常量類,在使用String類時,首先需要對String類進行初始化操作,可過以下兩種方式對String類進行初始化,具體如下:1、使用字符串常量直接初始化一個String對象,具體代碼如下:Stringstr="isstring";這種方法創(chuàng)建字符串對象時,不一定分配內(nèi)存,如果內(nèi)存中已經(jīng)存在常量“isstring”,則str直接引用即可,不存在時才創(chuàng)建。任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類String是字符串常量類,在使用String類時,首先需要對String類進行初始化操作,可過以下兩種方式對String類進行初始化,具體如下:2、使用String的構(gòu)造方法初始化字符串對象,String類的構(gòu)造方法如表方法聲明功能描述String()創(chuàng)建一個內(nèi)容為空的字符串對象String(Stringvalue)根據(jù)指定的字符串內(nèi)容創(chuàng)建對象String(char[]value)根據(jù)指定的字符數(shù)組創(chuàng)建對象String(char[]intstartIndex,intnumChars)根據(jù)指定的字符數(shù)組,以字符串數(shù)組中startIndex位置開始的numChars個字符,創(chuàng)建對象String(byte[]bytes)根據(jù)指定的字節(jié)數(shù)組創(chuàng)建對象String(byte[]bytes,intoffset,intlength)根據(jù)指定的字節(jié)數(shù)組,以字節(jié)數(shù)組offset位置開始的length個字節(jié),創(chuàng)建對象任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類如例5-2,通過一個案例來學習String類的使用,詳見StringDemo.java……4//直接賦值5Stringstr1="Hello,World!";6System.out.println("直接賦值:"+str1);7//使用字符串變量賦值8Stringstr2=newString("Hello,World!");9System.out.println("字符串變量賦值:"+str2);10//使用字符數(shù)組賦值11char[]charArray={'H','e','l','l','o',',','','W','o','r','l','d','!'};12Stringstr3=newString(charArray);13System.out.println("字符數(shù)組賦值:"+str3);14//使用字符數(shù)組的一部分賦值15Stringstr4=newString(charArray,0,5);16System.out.println("字符數(shù)組的一部分賦值:"+str4);17//使用字節(jié)數(shù)組賦值18byte[]byteArray={72,101,108,108,111,44,32,87,111,114,108,100,33};19Stringstr5=newString(byteArray);20System.out.println("字節(jié)數(shù)組賦值:"+str5);21//使用字節(jié)數(shù)組的一部分賦值22Stringstr6=newString(byteArray,0,8);23System.out.println("字節(jié)數(shù)組的一部分賦值:"+str6);……任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類上述代碼種分別使用直接賦值和構(gòu)造方法創(chuàng)建字符串對象,演示了String用法,運行結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類在實際應(yīng)用開發(fā)中,字符串的基本操作有連接、替換和刪除等,如表操作說明連接字符串使用+運算符或String.concat()方法連接兩個或多個字符串替換字符串使用replace()方法替換字符串中的子串刪除字符串使用delete()方法刪除字符串中的子串插入字符串使用insert()方法在字符串中的指定位置插入字符串反轉(zhuǎn)字符串使用reverse()方法反轉(zhuǎn)字符串中的字符順序獲取字符串長度使用length()方法獲取字符串的長度獲取字符串子串使用substring()方法獲取字符串的子串比較字符串使用equals()方法比較兩個字符串是否相等,使用compareTo()方法比較兩個字符串的大小查找字符串使用indexOf()和lastIndexOf()方法查找字符串中的子串或字符分割字符串使用split()方法根據(jù)指定分隔符將字符串分割成數(shù)組轉(zhuǎn)換大小寫使用toLowerCase()和toUpperCase()方法將字符串轉(zhuǎn)換為小寫或大寫字符串與數(shù)值的轉(zhuǎn)換使用valueOf()方法將數(shù)值轉(zhuǎn)換為字符串,使用Integer.parseInt()等方法將字符串轉(zhuǎn)換為數(shù)值任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類如例5-3,使用字符串的連接、替換、刪除和分割基本操作對一個字符串進行處理,詳見StringProcessingDemo.java……4//初始字符串5StringoriginalString="Hello,World!";6//連接字符串7StringconcatenatedString=originalString+"新的征程即將開始。";8System.out.println("連接后的字符串:"+concatenatedString);9//替換字符串10StringreplacedString=concatenatedString.replace("World","Java");11System.out.println("替換后的字符串:"+replacedString);12//刪除字符串13StringdeletedString=replacedString.replace("Java","");14System.out.println("刪除后的字符串:"+deletedString);15//分割字符串16String[]splitStrings=deletedString.split(",");17System.out.println("分割后的字符串數(shù)組:");18for(Strings:splitStrings){19 System.out.println(s);}……任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-String類上述代碼演示了字符串的連接、替換、刪除和分割的基本用法,其運用結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-StringBuffer和StringBuilder類StringBuffer和StringBuilder類均表示可變字符串,在用法上也基本相同,這些操作都不會創(chuàng)建新的對象,而是在原對象上進行修改。兩者的主要區(qū)別在于線程安全性:StringBuilder不是線程安全的,它是單線程環(huán)境下使用的一個高效選擇。在單線程環(huán)境中,使用StringBuilder可以避免同步的開銷,從而提高性能。StringBuffer是線程安全的,它可以在多線程環(huán)境中安全地被共享和修改。當操作需要被多個線程訪問時,使用StringBuffer可以防止并發(fā)修改時可能出現(xiàn)的ConcurrentModificationException。任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-StringBuffer和StringBuilder類StringBuffer和StringBuilder類提供了一系列的方法,具體如表方法說明append(Stringstr)將指定的字符串追加到當前字符串末尾append(char[]str)將指定的字符數(shù)組中的字符追加到當前字符串末尾append(char[]str,intoffset,intlen)將指定字符數(shù)組中的子數(shù)組追加到當前字符串末尾insert(intoffset,Stringstr)在指定位置插入指定的字符串insert(intoffset,char[]str)在指定位置插入指定的字符數(shù)組insert(intoffset,char[]str,intfromIndex,inttoIndex)在指定位置插入指定字符數(shù)組中的子數(shù)組delete(intstart,intend)刪除指定位置之間的字符串deleteCharAt(intindex)刪除指定位置的字符replace(intstart,intend,Stringstr)替換指定位置之間的字符串reverse()反轉(zhuǎn)字符串中的字符順序setCharAt(intindex,charch)設(shè)置指定位置的字符substring(intstart)返回從指定位置開始的子字符串substring(intstart,intend)返回從指定位置開始到指定位置結(jié)束的子字符串toString()返回當前字符串的String對象表示length()返回當前字符串的長度charAt(intindex)返回指定位置的字符任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-StringBuffer和StringBuilder類如例5-4,演示StringBuffer常見操作,詳見StringBufferDemo.java1 publicclassStringBufferDemo{2 publicstaticvoidmain(String[]args){3 StringBuffernewstr=newStringBuffer("新的征程,必有新的光輝");4 //追加5 newstr.append("!").append("").append("加油!");6 System.out.println("追加后:"+newstr);7 //替換8 newstr.replace(0,2,"炫麗");9 System.out.println("替換后:"+newstr);10 //刪除11 newstr.delete(13,17);12 System.out.println("刪除后:"+newstr);13 //插入14 newstr.insert(10,"的");15 System.out.println("插入后:"+newstr);16 //反轉(zhuǎn)17 newstr.reverse();18 System.out.println("反轉(zhuǎn)后:"+newstr);19 }20 }任務(wù)5-1樂自助餐飲訂單-Java常用APIString類、StringBuffer和StringBuilder類-StringBuffer和StringBuilder類上述代碼分別對指定的字符串進行了追加、替換、刪除、插入、反轉(zhuǎn)操作,其運行結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類Java8引入了一個全新的日期和時間處理API,取代了之前的java.util.Date和java.util.Calendar類。比如,在新的java.time包中的LocalDate、LocalTime、LocalDateTime,這些類分別表示日期、時間和日期加時間;DateTimeFormatter,用于格式化和解析日期和時間;Duration和Period,分別表示以年月日,秒和納秒為單位兩個時間點之間的時間間隔。任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalDate類LocalDate類是一個不可變的日期時間類,它包含年、月、日三個屬性。LocalDate類可以使用LocalDate.of(intyear,intmonth,intdayOfMonth)靜態(tài)方法,傳入年、月、日的整數(shù)值來創(chuàng)建一個LocalDate實例,也可以使用LocalDate.now()方法來獲取當前日期。其語法格式如下://使用靜態(tài)方法創(chuàng)建LocalDate實例LocalDatedate1=LocalDate.of(2024,8,15);//獲取當前日期LocalDatedate2=LocalDate.now();任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalTime類LocalTime類是一個不可變的時間類,用于表示一個具體的時間,例如上午9點30分。LocalTime類可以使用LocalTime.of(inthour,intminute,intsecond)靜態(tài)方法,傳入小時、分、秒的整數(shù)值來創(chuàng)建一個LocalTime實例,可以使用LocalTime.now()方法來獲取當前時間。其語法格式如下://獲取當前時間LocalTimetime1=LocalTime.now();//使用靜態(tài)方法創(chuàng)建LocalTime實例LocalTimetime2=LocalTime.of(23,8,15);任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalTime類LocalTime可以用于時間加減、比較、計算時差、格式與解析時間等操作方法,詳見表方法聲明功能描述時間加減LocalTime.plusHours(longhours)將時間增加指定的小時數(shù)LocalTime.minusHours(longhours)將時間減少指定的小時數(shù)LocalTime.plusMinutes(longminutes)將時間增加指定的分鐘數(shù)LocalTime.minusMinutes(longminutes)將時間減少指定的分鐘數(shù)LocalTime.plusSeconds(longseconds)將時間增加指定的秒數(shù)LocalTime.minusSeconds(longseconds)將時間減少指定的秒數(shù)獲取時間LocalTime.getHour()獲取小時LocalTime.getMinute()獲取分鐘LocalTime.getSecond()獲取秒格式化與解析LocalTime.format(DateTimeFormatterformatter)將LocalTime對象格式化為字符串LocalTime.parse(CharSequencetext)將字符串解析為LocalTime對象計算時差LocalTime.until(LocalTimeendExclusive,ChronoUnitunit)使用指定的兩個時間,計算時差比較LocalTime.isBefore(LocalTimeother)判斷當前時間是否早于另一個時間LocalTime.isAfter(LocalTimeother)判斷當前時間是否晚于另一個時間LocalTime.isEqual(LocalTimeother)判斷當前時間是否等于另一個時間LocalTime.isBefore(LocalTimeother)判斷當前時間是否早于另一個時間LocalTime.isAfter(LocalTimeother)判斷當前時間是否晚于另一個時間LocalTime.isEqual(LocalTimeother)判斷當前時間是否等于另一個時間任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalDateTime類LocalDateTime類是一個不可變的時間類,用于表示一個具體的日期和時間,該類實際是LocalDate和LocalTime的組合。LocalDateTime類可以使用LocalTime.of(LocalDatedate,LocalTimetime)靜態(tài)方法,傳入日期和時間的整數(shù)值來創(chuàng)建一個LocalDateTime實例,可以使用LocalDateTime.now()方法來獲取當前日期和時間。任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalDateTime類LocalDateTime可以用于時間加減、比較、計算時差、格式與解析時間等操作方法,詳見表方法聲明功能描述時間加減LocalDateTime.plusDays(longdays)將日期時間增加指定天數(shù)LocalDateTime.minusDays(longdays)將日期時間減少指定天數(shù)LocalDateTime.plusHours(longhours)將日期時間增加指定小時數(shù)LocalDateTime.minusHours(longhours)將日期時間減少指定小時數(shù)LocalDateTime.plusMinutes(longminutes)將日期時間增加指定分鐘數(shù)LocalDateTime.minusMinutes(longminutes)將日期時間減少指定分鐘數(shù)LocalDateTime.plusSeconds(longseconds)將日期時間增加指定秒數(shù)LocalDateTime.minusSeconds(longseconds)將日期時間減少指定秒數(shù)獲取日期時間LocalDateTime.toLocalDate()獲取日期部分LocalDateTime.toLocalTime()獲取時間部分LocalDateTime.getYear()獲取年份LocalDateTime.getMonth()獲取月份LocalDateTime.getDayOfMonth()獲取一個月中的第幾天LocalDateTime.getHour()獲取小時LocalDateTime.getMinute()獲取分鐘LocalDateTime.getSecond()獲取秒任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-LocalDateTime類LocalDateTime可以用于時間加減、比較、計算時差、格式與解析時間等操作方法,詳見續(xù)表方法聲明功能描述格式化與解析LocalDateTime.format(DateTimeFormatterformatter)將LocalDateTime對象格式化為字符串LocalDateTime.parse(CharSequencetext)將字符串解析為LocalDateTime對象計算時差LocalDateTime.until(LocalDateTimeendExclusive,ChronoUnitunit)使用指定的兩個日期和時間,計算時差比較LocalDateTime.isBefore(LocalDateTimeother)判斷當前日期時間是否早于另一個日期時間LocalDateTime.isAfter(LocalDateTimeother)判斷當前日期時間是否晚于另一個日期時間LocalDateTime.isEqual(LocalDateTimeother)判斷當前日期時間是否等于另一個日期時間任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-ZoneId類ZoneId類用于表示特定的時區(qū)標識符,為日期時間對象提供時區(qū)信息。如“Asia/Shanghai”或“America/New_York”,也可以代表一個時區(qū)偏移量,如“+08:00”。也可以將ZoneId對象從一個時區(qū)轉(zhuǎn)換為另一個時區(qū)其語法格式如下://指定時區(qū)ID來獲取ZoneIdZoneId.of("Asia/Shanghai")//通過ZoneOffset對象獲取ZoneIdZoneId.ofOffset("+08:00",ZoneOffset.of("+08:00"))任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-ZonedDateTime類ZonedDateTime類,包含了時區(qū)和日期時間的組合,用于表示特定時區(qū)中的日期和時間。可以用于跨時區(qū)的時間比較和操作。其語法格式如下://通過ZoneId對象來創(chuàng)建ZonedDateTimeZonedDateTime.of(LocalDateTime.now(),ZoneId.of("Asia/Shanghai"))//通過Instant對象和ZoneId對象來創(chuàng)建ZonedDateTimeZonedDateTime.ofInstant(Instant.now(),ZoneId.of("Asia/Shanghai"))任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-ZonedDateTime類如例5-5,通過一個案例演示以上日期和時間類用法,詳見TimeDemo.java……10//獲取當前日期和時間11LocalDatetoday=LocalDate.now();12LocalTimenow=LocalTime.now();13LocalDateTimedateTime=LocalDateTime.now();14System.out.println("今天是:"+today);15System.out.println("現(xiàn)在是:"+now);16System.out.println("當前日期時間:"+dateTime);17//創(chuàng)建指定日期和時間18LocalDatebirthday=LocalDate.of(1999,7,1);19LocalTimemeetingTime=LocalTime.of(10,30);20System.out.println("生日:"+birthday);21System.out.println("會議時間:"+meetingTime);22//日期計算23LocalDatetomorrow=today.plusDays(1);24System.out.println("明天是:"+tomorrow);……任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-ZonedDateTime類如例5-5,通過一個案例演示以上日期和時間類用法,詳見TimeDemo.java……25//時區(qū)轉(zhuǎn)換26ZoneIdshanghaiZone=ZoneId.of("Asia/Shanghai");27ZonedDateTimeshanghaiDateTime=LocalDateTime.now().atZone(shanghaiZone);28System.out.println("上海時間:"+shanghaiDateTime);29//格式化日期時間30DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss");31StringformattedDateTime=dateTime.format(formatter);32System.out.println("格式化日期時間:"+formattedDateTime);33//解析日期時間34LocalDateTimeparsedDateTime=LocalDateTime.parse("2024-06-0610:30:30",formatter);35System.out.println("解析指定日期時間:"+parsedDateTime);……任務(wù)5-1樂自助餐飲訂單-Java常用API日期時間類-日期時間和時區(qū)類-ZonedDateTime類上述代碼中,首先導入程序所需的java.time包中的類,然后使用Java中的日期和時間類來獲取當前日期和時間、創(chuàng)建特定日期和時間、進行日期計算、時區(qū)轉(zhuǎn)換、格式化和解析日期時間,日期時間類操作運行結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Math類Math類用于執(zhí)行基本的數(shù)學運算,如取絕對值、取整、計算最大值和最小值、計算冪、生成隨機數(shù)等。此外,它還提供了三角函數(shù)和角度與弧度之間的轉(zhuǎn)換方法,方便進行更復雜的數(shù)學計算。Math類位于java.lang包中,由JVM自動將該包中的類導入應(yīng)用程序中。Math類中,大致可以分為3類:一類表示常量如Math.PI;一類表示計算用途的方法如floor(doublea),pow(doublea,doubleb);一類用于轉(zhuǎn)換操作如toRadians(doubleangdeg)。Math類的構(gòu)造方法是私有的,因此它不能被實例化,另外,Math類是用final修飾的,因此不能有子類任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Math類Math類常用方法,如表方法聲明功能描述staticintabs(inta)返回絕對值staticdoubleceil(doublea)返回大于或等于參數(shù)的最小整數(shù)staticdoublefloor(doublea)返回小于或等于參數(shù)的最大整數(shù)staticintmax(inta,intb)返回兩個參數(shù)的較大值staticintmin(inta,intb)返回兩個參數(shù)的較小值random()生成一個大于等于0.0且小于1.0的隨機double值staticlonground(doublea)返回四舍五入的整數(shù)值staticdoublesqrt(doublea)平方根函數(shù)staticdoublepow(doublea,doubleb)冪運算任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Math類如例5-6,通過一個簡單的數(shù)學計算案例演示Math類常用方法,詳見MathDemo.java1publicclassMathDemo{2 publicstaticvoidmain(String[]args){3 //基本數(shù)學運算4 doublenumber=4.0;5 //輸出結(jié)果6 System.out.println("絕對值:"+Math.abs(number));7 System.out.println("平方根:"+Math.sqrt(number));8 System.out.println("冪:"+Math.pow(number,2));9 System.out.println("四舍五入:"+Math.round(number));10 System.out.println("正弦:"+Math.sin(Math.PI/2));11 System.out.println("正切:"+Math.tan(Math.PI/4));12 System.out.println("自然對數(shù):"+Math.log(Math.E));13 System.out.println("指數(shù):"+Math.exp(Math.PI));14 System.out.println("隨機數(shù):"+Math.random());15 }16}任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Math類以上代碼的運行結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Random類Random類位于java.util包中,可以產(chǎn)生boolean、int、long、float、byte數(shù)組以及double類型的隨機數(shù),這是它與random()方法最大的不同之處該類常用的有如下兩個構(gòu)造方法。Random():該構(gòu)造方法使用一個和當前系統(tǒng)時間對應(yīng)的數(shù)字作為種子數(shù),然后使用這個種子數(shù)構(gòu)造Random對象。Random(longseed):使用單個long類型的參數(shù)創(chuàng)建一個新的隨機數(shù)生成器任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Random類Random類常用方法如表方法申明功能描述publicbooleannextBoolean()生成一個隨機的boolean值,true和false的值幾率相等publicdoublenextDouble()生成一個隨機的double值,數(shù)值介于[0,1.0)之間publicintnextInt()生成一個隨機的int的區(qū)間值,也就是-231

到231-1之間publicintnextInt(intn)生成一個隨機的int值,該值介于[0,n)的區(qū)間publicvoidsetSeed(longseed)重新設(shè)置Random對象中的種子數(shù)任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Random類如例5-7,通過一個統(tǒng)計隨機數(shù)出現(xiàn)次數(shù)的案例演示Random類使用,詳見RandomDemo.java4intN=100;//給定的整數(shù)N5Randomrandom=newRandom();6int[]randomInts=newint[N];7int[]counts=newint[101];//數(shù)組大小為101,因為整數(shù)范圍是1到1009for(inti=0;i<N;i++){8//生成N個隨機整數(shù)并統(tǒng)計每個整數(shù)出現(xiàn)的次數(shù)10 intrandomInt=random.nextInt(100)+1;//生成介于1到100之間的隨機整數(shù)11 randomInts[i]=randomInt;12 counts[randomInt]++;13}14intmaxCount=0;//找出出現(xiàn)次數(shù)最多的前三個整數(shù)及其對應(yīng)的次數(shù)15int[]topThree=newint[3];16for(inti=1;i<=100;i++){17 if(counts[i]>maxCount){18 maxCount=counts[i];19 topThree[0]=i;20 topThree[1]=0;21 topThree[2]=0;22 }elseif(counts[i]==maxCount){23 if(topThree[2]==0){24 topThree[2]=i;25 }26 }27}任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Random類在上述代碼中,使用了一個int[]randomInts來存儲生成的隨機整數(shù),以及一個int[]counts來記錄每個整數(shù)出現(xiàn)的次數(shù)。然后,我們使用一個循環(huán)來找出出現(xiàn)次數(shù)最多的前三個整數(shù)及其對應(yīng)的次數(shù)。本次運行的結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Lambda表達式Lambda表達式是一種匿名函數(shù),沒有名稱,但可以像普通函數(shù)一樣接收參數(shù)和返回值。它由箭頭“->”連接一個或多個參數(shù)和一個表達式或代碼塊組成,支持函數(shù)式編程,允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進方法中)。Lambda表達式可以用于集合操作、事件處理等各種場景。語法格式如下:(parameters)->expression或(parameters)->{statements;}上述語法格式中,parameters是參數(shù)列表,expression或{statements;}是Lambda表達式的主體。如果只有一個參數(shù),可以省略括號;如果沒有參數(shù),也需要空括號。任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Lambda表達式如例5-8,通過一個使用lambda表達式操作數(shù)組的排序和打印案例,演示lambda表達式的基本用法和函數(shù)式編程的用法。詳見LambdaSortAndPrintExample.java1. importjava.util.Arrays;2. publicclassLambdaSortAndPrintExample{3. publicstaticvoidmain(String[]args){4. //定義一個Integer數(shù)組5. Integer[]numbers={5,2,9,1,5,6};6. //使用Lambda表達式和Arrays.sort()方法對數(shù)組進行排序7. Arrays.sort(numbers,(a,b)->a-b);//升序排序8. //使用Arrays.stream()方法和forEach()方法打印排序后的數(shù)組9. Arrays.stream(numbers).forEach(System.out::println);10. 11. //降序排序,可以修改Lambda表達式為:12. Arrays.sort(numbers,(a,b)->b-a);//降序排序13. //再次打印排序后的數(shù)組(降序)14. System.out.println("降序排序后的數(shù)組:");15. Arrays.stream(numbers).forEach(System.out::println);16. }17. }任務(wù)5-1樂自助餐飲訂單-Java常用APIMath類和Random類-

Lambda表達式上述代碼中,利用Lambda表達式和StreamAPI對整數(shù)數(shù)組進行排序,然后打印出來。首先,代碼使用Lambda表達式定義了一個比較器,指定數(shù)組元素按照升序排列。接著,代碼將數(shù)組轉(zhuǎn)換成流,并通過流中的forEach方法逐個打印元素。最后,代碼再次調(diào)用sort方法,使用另一個Lambda表達式實現(xiàn)降序排列,并打印出降序排列后的數(shù)組。其運行結(jié)果如圖任務(wù)5-1樂自助餐飲訂單-任務(wù)實現(xiàn)1.分別設(shè)計用戶類、菜單類、訂單類屬性及獲取屬性的getter方法。2.菜單類,中包括菜品名稱、價格、制作時間。3.訂單類,包括用戶ID、菜品名稱、菜品價格、折扣率、最終價格、下單時間、預計準備時間。4.用戶輸入處理,用戶ID只接收數(shù)字,錯誤輸入后,可繼續(xù)輸入;點餐輸入錯誤的菜品名稱后可繼續(xù)輸入。5.菜單處理,使用數(shù)組和菜單類構(gòu)建菜單。6.訂單處理,用戶點餐后,系統(tǒng)會根據(jù)菜品價格和折扣計算出最終價格,并使用Lambda表達式來簡化訂單處理邏輯。代碼參考教材中的RestaurantOrderSystem.java任務(wù)5-1樂自助餐飲訂單-任務(wù)實現(xiàn)上述代碼中,因為用戶、菜單、訂單類均既有不可修改的特性,所以代碼中定義了三個靜態(tài)內(nèi)部類:User(用戶類)、Dish(菜單類)和Order(訂單類),可以使用構(gòu)造方法的形式生產(chǎn)菜單。在User類中,id屬性,用于標識用戶。在Dish類中,name、price和preparationTime屬性,分別表示菜品的名稱、價格和準備時間。在Order類中,user、dish、finalPrice和orderTime屬性,分別表示訂單的用戶、菜品、最終價格和訂單時間。在主方法中如果用戶和輸入的餐單均為有效數(shù)據(jù),則由random隨機生成一個折扣率,最后displayOrder用于顯示訂單詳情其運行效果如圖02任務(wù)5-2樂自助食材備貨集合簡介

Collection接口List接口 Set接口

Map接口泛型類泛型類繼承泛型接口實現(xiàn) Enum關(guān)鍵字

Enum常用方法任務(wù)5-2樂自助食材備貨-集合集合簡介Java集合框架主要由一組性能高效、使用簡單、可用來操作對象的接口和類組成。Java集合框架位于java.util包中,其中包括接口、接口實現(xiàn)類、具有靜態(tài)方法的工具類等。Java中的集合類是一種工具類,就像容器,存儲任意數(shù)量的具有共同屬性的對象在上述圖中Java集合類主要由兩個根接口Collection和Map派生出來,Collection派生出了三個子接口:List、Set、Queue。List代表了有序可重復集合,可直接根據(jù)元素的索引來訪問;Set代表無序不可重復集合,只能根據(jù)元素本身來訪問;Queue是隊列集合;Map代表的是存儲〈Key,Value〉(鍵-值)對的集合,可根據(jù)元素的Key來訪問Value。其中List接口的常用實現(xiàn)類為ArrayList、LinkedList、Vector;Set接口的常用實現(xiàn)類為HashSet;Map接口的常用實現(xiàn)類為HashMap任務(wù)5-2樂自助食材備貨-集合Collection接口Collection接口中存儲的是一組元素對象,接口本身并不提供直接實現(xiàn),具體的操作通過子接口來實現(xiàn)Set接口、List接口和Queue接口都是Collection的子接口。在Collection里定義的通用方法既可用于操作Set集合,也可用于操作List集合和Queue集合。Collection接口的方法如表方法聲明功能描述booleanadd(Objectobj)向集合添加一個obj元素booleanaddAll(Collectionc)將指定集合中所有元素添加到該集合voidclear()清空集合中所有元素booleancontains(Objectobj)判斷集合中是否包含某個元素booleancontainsAll(Collectionc)判斷集合中是否包含指定集合中所有元素booleanequals(Collectionc)比較此集合與指定對象是否相等inthashCode()返回此集合的哈希碼值Iteratoriterator()返回在此集合的元素上進行迭代的迭代器booleanremove(Objecto)刪除該集合中的指定元素booleanremoveAll(Collectionc)刪除指定集合中所有元素booleanretainAll(Collectionc)僅保留此集合中那些也包含在指定集合c中的元素Object[]toArray()返回包含此集合中所有元素的數(shù)組booleanisEmpty()如果此集合為空,則返回trueintsize()返回此集合中元素個數(shù)任務(wù)5-2樂自助食材備貨-集合Collection接口如例5-9,通過創(chuàng)建、添加、刪除等操作演示表5-9中Collection方法的使用,詳見CollectionDemo.java1importjava.util.ArrayList;2importjava.util.Collection;3publicclassCollectionDemo{4publicstaticvoidmain(String[]args){5 //創(chuàng)建一個集合6 Collection<String>collection=newArrayList<>();7 //添加元素8 collection.add("純電動汽車");9 collection.add("混合動力電動汽車");10collection.add("燃料電池電動汽車");11collection.add("氫發(fā)動機汽車");12collection.add("其他新能源");13//添加后的集合14System.out.println("添加元素后,集合內(nèi)容:"+collection);15//刪除指定元素16collection.remove("其他新能源");17//創(chuàng)建新集合并添加刪除后的元素18Collection<String>newCollection=newArrayList<>(collection);19System.out.println("刪除元素后,集合內(nèi)容:"+newCollection);20//輸出新集合中元素的個數(shù)21System.out.println("新集合中元素的個數(shù):"+newCollection.size());22}23}任務(wù)5-2樂自助食材備貨-集合Collection接口上述代碼中,首先創(chuàng)建了一個ArrayList集合,并向其中添加、打印添加后的集合;然后,使用remove刪除了集合中的“其他新能源”元素,并將刪除“其他新能源”后的集合添加到新集合中。最后打印新集合中元素的內(nèi)容和個數(shù)。其運行結(jié)果如圖任務(wù)5-2樂自助食材備貨-集合List接口List集合中元素是有序的且可重復的,相當于數(shù)學里面的數(shù)列,有序可重復。使用此接口能夠精確地控制每個元素插入的位置,用戶可以通過索引來訪問集合中的指定元素,List集合還有一個特點就是元素的存入順序與取出順序相一致。List接口中大量地擴充了Collection接口,擁有了比Collection接口中更多的方法定義,其中有些方法還比較常用,如表方法聲明功能描述voidadd(intindex,Objectelement)在index位置插入element元素booleanaddAll(intindex,Collectionc)將集合c中所有元素插入List集合的index處Objectget(intindex)得到index處的元素Objectset(intindex,Objectelement)用element替換index位置的元素Objectremove(intindex)移除index位置的元素,并返回該元素intindexOf(Objecto)返回集合中第一次出現(xiàn)o的索引,若集合中不包含該元素,則返回-1任務(wù)5-2樂自助食材備貨-集合List接口-ArrayList如例5-10,通過創(chuàng)建、添加、刪除等操作演示ArrayList方法的使用,詳見ArrayListDemo.java4ArrayList<String>list=newArrayList<>();5list.add("燃油型汽車");6list.add("純電型汽車");7list.add("固態(tài)電池型汽車");8list.add("混合動力型汽車");9System.out.println("新集合:"+list);10//voidadd(intindex,Eelement)->在指定索引位置上添加元素11list.add(2,"氫燃料電池型汽車");12System.out.println("添加元素后,集合內(nèi)容:"+list);13//booleanremove(Objecto)->刪除指定的元素,刪除成功為true,失敗為false14list.remove("氫燃料電池型汽車");15System.out.println("指定的元素刪除后,集合內(nèi)容:"+list);16//Eremove(intindex)->刪除指定索引位置上的元素17Stringelement=list.remove(0);18System.out.println("指定的索引刪除后,集合內(nèi)容:"+list);19//Eset(intindex,Eelement)->將指定索引位置上的元素,修改成后面的element元素20Stringelement2=list.set(0,"新能源動力汽車");21System.out.println("指定的索引修改后,集合內(nèi)容:"+list);22//Eget(intindex)->根據(jù)索引獲取元素23System.out.println("指定索引獲取元素:"+list.get(0));24//intsize()->獲取集合元素個數(shù)25System.out.println("集合元素個數(shù):"+list.size());任務(wù)5-2樂自助食材備貨-集合List接口-ArrayList上述代碼中,演示了使用ArrayList類執(zhí)行集合基本操作添加、刪除、修改、獲取元素和獲取集合的大小。其運行結(jié)果如圖任務(wù)5-2樂自助食材備貨-集合List接口-LinkedListLinkedList是List接口的另一個實現(xiàn)類,它基于雙向鏈表實現(xiàn),因此添加和刪除元素的操作在鏈表的兩端非常高效(常數(shù)時間復雜度)。但在訪問指定位置的元素時,可能需要遍歷鏈表,因此效率較低。其常見的操作如表方法聲明功能描述newLinkedList()或newLinkedList(Collection<?extendsE>c)創(chuàng)建一個LinkedListaddFirst(Ee)、addLast(Ee)、add(intindex,Eelement)在第一位、最后一位、索引位置添加元素getFirst()、getLast()、get(intindex)

根據(jù)索引訪問元素removeFirst()、removeLast()、remove(intindex)根據(jù)索引刪除元素set(intindex,Eelement)根據(jù)索引修改元素任務(wù)5-2樂自助食材備貨-集合List接口-LinkedList如例5-11,通過創(chuàng)建、添加、刪除等操作演示中LinkedList方法的使用,詳見LinkedListDemo.java1importjava.util.LinkedList;2publicclassLinkedListDemo{3publicstaticvoidmain(String[]args){4 LinkedList<String>list=newLinkedList<>();5list.add("混動型汽車");6list.add("純電型汽車");7list.add("氫燃料電池型汽車");8System.out.println("新集合:"+list);9list.addFirst("新能源汽車");//在列表開頭添加元素10System.out.println("在集合頭部添加元素后:"+list);11list.removeLast();//移除列表最后一個元素12System.out.println("刪除集合最后一個元素后:"+list);13System.out.println("獲取指定索引的元素:"+list.get(1));//輸出索引為1的元素14}15}任務(wù)5-2樂自助食材備貨-集合List接口-IteratorIterator是Java集合框架中用于迭代訪問(即遍歷)集合的接口,因此Iterator對象也被稱為迭代器。當使用List(或其他實現(xiàn)了Collection接口的類)時,可以使用iterator()方法獲取一個Iterator對象,然后通過該對象的hasNext()和next()方法來遍歷集合中的元素任務(wù)5-2樂自助食材備貨-集合List接口-Iterator如例5-12,通過集合遍歷的案例演示Iterator類的使用,詳見IteratorDemo.java1importjava.util.*;2publicclassIteratorDemo{3 publicstaticvoidmain(String[]args){4 ArrayList<String>list=newArrayList<>();5 list.add("新能源汽車");6 list.add("燃油型汽車");7 list.add("純電型汽車");8 list.add("固態(tài)電池型汽車");9 list.add("混合動力型汽車");10 //獲取迭代器對象11 Iterator<String>iterator=list.iterator();12 while(iterator.hasNext()){13 Stringelement=iterator.next();14 System.out.println(element);15 }16 }17}任務(wù)5-2樂自助食材備貨-集合List接口-Iterator上述代碼中,首先創(chuàng)建一個LinkedList集合并添加相應(yīng)的元素,演示了使用Iterator類遍歷集合。其運行結(jié)果如圖任務(wù)5-2樂自助食材備貨-集合Set接口

Set接口和List接口一樣,同樣繼承自Collection接口,它與Collection接口中的方法基本一致。Set接口定義了一系列操作無序集合的方法,包括添加、刪除、修改和查詢元素等。Set接口的實現(xiàn)類包括HashSet、LinkedHashSet和TreeSet任務(wù)5-2樂自助食材備貨-集合Set接口-HashSetHashSet是Set接口的一個具體實

溫馨提示

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

評論

0/150

提交評論