Java程序設(shè)計(jì)基礎(chǔ) 課件 第5章 數(shù)組、字符串_第1頁
Java程序設(shè)計(jì)基礎(chǔ) 課件 第5章 數(shù)組、字符串_第2頁
Java程序設(shè)計(jì)基礎(chǔ) 課件 第5章 數(shù)組、字符串_第3頁
Java程序設(shè)計(jì)基礎(chǔ) 課件 第5章 數(shù)組、字符串_第4頁
Java程序設(shè)計(jì)基礎(chǔ) 課件 第5章 數(shù)組、字符串_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章數(shù)組、字符串1教學(xué)目標(biāo)(1) 理解數(shù)組引入的必要性及其概念。(2) 掌握一維數(shù)組的聲明、創(chuàng)建、初始化及訪問。(3) 理解何時(shí)使用foreach訪問數(shù)組,能使用foreach訪問一維數(shù)組。(4) 能熟練應(yīng)用一維數(shù)組的常用處理操作:使用輸入值初始化數(shù)組、使用隨機(jī)值初始化數(shù)組、對(duì)所有元素求和、找出最大(小)值及對(duì)應(yīng)下標(biāo)、隨機(jī)打亂、向左(或右)移動(dòng)元素、輸出數(shù)組元素等。(5) 理解一維數(shù)組作為方法參數(shù)、方法返回值,能編寫數(shù)組作為參數(shù)、作為返回值的方法。(6) 基于一維數(shù)組,掌握線性查找算法與折半查找算法。(7) 基于一維數(shù)組,理解并掌握冒泡排序算法。(8) 掌握Arrays的常用方法,能應(yīng)用這些常用方法,簡(jiǎn)化編程。(9) 掌握一維數(shù)組復(fù)制的幾種方式,根據(jù)需要選擇合適的數(shù)組復(fù)制方式。(10)理解二維數(shù)組與一維數(shù)組的關(guān)系,掌握二維數(shù)組聲明、創(chuàng)建、初始化及訪問。(11) 理解鋸齒二維數(shù)組。2教學(xué)目標(biāo)(12) 能熟練應(yīng)用二維數(shù)組的常用處理操作:初始化數(shù)組、輸出所有數(shù)組元素、按列求和、按行求和、求所有元素的和、隨機(jī)打亂等。(13) 理解多維數(shù)組的概念,能聲明、創(chuàng)建、初始化、訪問多維數(shù)組。(14) 理解數(shù)組應(yīng)用示例:撲克牌混洗和發(fā)放、單選題測(cè)試評(píng)分、矩陣相加。(15) 能使用String類創(chuàng)建字符串對(duì)象,理解字符串常量池。(16) 能熟練應(yīng)用字符串的常用處理操作:字符串比較、獲取字符串長(zhǎng)度、獲取指定位置字符、字符數(shù)組與字符串相互轉(zhuǎn)換、查找字符串、字符串拼接、獲取子字符串、字符串轉(zhuǎn)換等。(17) 理解文本塊的引入,能使用文本塊。(18) 理解正則表達(dá)式的概念,并掌握常用正則表達(dá)式的使用。(19) 能結(jié)合正則表達(dá)式與String類的相關(guān)方法,完成字符串匹配、字符串拆分、字符串替換。(20) 掌握字符串應(yīng)用示例:回文判斷、詞頻統(tǒng)計(jì)、最長(zhǎng)公共子串(21) 理解可變長(zhǎng)參數(shù)列表,能定義和應(yīng)用含有可變長(zhǎng)參數(shù)的方法。(22) 理解命令行參數(shù),能給Java應(yīng)用程序傳遞命令行參數(shù)。3內(nèi)容45.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例內(nèi)容55.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.1一維數(shù)組引例:高校一門課有100人參加考試,計(jì)算有多少人的成績(jī)超過平均成績(jī)。6解決方案:首先讀入這些成績(jī),計(jì)算平均成績(jī),然后每個(gè)數(shù)與平均成績(jī)進(jìn)行比較。為了完成任務(wù),需存儲(chǔ)100個(gè)數(shù),于是需要定義100個(gè)變量。這有什么問題呢?問題:

(1)聲明100個(gè)變量;(令人煩躁…,代碼難以閱讀)

(2)重復(fù)書寫100次幾乎完全相同的代碼。解決之道:100個(gè)數(shù)用一個(gè)數(shù)組存儲(chǔ),通過循環(huán)完成比較任務(wù)。單個(gè)數(shù)組變量可引用一個(gè)大的數(shù)據(jù)集合數(shù)組是一個(gè)高效組織數(shù)據(jù)的方法,其特征:元素個(gè)數(shù)固定、數(shù)據(jù)類型相同、有序集5.1一維數(shù)組7數(shù)組是一個(gè)表示相同數(shù)據(jù)類型集合的數(shù)據(jù)結(jié)構(gòu)。5.1一維數(shù)組85.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1一維數(shù)組95.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序數(shù)組表示數(shù)據(jù)類型相同、元素個(gè)數(shù)固定的有序數(shù)據(jù)集合,是一個(gè)引用數(shù)據(jù)類型。為了在程序中使用數(shù)組,需要聲明一個(gè)引用數(shù)組的引用變量,并指定數(shù)組元素的數(shù)據(jù)類型。一維數(shù)組聲明形式:數(shù)據(jù)類型[]數(shù)組變量名;//推薦形式例:int[]firstArray;//推薦形式數(shù)據(jù)類型數(shù)組變量名[];

例:int

firstArray[];105.1.1數(shù)組聲明與創(chuàng)建2.數(shù)組基礎(chǔ)知識(shí)5.1.1數(shù)組聲明與創(chuàng)建在聲明一個(gè)數(shù)組后,僅僅是創(chuàng)建了一個(gè)對(duì)數(shù)組引用的變量,其值為null,還沒有為數(shù)組分配內(nèi)存空間,無法存儲(chǔ)數(shù)組元素。在數(shù)組變量聲明后,可以使用new操作符創(chuàng)建一個(gè)數(shù)組,并把數(shù)組的引用賦給數(shù)組變量,創(chuàng)建一維數(shù)組的一般形式如下:數(shù)組變量名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];115.1.1數(shù)組聲明與創(chuàng)建聲明數(shù)組變量、創(chuàng)建數(shù)組、數(shù)組引用賦給數(shù)組變量可以在一條語句中同時(shí)完成,一般形式如下:數(shù)據(jù)類型[]數(shù)組變量名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];//形式1數(shù)據(jù)類型數(shù)組變量名[]=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];//形式2例如,下面兩條語句都是創(chuàng)建具有5個(gè)元素的int類型數(shù)組:int[]firstArray=newint[5];//或intfirstArray[]=newint[5];125.1一維數(shù)組135.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.2數(shù)組初始化與訪問數(shù)組在創(chuàng)建之后,通常要進(jìn)行初始化操作,給每個(gè)數(shù)組元素賦初值。對(duì)于一維數(shù)組,使用如下語法給數(shù)組元素賦值:

數(shù)組變量名[下標(biāo)值]=值例,初始化數(shù)組firstArray:firstArray[0]=10;firstArray[1]=20;firstArray[2]=30;firstArray[3]=40;firstArray[4]=50;145.1.2數(shù)組初始化與訪問數(shù)組被創(chuàng)建后,其長(zhǎng)度是固定的,且不能被修改,可以使用“數(shù)組變量名.length”得到數(shù)組長(zhǎng)度。例如,firstArray.length的值是5。數(shù)組在使用new關(guān)鍵字分配內(nèi)存空間之后,數(shù)組元素被賦予默認(rèn)值:1)數(shù)組元素類型是整數(shù)類型(byte、short、int和long)時(shí),默認(rèn)值是0。2)數(shù)組元素類型是基本類型中的浮點(diǎn)類型(float、double)時(shí),默認(rèn)值是0.0。3)數(shù)組元素類型是基本類型中的字符類型(char)時(shí),默認(rèn)值是'\u0000'。4)數(shù)組元素類型是基本類型中的布爾類型(boolean)時(shí),默認(rèn)值是false。5)數(shù)組元素類型是引用類型(類、接口和數(shù)組)時(shí),默認(rèn)值是null。155.1.2數(shù)組初始化與訪問數(shù)組聲明、創(chuàng)建、初始化還可以一步完成,其語法形式如下:數(shù)據(jù)類型[]數(shù)組變量名={值1,值2,值3,…,值n};//或數(shù)據(jù)類型數(shù)組變量名[]={值1,值2,值3,…,值n};初始化列表:由一對(duì)花括號(hào)括起來的、多個(gè)逗號(hào)分隔的值的列表示例:int[]firstArray={10,20,30,40,50}初始化列表允許在最后一個(gè)值之后多加一個(gè)逗號(hào),不影響數(shù)組長(zhǎng)度,但不能連續(xù)加多個(gè)逗號(hào),例如:int[]array1={};//合法,長(zhǎng)度為零的數(shù)組int[]array2={,};//合法,長(zhǎng)度為零的數(shù)組int[]array3={2,3};//合法,長(zhǎng)度為2的數(shù)組int[]array4={2,3,};//合法,長(zhǎng)度為2的數(shù)組int[]array5={2,3,,};//不合法,Java編譯器報(bào)錯(cuò)165.1.2數(shù)組初始化與訪問數(shù)組示例1:程序清單5-1FirstArrayDemo.java當(dāng)聲明一個(gè)數(shù)組之后,創(chuàng)建和初始化可合并在一起完成,其一般形式如下:數(shù)據(jù)類型[]數(shù)組變量;數(shù)組變量=new數(shù)據(jù)類型[]{值1,值2,…,值n};數(shù)組示例2:程序清單5-2:TestArrayRef.java17警告使用數(shù)組初始化語法時(shí),必須將聲明、創(chuàng)建、初始化數(shù)組都放在一條語句中,將它們分開將產(chǎn)生語法錯(cuò)誤。例,18double[]myList;myList={1.9,2.9,3.4,3.5};

195-1指出下列錯(cuò)誤的語句()數(shù)組中的每個(gè)元素都有相同的類型一旦數(shù)組被聲明,大小就不能改變一旦數(shù)組被創(chuàng)建,大小就不能改變數(shù)組中的元素必須是基本數(shù)據(jù)類型ABCD提交多選題2分205-2以下哪些語句是合法的()?inti=newint(30);doubled[]=newdouble[30];floatf[]={2,3,4,5,6.6};char[]c=newchar();ABCD提交inti[]=(3,4,3,2);E多選題1分5.1一維數(shù)組215.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.3foreach循環(huán)foreach循環(huán):按順序遍歷數(shù)組中的每個(gè)元素,而不必考慮數(shù)組下標(biāo)值語法形式:for(數(shù)據(jù)類型變量名:數(shù)組變量名){ //循環(huán)體處理語句}舉例:下面的代碼可以按順序輸出myArray數(shù)組的數(shù)組元素for(inte:myArray)//可以讀作:對(duì)數(shù)組myArray中的每個(gè)元素eSystem.out.printf("%4d",e);22235-3下面代碼的執(zhí)行結(jié)果:2.5,3,42.5342.53.04.02.5,3.0,4.0ABCD提交publicclassTest{publicstaticvoidmain(String[]args){double[]x={2.5,3,4};for(doublevalue:x)System.out.print(value+"");}}單選題1分5.1一維數(shù)組245.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.4數(shù)組常用操作一維數(shù)組的常用操作有:使用輸入值初始化數(shù)組、使用隨機(jī)值初始化數(shù)組、對(duì)所有元素求和、找出最大(小)值及對(duì)應(yīng)下標(biāo)、隨機(jī)打亂、向左(或右)移動(dòng)元素、輸出數(shù)組元素等。示例:程序清單5-3HandleArrayDemo.java255.1一維數(shù)組265.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.5數(shù)組與方法1、數(shù)組作為方法形參 當(dāng)數(shù)組作為方法形參時(shí),形參的數(shù)據(jù)類型是數(shù)組類型。例如,方法main的參數(shù)String[]args,就是一個(gè)以字符串?dāng)?shù)組作為形參的例子。27publicstaticvoiddisplayArray(int[]list){for(inte:list)

System.out.printf("%d,",e);}調(diào)用方法時(shí),只需要使用數(shù)組名:int[]list1={3,5,7};displayArray(list1);//輸出3,5,7,還有一種較為特殊的調(diào)用方式,匿名數(shù)組:displayArray(newint[]{3,5,7});//輸出3,5,7,5.1.5數(shù)組與方法28示例1:程序清單5-4TestArrayMethod1.java示例2:程序清單5-5TestSwapTwoNums.java5.1.5數(shù)組與方法2、數(shù)組作為方法返回值類型當(dāng)方法的返回值類型是一個(gè)數(shù)組類型時(shí),方法可以返回一個(gè)數(shù)組。方法返回一個(gè)數(shù)組,實(shí)際上返回的是一個(gè)數(shù)組的引用。示例:程序清單5-6TestReturnArray.java29305-4判斷對(duì)錯(cuò):當(dāng)傳遞一個(gè)數(shù)組給方法時(shí),一個(gè)新的數(shù)組被創(chuàng)建并且傳遞給方法()正確錯(cuò)誤AB提交單選題1分315-5假定一個(gè)方法p有如下方法頭:publicstaticint[]p()哪個(gè)return語句可以用在p()中?()return1;return{1,2,3};returnint[]{1,2,3};returnnewint[]{1,2,3};ABCD提交單選題1分5.1一維數(shù)組325.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.6數(shù)組查找查找是計(jì)算機(jī)程序設(shè)計(jì)中經(jīng)常要完成的任務(wù)。本節(jié)討論:線性查找折半查找線性查找又稱為順序查找,是一種最簡(jiǎn)單的查找方法。以處理int類型一維數(shù)組為例,線性查找算法的基本思想是:將要查找的關(guān)鍵字key值與數(shù)組中的元素依次逐個(gè)比較,直到找到與key值相等的元素,或者查找完數(shù)組沒有找到與之相等的元素。如果找到與key值相等的元素,則返回該數(shù)組元素對(duì)應(yīng)的下標(biāo)值。否則,返回-1。335.1.6數(shù)組查找34641973286419732864197328641973286419732864197328333333KeyList示例:程序清單5-7LinearSearch.java線性查找動(dòng)畫5.1.6數(shù)組查找折半查找又稱為二分查找(binarysearch),是一種在有序數(shù)組中查找某一特定元素的搜索算法。使用折半查找的前提是數(shù)組中的元素必須是已經(jīng)排好序的。假設(shè)一個(gè)int類型一維數(shù)組已經(jīng)按升序排列,折半查找法首先讓關(guān)鍵字key與數(shù)組的中間元素比較。此時(shí),可能出現(xiàn)三種不同的情況:①如果關(guān)鍵字key等于中間元素值,則查找成功,返回中間元素對(duì)應(yīng)的下標(biāo)值。②如果關(guān)鍵字key小于中間元素值,則需要在數(shù)組的前一半元素中繼續(xù)查找key。③如果關(guān)鍵字key大于中間元素值,則需要在數(shù)組的后一半元素中繼續(xù)查找key。在繼續(xù)查找key時(shí),從前一半或后一半元素中,再次取出其中間元素,與key進(jìn)行比較。當(dāng)把整個(gè)數(shù)組查找完時(shí),還沒有找到與key相等的元素,返回-1。355.1.6數(shù)組查找36123467891234678912346789888KeyList7.數(shù)組的查找二分查找:簡(jiǎn)單示例動(dòng)畫5.1.6數(shù)組查找為了便于描述折半查找過程,需設(shè)計(jì)三個(gè)下標(biāo)變量:high、low、mid,它們分別表示當(dāng)前待查找數(shù)組的最后一個(gè)元素下標(biāo)、第一個(gè)元素的下標(biāo)、中間元素的下標(biāo)。mid的值為:(high+low)/2。起始時(shí),high=數(shù)組.length–1,low=0當(dāng)key小于中間元素值時(shí),查找數(shù)組的前半部分,此時(shí)數(shù)組前半部分的第一個(gè)元素下標(biāo)low不變,high變?yōu)閙id–1,mid繼續(xù)基于公式:(high+low)/2進(jìn)行更新。當(dāng)key大于中間元素值時(shí),查找數(shù)組的后半部分,此時(shí)數(shù)組后半部分的第一個(gè)元素下標(biāo)low變?yōu)閙id+1,high不變,mid的值更新重復(fù)上述步驟,直到找到與key相等的元素或者數(shù)組查找完,即high小于等于low。375.1.6數(shù)組查找38查找成功示例5.1.6數(shù)組查找39查找失敗示例5.1.6數(shù)組查找折半查找算法實(shí)現(xiàn)與測(cè)試:程序清單5-8HalfIntervalSearch.java405.1一維數(shù)組415.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.7數(shù)組排序冒泡排序:交換排序基本思想:從下標(biāo)為0的元素開始,依次比較兩個(gè)相鄰的元素;如果前者大于后者,就交換這兩個(gè)相鄰元素的值。上述這個(gè)兩兩比較的工作重復(fù)進(jìn)行,直到?jīng)]有相鄰元素需要交換為止,就說明排序完成。舉例說明:見右圖算法實(shí)現(xiàn)與測(cè)試:程序清單5-9BubbleSort.java425.1一維數(shù)組435.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.8Arraysjava.utils.Arrays類提供了對(duì)數(shù)組操作的一系列方法,使用這些方法可以簡(jiǎn)化開發(fā)過程,提高開發(fā)效率。示例:程序清單5-10ArraysDemo1.java445.1.8Arraysjava.utils.Arrays類提供了對(duì)數(shù)組操作的一系列方法,使用這些方法可以簡(jiǎn)化開發(fā)過程,提高開發(fā)效率。示例:程序清單5-10ArraysDemo1.java455.1.8Arrays46Java提供了幾個(gè)重載版本的java.util.Arrays.binarySearch方法(在int,double,char,short,long,float數(shù)組中查找給定的關(guān)鍵字)int[]list={2,4,7,10,11,45,50,59,60,66,69,70,79};System.out.println("Indexis"+java.util.Arrays.binarySearch(list,11));

char[]chars={'a','c','g','x','y','z'};System.out.println("Indexis"+java.util.Arrays.binarySearch(chars,'t'));

Returnis4Returnis–4(insertionpointis3,soreturnis-3-1)475-6假定:int[]scores={1,20,30,40,50},那么java.util.Arrays.binarySearch(scores,3)返回的值是()0-12-2ABCD提交單選題1分485-7下面哪個(gè)方法是對(duì)double型數(shù)組scores的排序()java.util.Arrays(scores)java.util.Arrays.sorts(scores)java.util.Arrays.sort(scores)java.util.Arrays.sortArray(scores)ABCD提交單選題1分5.1一維數(shù)組495.1.1數(shù)組聲明與創(chuàng)建5.1.2數(shù)組初始化與訪問5.1.3foreach循環(huán)5.1.4數(shù)組常用操作5.1.8Arrays5.1.9數(shù)組復(fù)制5.1.5數(shù)組與方法5.1.6數(shù)組查找5.1.7數(shù)組排序5.1.9數(shù)組復(fù)制數(shù)組復(fù)制:深度復(fù)制、淺度復(fù)制深度復(fù)制:復(fù)制數(shù)組的內(nèi)容淺度復(fù)制:復(fù)制數(shù)組的引用505.1.9數(shù)組復(fù)制Java類庫提供了數(shù)組深度復(fù)制的方法:Arrays類的copyOf()方法:publicstaticint[]copyOf(int[]original,intnewLength)Arrays類的copyOfRange()方法:publicstaticint[]copyOfRange(int[]original,intfrom,intto)System類的arraycopy()方法:publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)示例:程序清單5-11TestArrayCopy.java51內(nèi)容525.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.2二維數(shù)組二維數(shù)組是具有行下標(biāo)和列下標(biāo)的數(shù)組,可以用來存儲(chǔ)表或矩陣53表的示例矩陣的示例Java語言把二維數(shù)組看作是由多個(gè)一維數(shù)組構(gòu)成的數(shù)組。5.2二維數(shù)組545.2.3鋸齒二維數(shù)組5.2.4二維數(shù)組處理5.2.1二維數(shù)組的聲明與創(chuàng)建5.2.2二維數(shù)組初始化與訪問5.2二維數(shù)組555.2.3鋸齒二維數(shù)組5.2.4二維數(shù)組處理5.2.1二維數(shù)組的聲明與創(chuàng)建5.2.2二維數(shù)組初始化與訪問5.2.1二維數(shù)組的聲明與創(chuàng)建聲明二維數(shù)組的語法如下:數(shù)據(jù)類型[][]變量名;//推薦形式數(shù)據(jù)類型變量名[][];//另一種合法形式例如:int[][]matrixs;或intmatrixs[][];創(chuàng)建二維數(shù)組的語法格式如下:變量名=new數(shù)據(jù)類型[m][n];//m,n通常是正整數(shù)值例如,matrixs=newint[3][3];565.2.1二維數(shù)組的聲明與創(chuàng)建與一維數(shù)組一樣,二維數(shù)組聲明和創(chuàng)建,也可以一步完成:數(shù)據(jù)類型[][]變量名=new數(shù)據(jù)類型[m][n];//m,n通常是正整數(shù)值或者數(shù)據(jù)類型變量名[][]=new數(shù)據(jù)類型[m][n];//m,n通常是正整數(shù)值例如,int[][]matrixs=newint[3][3];或者,intmatrixs[][]=newint[3][3];575.2二維數(shù)組585.2.3鋸齒二維數(shù)組5.2.4二維數(shù)組處理5.2.1二維數(shù)組的聲明與創(chuàng)建5.2.2二維數(shù)組初始化與訪問5.2.2二維數(shù)組初始化與訪問與一維數(shù)組一樣,二維數(shù)組在創(chuàng)建之后,也具有默認(rèn)值,默認(rèn)值規(guī)則與一維數(shù)組一樣。二維數(shù)組也可以采用初始化列表初始化,其一般形式如下:數(shù)據(jù)類型[][]變量名=二維數(shù)組初始化列表;二維數(shù)組的初始化列表形式如下:二維數(shù)組初始化列表={一維數(shù)組初始化列表1,一維數(shù)組初始化列表2,…,一維數(shù)組初始化列表n};例如,int[][]scores={{78,89,95},{87,98,89},{82,95,92}};595.2.2二維數(shù)組初始化與訪問與一維數(shù)組一樣,二維數(shù)組在創(chuàng)建之后,也具有默認(rèn)值,默認(rèn)值規(guī)則與一維數(shù)組一樣。二維數(shù)組也可以采用初始化列表初始化,其一般形式如下:數(shù)據(jù)類型[][]變量名=二維數(shù)組初始化列表;二維數(shù)組的初始化列表形式如下:二維數(shù)組初始化列表={一維數(shù)組初始化列表1,一維數(shù)組初始化列表2,…,一維數(shù)組初始化列表n};例如,int[][]scores={{78,89,95},{87,98,89},{82,95,92}};60int[][]scores=newint[3][3];scores[0][0]=78;scores[0][1]=89;scores[0][2]=95;scores[1][0]=87;scores[1][1]=98;scores[1][2]=89;scores[2][0]=82;scores[2][1]=95;scores[2][2]=92;等價(jià)于5.2.2二維數(shù)組初始化與訪問與一維數(shù)組一樣,二維數(shù)組的聲明,與創(chuàng)建和初始化分開成兩步,例如:int[][]scores;scores=newint[][]{{78,89,95},{87,98,89},{82,95,92}};61二維數(shù)組的每一個(gè)元素是一個(gè)一維數(shù)組。二維數(shù)組的長(zhǎng)度表示其包含多少個(gè)一維數(shù)組可通過行下標(biāo)、列下標(biāo)訪問具體的數(shù)組元素625-8創(chuàng)建數(shù)組:double[][]x=newdouble[4][5],x.length和x[2].length的值分別是()4和44和55和55和4ABCD提交單選題1分5.2二維數(shù)組635.2.3鋸齒二維數(shù)組5.2.4二維數(shù)組處理5.2.1二維數(shù)組的聲明與創(chuàng)建5.2.2二維數(shù)組初始化與訪問5.2.3鋸齒二維數(shù)組Java語言的二維數(shù)組是由多個(gè)一維數(shù)組構(gòu)成,各個(gè)一維數(shù)組的長(zhǎng)度可以不相同。這種數(shù)組可以稱為鋸齒二維數(shù)組,還可以稱為不規(guī)則二維數(shù)組64訪問鋸齒二維數(shù)組,也是需要指定行下標(biāo)和列下標(biāo)。例如,xList[0][0]訪問數(shù)組元素的值1,xList[0][1]訪問數(shù)組元素的值35.2.3鋸齒二維數(shù)組如果鋸齒數(shù)組的初始值不知道,且知道各個(gè)一維數(shù)組的長(zhǎng)度,那么可以結(jié)合new操作符使用如下語法創(chuàng)建鋸齒數(shù)組:int[][]xList=newint[4][];xList[0]=newint[5];xList[1]=newint[2];xList[2]=newint[4];xList[3]=newint[1];65665-9以下哪些語句是合法的int[][]r=newint[2];int[]x=newint[];int[][]y=newint[3][];int[][]z={{1,2}};ABCD提交int[][]m={{1,2},{2,3}};Eint[][]n={{1,2},{2,3},};F多選題1分5.2二維數(shù)組675.2.3鋸齒二維數(shù)組5.2.4二維數(shù)組處理5.2.1二維數(shù)組的聲明與創(chuàng)建5.2.2二維數(shù)組初始化與訪問5.2.4二維數(shù)組處理由于二維數(shù)組的長(zhǎng)度是固定的,所以常常使用嵌套for循環(huán)處理二維數(shù)組。與一維數(shù)組類似,二維數(shù)組也有一些常見處理操作:初始化數(shù)組、輸出所有數(shù)組元素、按列求和、按行求和、求所有元素的和、隨機(jī)打亂等程序清單5-12TestTwoDArray.java68695-10下列代碼的輸出是:()123445671381225913ABCD提交publicclassTest{publicstaticvoidmain(String[]args){int[][]matrix={{1,2,3,4},{4,5,6,7},{8,9,10,11},{12,13,14,15}};for(inti=0;i<4;i++)System.out.print(matrix[i][1]+"");}}單選題1分內(nèi)容705.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.3多維數(shù)組Java語言把一個(gè)二維數(shù)組看作是由多個(gè)一維數(shù)組構(gòu)成的數(shù)組,而一個(gè)三維數(shù)組是由多個(gè)二維數(shù)組構(gòu)成的數(shù)組,每個(gè)二維數(shù)組又是由多個(gè)一維數(shù)組構(gòu)成的數(shù)組。一個(gè)四維數(shù)組是由多個(gè)三維數(shù)組構(gòu)成數(shù)組。因此,可以總結(jié)為:一個(gè)n(n≥2)維數(shù)組可以看作是由多個(gè)n-1維數(shù)組構(gòu)成的數(shù)組。在聲明和創(chuàng)建多維數(shù)組時(shí),可以借鑒二維數(shù)組的聲明與創(chuàng)建,示例:int[][][]grades=newint[5][3][2];//5個(gè)考生、3門課、兩種考試(筆試、機(jī)試)715.3多維數(shù)組初始化列表初始化:示例:程序清單5-13TestThreeDArray.java72735-11下列代碼的輸出結(jié)果是()1245ABCD提交publicclassTest{publicstaticvoidmain(String[]args){int[][][]data={{{1,2},{3,4}},{{5,6},{7,8}}};System.out.print(data[1][0][0]);}}單選題1分內(nèi)容745.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.4數(shù)組應(yīng)用示例755.4.3矩陣相加5.4.1撲克牌混洗和發(fā)放5.4.2單選題測(cè)試評(píng)分5.4數(shù)組應(yīng)用示例765.4.3矩陣相加5.4.1撲克牌混洗和發(fā)放5.4.2單選題測(cè)試評(píng)分5.4.1撲克牌混洗和發(fā)放假設(shè)3個(gè)玩家在玩撲克牌,如何混洗撲克牌,并給3個(gè)玩家發(fā)放撲克呢?該玩法不需要大王、小王兩張牌,初始時(shí)只需要給每個(gè)玩家隨機(jī)發(fā)放5張牌。一副撲克牌在去掉大王、小王兩張撲克牌后,剩下52張,由黑桃、紅桃、梅花、方塊4種花色構(gòu)成,每種花色的牌有13張int[]cards=newint[52];//初始化數(shù)組for(inti=0;i<cards.length;i++)cards[i]=i;//具有值0-51775.4.1撲克牌混洗和發(fā)放示例:程序清單5-14TestPlayingCards785.4數(shù)組應(yīng)用示例795.4.3矩陣相加5.4.1撲克牌混洗和發(fā)放5.4.2單選題測(cè)試評(píng)分5.4.2單選題測(cè)試評(píng)分假設(shè)在某門課教學(xué)過程中,進(jìn)行一個(gè)階段小測(cè)驗(yàn),布置了10單選題進(jìn)行測(cè)試,每道單選題2分,本次測(cè)試滿分20分。學(xué)生提交的答題表,按學(xué)號(hào)順序排列。最后,通過自動(dòng)閱卷,記錄并顯示學(xué)生的成績(jī)。10道選擇題的正確答案為,1-5題:ABACC,6-10題:DBCBA。80學(xué)生答題表:一個(gè)二維數(shù)組正確答案:一個(gè)一維數(shù)組學(xué)生學(xué)號(hào):一個(gè)一維數(shù)組學(xué)生成績(jī):一個(gè)一維數(shù)組程序清單5-15PhaseExam.java5.4數(shù)組應(yīng)用示例815.4.3矩陣相加5.4.1撲克牌混洗和發(fā)放5.4.2單選題測(cè)試評(píng)分5.4.3矩陣相加矩陣相加運(yùn)算要求兩個(gè)矩陣必須具備相同的維數(shù)。假設(shè)兩個(gè)矩陣A、B具有相同的維數(shù),矩陣元素都是double類型的值,矩陣C=A+B,那么矩陣C的每個(gè)元素Cij=Aij+Bij。82程序清單5-16MatrixAddDemo內(nèi)容835.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.5字符串845.5.3文本塊5.5.1String類基礎(chǔ)5.5.2字符串處理5.5字符串855.5.3文本塊5.5.1String類基礎(chǔ)5.5.2字符串處理5.5.1

String類基礎(chǔ)Java語言提供了String類來創(chuàng)建和操作字符串Strings1=newString("Helloworld!");//采用構(gòu)造方法形式Strings2=newString(newchar[]{'H','e','l','l','o','!’});//通過字符數(shù)組創(chuàng)建一個(gè)字符串對(duì)象byte[]bytes={97,98,99,100};Strings3=newString(bytes);//通過字節(jié)數(shù)組創(chuàng)建一個(gè)字符串對(duì)象字符串常量池(Stringconstantpool):JVM為了提高效率并節(jié)約內(nèi)存,對(duì)具有相同Unicode字符序列的字面量使用同一個(gè)實(shí)例865.5.1

String類基礎(chǔ)程序清單5-17展示了字符串常量池與不使用字符串常量池的區(qū)別。875.5字符串885.5.3文本塊5.5.1String類基礎(chǔ)5.5.2字符串處理5.5.2字符串處理常見處理:字符串比較、獲取字符串長(zhǎng)度、獲取指定位置字符、字符數(shù)組與字符串相互轉(zhuǎn)換、查找字符串、字符串拼接、獲取子字符串、字符串轉(zhuǎn)換1、字符串比較如果想比較兩個(gè)字符串內(nèi)容是否相等,那么需要使用equals()方法。如果想比較兩個(gè)字符串是否同一個(gè)對(duì)象,可以使用==運(yùn)算符89Strings1="hello";Strings2="hello";Strings3=newString("hello");System.out.println("s1==s2:"+(s1==s2));//trueSystem.out.println("s1與s2內(nèi)容是否相等:"+s1.equals(s2));//trueSystem.out.println("s1與s3內(nèi)容是否相等:"+s1.equals(s3));//true5.5.2字符串處理1、字符串比較Java語言是大小寫敏感的語言,當(dāng)需要忽略字母大小寫進(jìn)行比較時(shí),可以使用equalsIgnoreCase()方法Java語言提供了compareTo()方法按字典序比較兩個(gè)字符串,compareTo()方法的使用形式如下:pareTo(cmpStr);//返回值是一個(gè)整數(shù)90Stringstr1="abc";Stringstr2="ABC";System.out.println(str1.equalsIgnoreCase(str2));//輸出trueStringstr1="Ad";Stringstr2="ab";System.out.println(pareTo(str2));//輸出:-32System.out.println(pareTo(str1));//輸出:32System.out.println(pareTo("ab"));//輸出:0 915-12"abc".compareTo("aba")的值是()12-1-2ABCD提交單選題1分5.5.2字符串處理2、獲取字符串長(zhǎng)度String類獲取字符串長(zhǎng)度的方法是length(),返回字符串對(duì)象包含的字符數(shù)。92Stringstrl="Hello";System.out.println(strl.length());//輸出55.5.2字符串處理3、獲取指定位置字符String類的方法publiccharcharAt(intindex),返回字符串指定位置index的字符(index從0開始,最大值為:字符串長(zhǎng)度-1)93Stringstr="mystr";System.out.println(str.charAt(0));//輸出m5.5.2字符串處理4、字符數(shù)組與字符串相互轉(zhuǎn)換String類的方法publicchar[]toCharArray()可以基于字符串的內(nèi)容生成一個(gè)字符數(shù)組并返回字符數(shù)組轉(zhuǎn)換為字符串,可以使用String類的構(gòu)造方法94Stringstrchar="String2022";char[]chars=strchar.toCharArray();for(inti=0;i<chars.length;i++){//輸出:String2022System.out.print(chars[i]+"");}Stringstr=newString(newchar[]{'A','B','C','D'});5.5.2字符串處理5、查找字符串95

方法描述publicbooleancontains(Strings)判斷此字符串是否包含子字符串s,若包含返回true,否則返回falsepublicintindexOf(Stringstr)在此字符串中,從左向右查找指定字符串的位置,若找不到返回-1publicintindexOf(intch)返回此字符串中指定字符第一次出現(xiàn)的索引。若找不到返回-1publicintindexOf(intch,intfromIndex)返回此字符串中指定字符第一次出現(xiàn)的索引,從指定索引fromIndex處開始搜索。若找不到返回-1publicintindexOf(Stringstr,intfromIndex)在此字符串中,從指定位置從左向右查找指定字符串的位置,若找不到返回-1publicintlastIndexOf(Stringstr)在此字符串中,從右向左查找指定字符串的位置,若找不到返回-1publicintlastIndexOf(Stringstr,intfromIndex)在此字符串中,從指定位置從右向左查找指定字符串的位置,若找不到返回-1publicbooleanstartsWith(Stringprefix)判斷此字符串是否以指定的字符串開頭,若是,則返回true;否則返回falsepublicbooleanstartsWith(Stringprefix,intoffset)從指定位置offset判斷此字符串是否以指定的字符串開頭,若是,則返回true;否則返回falsepublicbooleanendsWith(Stringsuffix)判斷此字符串是否以指定的字符串suffix結(jié)尾,若是,則返回true;否則返回false5.5.2字符串處理5、查找字符串96Strings="Wearestudents";intindex1=s.indexOf('a');//index1=3intindex2=s.indexOf("are");//index2=3intindex3=s.indexOf('a',5);//index3=-1System.out.println("中國(guó)電子".contains("中電"));//輸出falseSystem.out.println("中國(guó)電子".contains("電子"));//輸出trueString[]str={"tst..test","guetjava@sa@2","@test#javademo!!"};intindex4=str[0].indexOf("java");//index4=-1intindex5=str[1].indexOf("java");//index5=4intindex6=str[1].indexOf("@",3);//index6=8intindex7=str[1].lastIndexOf("@");//index7=11booleanisPre=str[2].startsWith("@");//isPre=truebooleanisEnd=str[2].endsWith("!!");//isEnd=true5.5.2字符串處理6、字符串拼接下面使用+拼接多個(gè)字符串:如果用+連接字符串和其他數(shù)據(jù)類型值,會(huì)將其他數(shù)據(jù)類型值先自動(dòng)轉(zhuǎn)換為字符串,再連接97Strings1="Hello";Strings2="world";Strings=s1+""+s2+"!";System.out.println(s);//輸出:Helloworld!intage=25;Strings="ageis"+age;System.out.println(s);//輸出:ageis255.5.2字符串處理6、字符串拼接方法publicStringconcat(Stringstr),其作用是連接多個(gè)字符串:如果需要將多個(gè)字符串拼接在一起,并用一個(gè)界定符分隔,可以使用String類的靜態(tài)方法join()從JavaSE11開始,Java語言提供了repeat方法,對(duì)相同字符串重復(fù)拼接:98"care".concat("less")//返回字符串:"careless""to".concat("get").concat("her")//連續(xù)調(diào)用,返回字符串:"together"Stringstr=String.join("#","C","Java","Python");//str:C#Java#PythonStrings="hello".repeat(3);//s:hellohellohello995-13字符A的Unicode值是65,表達(dá)式"A"+1的值是()66BA1非法表達(dá)式ABCD提交單選題1分5.5.2字符串處理7、獲取子字符串100Stringstr1="Helloword";Stringsubstr1=str.substring(3);//獲取子字符串,substr1值為lowordStringstr2="Helloword";Stringsubstr2=str.substring(0,3);//substr的值為hel方法描述publicStringsubstring(intbeginIndex)返回一個(gè)字符串,其內(nèi)容是此字符串的子字符串。子字符串以指定索引處的字符開始,并延伸到此字符串的末尾。publicStringsubstring(intbeginIndex,intendIndex)返回一個(gè)字符串,其內(nèi)容是此字符串的子字符串。子字符串從指定的beginIndex開始,并擴(kuò)展到索引endIndex-1處的字符。因此,子字符串的長(zhǎng)度是endIndex-beginIndex。Stringstr3=;Stringsub_str1=str2.substring(0,3);Stringsub_str2=str2.substring(7);Stringstr4=sub_str1+"****"+sub_str2;//str4:187****09881015-14"SELECT".substring(0,5)返回的值為()"SELECT""SELEC""SELE""LECT"ABCD提交單選題1分此題未設(shè)置答案,請(qǐng)點(diǎn)擊右側(cè)設(shè)置按鈕5.5.2字符串處理8、從控制臺(tái)讀取字符串從控制臺(tái)讀取字符串可使用Scanner類的next()方法或者nextLine()方法。102Scannerinput=newScanner(System.in);Stringstr=input.next();//從控制臺(tái)讀取一個(gè)字符串StringstrNew=input.nextLine();輸入:helloIamacoder!

讀取的字符串是整行字符串,strNew的值是:helloIamacoder!。5.5.2字符串處理9、去除空格103Stringstr="hello";StringstrNew=str.trim();//strNew為hello5.5.2字符串處理10、大小寫轉(zhuǎn)換String類大小寫轉(zhuǎn)換方法是:publicStringtoLowerCase()和publicStringtoUpperCase()104Stringstr1="ABCDefg";Stringstr2="abcDEFG";StringlowerStr=str1.toLowerCase();//lowerStr為abcdefgStringupperStr=str2.toUpperCase();//upperStr為ABCDEFG1055-15下面哪一個(gè)語句能夠正確地返回JAVA()toUpperCase("Java")"Java".toUpperCase("Java")"Java".toUpperCase()String.toUpperCase("Java")ABCD提交單選題1分5.5.2字符串處理11、基本類型轉(zhuǎn)換字符串當(dāng)需要把基本類型值轉(zhuǎn)換為字符串時(shí),可以使用String類的靜態(tài)方法publicstaticStringvalueOf(基本數(shù)據(jù)類型變量名)106String.valueOf(123);//"123"String.valueOf(45.67);//"45.67"String.valueOf(45.67f);//"45.67"String.valueOf(true);//"true"String.valueOf('A');//"A"5.5字符串1075.5.3文本塊5.5.1String類基礎(chǔ)5.5.2字符串處理5.5.3文本塊文本塊(TextBlocks)在JavaSE15中被確定下來成為正式功能文本塊是一種多行字符串文字,它以三個(gè)雙引號(hào)字符(""")開始,以三個(gè)雙引號(hào)字符(""")結(jié)束108一段HTML文本,如果用傳統(tǒng)雙引號(hào)字符串表示,需要進(jìn)行拼接,并使用轉(zhuǎn)義字符采用文本塊形式定義一段HTML文本,省略了轉(zhuǎn)義序列,縮進(jìn)保留,可讀性更好5.5.3文本塊文本塊避免了大多數(shù)轉(zhuǎn)義序列的需要,以一種可預(yù)測(cè)的方式自動(dòng)設(shè)置字符串的格式,并在需要時(shí)使開發(fā)人員可以控制格式,簡(jiǎn)化編寫Java程序的任務(wù)。注意:(1)文本塊以3個(gè)雙引號(hào)"""開始和結(jié)束,開始的3個(gè)雙引號(hào)"""必須單獨(dú)成一行。(2)文本塊可以在3個(gè)雙引號(hào)"""內(nèi)插入任何字符,包括換行符。(3)文本塊可以使用轉(zhuǎn)義字符來插入雙引號(hào)或其他特殊字符。(4)文本塊支持縮進(jìn),提升閱讀的清晰性;Java編譯器在處理文本塊縮進(jìn)時(shí),會(huì)自動(dòng)刪除不需要的縮進(jìn):每行結(jié)尾的空格都會(huì)刪除;每行開始的共有的空格會(huì)自動(dòng)刪除;只保留相對(duì)縮進(jìn)。示例:程序清單5-18TestTextBlock.java1091105-16下面關(guān)于文本塊定義,正確的是()Stringstr="""json""";Stringstr="""

json""";TextBlockstr="""json""";String[]str="""

json""";ABCD提交單選題1分內(nèi)容1115.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.6正則表達(dá)式一些應(yīng)用程序具有驗(yàn)證用戶輸入的需求,例如,一個(gè)應(yīng)用程序要求用戶輸入一個(gè)手機(jī)號(hào),那么該程序就應(yīng)該要驗(yàn)證輸入的字符是否數(shù)字,是否11位。如何編寫代碼來驗(yàn)證用戶的輸入呢?通常,一個(gè)有效的做法就是使用正則表達(dá)式(RegularExpression,簡(jiǎn)寫為regex)正則表達(dá)式:是由普通字符以及特殊符號(hào)組成的一個(gè)字符串,用來描述匹配一個(gè)字符串集合的模式。"java-\\d":java-0、java-1、java-2、…、java-9匹配11位手機(jī)號(hào)碼,以數(shù)字1開頭:"1\\d{10}“常用正則表達(dá)式符號(hào)和示例1125.6正則表達(dá)式113符號(hào)含義示例解釋.

匹配除\n以外的任何字符

a..b以a開頭,b結(jié)尾,中間包括2個(gè)任意字符的長(zhǎng)度為4的字符串\d

匹配單個(gè)數(shù)字字符,相當(dāng)于[0-9]\d{3}(\d)?包含3個(gè)或4個(gè)數(shù)字的字符串\D

匹配單個(gè)非數(shù)字字符,相當(dāng)于[^0-9]\D(\d)*以單個(gè)非數(shù)字字符開頭,后接任意個(gè)數(shù)字字符串\w匹配單個(gè)數(shù)字、大小寫字母字符,相當(dāng)于[0-9a-zA-Z]\d{3}\w{4}以3個(gè)數(shù)字字符開頭的長(zhǎng)度為7的數(shù)字字母字符串\W匹配單個(gè)非數(shù)字、大小寫字母字符,相當(dāng)于[^0-9a-zA-Z]\W+\d{2}以至少1個(gè)非數(shù)字字母字符開頭,2個(gè)數(shù)字字符結(jié)尾\p{P}一個(gè)標(biāo)點(diǎn)字符!"#$%&'()+,-./:<>=?@[\]^_{}|`~java\p{P}以java開頭,后接任意一個(gè)標(biāo)點(diǎn)符號(hào)的字符串,例如,java#、java$、…[

]

可接收的字符列表[efgh]e、f、g、h中的任意1個(gè)字符[^]

不接收的字符列表[^abc]除a、b、c之外的任意1個(gè)字符,包括數(shù)字和特殊符號(hào)

|匹配“|”之前或之后的表達(dá)式

ab|cdab或者cd(

)

將子表達(dá)式分組

(abc)將字符串a(chǎn)bc作為一組5.6正則表達(dá)式114符號(hào)含義示例解釋

-

連字符A-Z任意單個(gè)大寫字母

*

指定字符重復(fù)0次或n次

(abc)*僅包含任意個(gè)abc的字符串,等效于\w*+

指定字符重復(fù)1次或n次m+(abc)*

以至少1個(gè)m開頭,后接任意個(gè)abc的字符串?指定字符重復(fù)0次或1次m+abc?以至少1個(gè)m開頭,后接ab或abc的字符串{n}只能輸入n個(gè)字符

[abcd]{3}由abcd中字母組成的任意長(zhǎng)度為3的字符串{n,}指定至少n個(gè)匹配[abcd]{3,}由abcd中字母組成的任意長(zhǎng)度不小于3的字符串

{n,m}指定至少n個(gè)但不多于m個(gè)匹配

[abcd]{3,5}由abcd中字母組成的任意長(zhǎng)度不小于3,不大于5的字符串^指定起始字符

^[0-9]+[a-z]*以至少1個(gè)數(shù)字開頭,后接任意個(gè)小寫字母的字符串$指定結(jié)束字符^[0-9]\-[a-z]+$以1個(gè)數(shù)字開頭后接連字符“–”,并以至少1個(gè)小寫字母結(jié)尾的字符串5.6正則表達(dá)式1155.6.3字符串替換5.6.1字符串匹配5.6.2字符串拆分5.6正則表達(dá)式1165.6.3字符串替換5.6.1字符串匹配5.6.2字符串拆分5.6.1字符串匹配booleanmatches(Stringregex):表示此字符串是否匹配給定的正則表達(dá)式regex117Stringregex1="java-\d";System.out.println("java-1".matches(regex1));//輸出trueSystem.out.println("java-2".matches(regex1));//輸出trueSystem.out.println("java-10".matches(regex1));//輸出false//判斷字符串是否符合手機(jī)號(hào)碼規(guī)則:數(shù)字1開頭,后接10個(gè)數(shù)字Stringregex2="1\\d{10}";System.out.println(.matches(regex2));//輸出trueSystem.out.println("03978308333".matches(regex2));//輸出false5.6正則表達(dá)式1185.6.3字符串替換5.6.1字符串匹配5.6.2字符串拆分5.6.2字符串拆分119方法描述publicString[]split(Stringregex)基于給定正則表達(dá)式的匹配項(xiàng)對(duì)字符串進(jìn)行拆分,返回字符串?dāng)?shù)組publicString[]split(Stringregex,intlimit)基于給定正則表達(dá)式的匹配項(xiàng)對(duì)字符串進(jìn)行拆分,返回字符串?dāng)?shù)組,limit參數(shù)確定模式匹配多少次,最后返回的字符串?dāng)?shù)組長(zhǎng)度由limit決定Stringstr="192,34?56!8";String[]strList=str.split("\\p{P}");for(inti=0;i<strList.length;i++){System.out.print(strList[i]+"");}19234568針對(duì)split(regex,limit)版本,如果limit<=0,split(regex,limit)等同于split(regex)。如果limit>0,模式匹配次數(shù)最多為limit–1次Stringstr="192,34?56!8";String[]strList1=str.split("\\p{P}",-1);//strList1:19234568,4個(gè)元素String[]strList2=str.split("\\p{P}",0);//strList2:19234568,4個(gè)元素String[]strList3=str.split("\\p{P}",1);//strList3:192,34?56!8,1個(gè)元素String[]strList4=str.split("\\p{P}",2);//strList4:19234?56!8,2個(gè)元素String[]strList5=str.split("\\p{P}",3);//strList5:1923456!8,3個(gè)元素5.6正則表達(dá)式1205.6.3字符串替換5.6.1字符串匹配5.6.2字符串拆分5.6.3字符串替換121

方法描述publicStringreplace(CharSequencetarget,CharSequencereplacement)將目標(biāo)字符序列替換成第二個(gè)參數(shù)位置上的字符序列,返回新的字符串,不支持正則表達(dá)式publicStringreplaceAll(Stringregex,Stringreplacement)將目標(biāo)字符子串或者匹配正則表達(dá)式的子串,替換成第二個(gè)參數(shù)位置上的字符序列,返回新的字符串publicStringreplaceFirst(Stringregex,Stringreplacement)將目標(biāo)字符子串或者匹配正則表達(dá)式的第一個(gè)符合條件的子串,替換成第二個(gè)參數(shù)位置上的字符序列,返回新的字符串,支持正則表達(dá)式//不使用正則表達(dá)式的替換Stringstr1="北京:海淀:中關(guān)村";System.out.println(str1.replace(":",","));//輸出:北京,海淀,中關(guān)村Stringstr2="MyJavaStringandMatrix";System.out.println(str2.replaceAll("a","*"));//輸出:MyJ*v*String*ndM*trixSystem.out.println(str2.replaceFirst("a","*"));//輸出:MyJ*vaStringandMatrix//使用正則表達(dá)式的替換System.out.println(str1.replaceAll("\\p{P}","#"));//輸出:北京#海淀#中關(guān)村System.out.println(str1.replaceFirst("\\p{P}","#"));//輸出:北京#海淀:中關(guān)村5.6.3字符串替換下面是使用正則表達(dá)式將手機(jī)號(hào)中間四位替換成*進(jìn)行脫敏處理122Stringstr3=;Stringreg1="(\\d{3})(\\d{4})(\\d{4})";//數(shù)字分成三組System.out.println(str3.replaceAll(reg1,"$1****$3"));//輸出:187****0456$1、$2、$3分別對(duì)應(yīng)正則表達(dá)式3個(gè)部分\\d{3}、\\d{4}、\\d{4}在replaceAll方法中,"$1****$3"表示第一個(gè)部分、第三個(gè)部分保持不變,中間部分用****替換內(nèi)容1235.1一維數(shù)組5.2二維數(shù)組5.3多維數(shù)組5.4數(shù)組應(yīng)用示例5.8可變長(zhǎng)參數(shù)列表5.9命令行參數(shù)5.5字符串5.6正則表達(dá)式5.7字符串應(yīng)用示例5.7字符串應(yīng)用示例一個(gè)字符串如果從左向右讀和從右向左讀是一樣的,這個(gè)字符串被稱為回文(Palindrome)“l(fā)evel”、“noon”、“dad”、“mom”都是回文;而“te

溫馨提示

  • 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)論