日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala基础教程(六):字符串、数组、集合

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala基础教程(六):字符串、数组、集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建字符串:

最直接的方法來創建一個字符串的編寫方法是:

var greeting = "Hello world!"; ? or ? var greeting:String = "Hello world!";

每當遇到一個字符串在代碼中,編譯器創建String對象及其值,在這個示例中使用:“Hello world!”,但如果你喜歡,可以給字符串,因為這里我已經在聲明中交替顯示。

object Test { ?? val greeting: String = "Hello, world!" ? ?? def main(args: Array[String]) { ????? println( greeting ) ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test Hello, world! ? C:/>

正如前面提到的,String類是不可變的,所以一旦它被創建,String對象不能改變。如果需要做大量修改字符的字符串,那么應該使用在Scala提供字符串構建器類(?StringBuilder?)。

字符串長度:

用于獲得關于對象的信息的方法是已知的存取方法。可以使用字符串使用一個存取方法是length()方法,它返回包含在字符串對象中的字符數。

下面兩行代碼被執行之后,len 等于17:

object Test { ?? def main(args: Array[String]) { ????? var palindrome = "Dot saw I was Tod"; ????? var len = palindrome.length(); ????? println( "String Length is : " + len ); ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test String Length is : 17 ? C:/>

連接字符串:

String類包括用于連接兩個字符串的方法:

string1.concat(string2);

這返回一個string1將string2添加到它的末尾的一個新字符串。也可以使用concat()方法用字符串,如:

"My name is ".concat("Zara");

字符串比較常用連接在一起,使用+運算符,如:

"Hello," + " world" + "!"

這將產生:

"Hello, world!"

讓我們來看看下面的例子:

object Test { ?? def main(args: Array[String]) { ????? var str1 = "Dot saw I was "; ????? var str2 =? "Tod"; ????? println("Dot " + str1 + str2); ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test Dot Dot saw I was Tod ? C:/>

創建格式化字符串:

已經有兩個方法:printf()和format()方法使用格式化數字打印輸出。 String類有一個等價類的方法,format(),它返回一個String對象,而不是一個PrintStream對象。讓我們看看下面的例子,這是使用printf()方法:

object Test { ?? def main(args: Array[String]) { ????? var floatVar = 12.456 ????? var intVar = 2000 ????? var stringVar = "Hello, Scala!" ????? var fs = printf("The value of the float variable is " + ?????????????????? "%f, while the value of the integer " + ?????????????????? "variable is %d, and the string " + ?????????????????? "is %s", floatVar, intVar, stringVar) ????? println(fs) ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test The value of the float variable is 12.456000, while the value of the integer var iable is 2000, and the string is Hello, Scala!() ? C:/>

字符串的方法:

以下是由java.lang.String類中定義,并且可以直接在Scala程序中使用方法列表:

SN

方法及描述

1

char charAt(int index)?
返回指定索引處的字符

2

int compareTo(Object o)?
該字符串與另一個對象比較

3

int compareTo(String anotherString)
按字典順序比較兩個字符串

4

int compareToIgnoreCase(String str)?
比較兩個字符串字典順序,忽略大小寫差異

5

String concat(String str)
將指定字符串添加這個字符串的結尾處

6

boolean contentEquals(StringBuffer sb)?
返回true當且僅當此String表示的字符與指定的StringBuffer相同的序列

7

static String copyValueOf(char[] data)?
返回表示所指定的數組中的字符序列的字符串

8

static String copyValueOf(char[] data, int offset, int count)
返回表示所指定的數組中的字符序列的字符串。

9

boolean endsWith(String suffix)?
測試此字符串是否以指定的后綴結束。

10

boolean equals(Object anObject)
比較該字符串和指定的對象。

11

boolean equalsIgnoreCase(String anotherString)
比較該字符串到另一個字符串,不考慮大小寫。

12

byte getBytes()?
將此String解碼使用平臺的默認字符集的字節序列,并將結果存儲到一個新的字節數組。

13

byte[] getBytes(String charsetName
將此String解碼使用指定的字符集的字節序列,并將結果存儲到一個新的字節數組。

14

void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
復制字符從這個字符串到目標字符數組。

15

int hashCode()
返回此字符串的哈希碼。

16

int indexOf(int ch)?
返回此字符串指定字符第一次出現處的索引。

17

int indexOf(int ch, int fromIndex)?
返回此字符串指定的字符,開始搜索指定索引處的第一次出現處的索引。

18

int indexOf(String str)
返回此字符串的指定子第一次出現處的索引。

19

int indexOf(String str, int fromIndex)
返回此字符串中第一次出現的指定子字符串,開始在指定的索引處的索引。

20

String intern()
返回字符串對象的規范表示。

21

int lastIndexOf(int ch)?
返回此字符串指定字符最后一次出現處的索引。

22

int lastIndexOf(int ch, int fromIndex)?
返回此字符串指定字符最后一次出現處的索引,搜索開始向后指定索引處。

23

int lastIndexOf(String str)
返回此字符串指定子的最右邊出現處的索引。

24

int lastIndexOf(String str, int fromIndex)?
返回此字符串的指定子最后一次出現處的索引,搜索開始向后指定索引處。

25

int length()?
返回此字符串的長度。

26

boolean matches(String regex)
判斷此字符串是否與給正則表達式匹配。

27

boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)?
測試兩個字符串區域是否相等。

28

boolean regionMatches(int toffset, String other, int ooffset, int len)
測試兩個字符串區域是否相等。

29

String replace(char oldChar, char newChar)
返回通過用newChar更換oldChar中出現的所有該字符串產生一個新的字符串。

30

String replaceAll(String regex, String replacement
替換此字符串匹配給定的正則表達式以給定替換的每個子字符串。

31

String replaceFirst(String regex, String replacement)?
替換此字符串匹配給定的正則表達式以給定替換的第一子字符串。

32

String[] split(String regex)?
來此字符串圍繞拆分給定的正則表達式的匹配。

33

String[] split(String regex, int limit)?
圍繞拆分給定的正則表達式的匹配來此字符串。

34

boolean startsWith(String prefix)
測試此字符串是否以指定的前綴開始。

35

boolean startsWith(String prefix, int toffset)
測試這個字符串開頭是否以指定索引指定的前綴開始。

36

CharSequence subSequence(int beginIndex, int endIndex)
返回一個新的字符序列,它是此序列的子序列。

37

String substring(int beginIndex)
返回一個新字符串,它是此字符串的一個子字符串。

38

String substring(int beginIndex, int endIndex)
返回一個新字符串,它是此字符串的一個子字符串。

39

char[] toCharArray()?
這個字符串到一個新的字符數組轉換。

40

String toLowerCase()
將所有在這個字符串的字符使用默認語言環境的規則轉換為小寫。

41

String toLowerCase(Locale locale)
將所有在此字符串中的字符使用給定Locale的規則轉換為小寫。

42

String toString()
這個對象(這已經是一個字符串!)本身被返回。

43

String toUpperCase()?
將所有的字符在這個字符串使用默認語言環境的規則轉換為大寫。

44

String toUpperCase(Locale locale)?
將所有的字符在這個字符串使用給定的Locale規則轉換為大寫。

45

String trim()?
返回字符串的副本,以開頭和結尾的空白忽略。

46

static String valueOf(primitive data type x)?
返回傳遞的數據類型參數的字符串表示。

?

?

Scala中提供了一種數據結構-數組,其中存儲相同類型的元素的固定大小的連續集合。數組用于存儲數據的集合,但它往往是更加有用認為數組作為相同類型的變量的集合。

取替聲明單個變量,如number0, number1, ..., 和number99,聲明一個數組變量,如號碼和使用numbers[0],numbers[1],...,numbers[99]表示單個變量。本教程 介紹了如何聲明數組變量,創建數組和使用索引的過程變量數組。數組的第一個元素的索引是數字0和最后一個元素的索引為元素的總數減去1。

聲明數組變量:

要使用的程序的數組,必須聲明一個變量來引用數組,必須指定數組變量可以引用的類型。下面是語法聲明數組變量:

var z:Array[String] = new Array[String](3) ? or ? var z = new Array[String](3)

在這里,z被聲明為字符串數組,最多可容納三個元素。可以將值分配給獨立的元素或可以訪問單個元素,這是可以做到通過使用類似于以下命令:

z(0) = "Zara"; z(1) = "Nuha"; z(4/2) = "Ayan"

在這里,最后一個例子表明,在一般的索引可以是產生一個全數字的表達式。定義數組還有另一種方式:

var z = Array("Zara", "Nuha", "Ayan")

下圖展示了數組myList。在這里,myList中擁有10個double值,索引是從0到9。

處理數組:

當要處理數組元素,我們經常使用循環,因為所有的數組中的元素具有相同的類型,并且數組的大小是已知的。這里是展示如何創建,初始化和處理數組的完整的例子:

object Test { ?? def main(args: Array[String]) { ????? var myList = Array(1.9, 2.9, 3.4, 3.5) ????? ??????// Print all the array elements ????? for ( x <- myList ) { ???????? println( x ) ????? } ? ????? // Summing all elements ????? var total = 0.0; ????? for ( i <- 0 to (myList.length - 1)) { ???????? total += myList(i); ????? } ????? println("Total is " + total); ? ????? // Finding the largest element ????? var max = myList(0); ????? for ( i <- 1 to (myList.length - 1) ) { ???????? if (myList(i) > max) max = myList(i); ????? } ????? println("Max is " + max); ??? ???} }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test 1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5 ? C:/>

多維數組:

有很多情況下,需要定義和使用多維數組(即數組的元素數組)。例如,矩陣和表格結構的實例可以實現為二維數組。

Scala不直接支持多維數組,并提供各種方法來處理任何尺寸數組。以下是定義的二維數組的實例:

var myMatrix = ofDim[Int](3,3)

這是一個具有每個都是整數,它有三個元素數組3元素的數組。下面的代碼展示了如何處理多維數組:

import Array._ ? object Test { ?? def main(args: Array[String]) { ????? var myMatrix = ofDim[Int](3,3) ????? ??????// build a matrix ????? for (i <- 0 to 2) { ???????? for ( j <- 0 to 2) { ??????????? myMatrix(i)(j) = j; ???????? } ????? } ????? ??????// Print two dimensional array ????? for (i <- 0 to 2) { ???????? for ( j <- 0 to 2) { ??????????? print(" " + myMatrix(i)(j)); ???????? } ???????? println(); ????? } ??? ???} }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test 0 1 2 0 1 2 0 1 2 ? C:/>

聯接數組:

以下是使用concat()方法來連接兩個數組的例子。可以通過多個陣列作為參數傳遞給concat()方法。

import Array._ ? object Test { ?? def main(args: Array[String]) { ????? var myList1 = Array(1.9, 2.9, 3.4, 3.5) ????? var myList2 = Array(8.9, 7.9, 0.4, 1.5) ? ????? var myList3 =? concat( myList1, myList2) ????? ??????// Print all the array elements ????? for ( x <- myList3 ) { ???????? println( x ) ????? } ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test 1.9 2.9 3.4 3.5 8.9 7.9 0.4 1.5 ? C:/>

創建具有范圍數組:

下面是示例,這使得使用range() 方法來產生包含在給定的范圍內增加整數序列的數組。可以使用最后一個參數創建序列; 如果不使用最后一個參數,然后一步將被假定為1。

import Array._ ? object Test { ?? def main(args: Array[String]) { ????? var myList1 = range(10, 20, 2) ????? var myList2 = range(10,20) ? ????? // Print all the array elements ????? for ( x <- myList1 ) { ???????? print( " " + x ) ????? } ????? println() ????? for ( x <- myList2 ) { ???????? print( " " + x ) ????? } ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test 10 12 14 16 18 10 11 12 13 14 15 16 17 18 19 ? C:/>

Scala中數組方法:

以下是重要的方法,可以同時使用數組。如上所示,則必須使用任何提及的方法之前,要導入Array._包。有關可用方法的完整列表,請Scala中的官方文件。

SN

方法及描述

1

def apply( x: T, xs: T* ): Array[T]
創建T對象,其中T可以是Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean數組。

2

def concat[T]( xss: Array[T]* ): Array[T]
連接所有陣列成一個數組。

3

def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit
復制一個數組到另一個。相當于JavaSystem.arraycopy(src, srcPos, dest, destPos, length).

4

def empty[T]: Array[T]
返回長度為0的數組

5

def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]
返回一個包含一個函數的重復應用到初始值的數組。

6

def fill[T]( n: Int )(elem: => T): Array[T]
返回包含某些元素的計算的結果的次數的數組。

7

def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]
返回一個二維數組,其中包含某些元素的計算的結果的次數。

8

def iterate[T]( start: T, len: Int)( f: (T) => T ): Array[T]
返回一個包含一個函數的重復應用到初始值的數組。

9

def ofDim[T]( n1: Int ): Array[T]
創建數組給出的尺寸。

10

def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]
創建了一個2維數組

11

def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]
創建3維數組

12

def range( start: Int, end: Int, step: Int ): Array[Int]
返回包含一些整數間隔等間隔值的數組。

13

def range( start: Int, end: Int ): Array[Int]
返回包含的范圍內增加整數序列的數組。

14

def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]
返回包含一個給定的函數的值超過從0開始的范圍內的整數值的數組。

15

def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]
返回一個包含給定函數的值超過整數值從0開始范圍的二維數組。

?

?

Scala有一組豐富的集合庫。集合是對事物的容器。這些容器可被測序,線性集像List, Tuple, Option, Map等集合的項目可具有元素的任意數量或有界到零個或一個元素(例如,Option)。

集合可能是嚴格或懶惰。懶集合有可能不消耗內存,直到他們被訪問,就像范圍元素。此外,集合可以是可變的(引用的內容可以更改)或不變(一個引用的東西指從未改變)。需要注意的是不可變的集合可能包含可變項。

對于一些問題,可變集合更好地工作,并為不可變集合更好地工作。如果有疑問,最好是先從一個不變的集合,如果需要可變進行更改。

本章給出最常用的集合類型對這些集合的信息和使用最頻繁的操作。

SN

集合使用說明

1

Scala Lists
Scala
List[T]T類型的鏈表

2

Scala Sets
集是相同類型的配對的不同元素的集合。

3

Scala Maps
映射是鍵/值對的集合。任何值可以根據它的鍵進行檢索。

4

Scala Tuples
不像數組或列表,元組可以容納不同類型的對象。

5

Scala Options
Option[T]
提供了一種容器,用于給定類型的零個或一個元素。

6

Scala Iterators
迭代不是集合,而是一種由一個訪問的集合之一的元素。

示例:

下面的代碼片段是一個簡單的例子來定義所有上述集合類型:

// Define List of integers. val x = List(1,2,3,4) ? // Define a set. var x = Set(1,3,5,7) ? // Define a map. val x = Map("one" -> 1, "two" -> 2, "three" -> 3) ? // Create a tuple of two elements. val x = (10, "Scala") ? // Define an option val x:Option[Int] = Some(5)

?

?

類是一個對象的藍圖。一旦定義一個類可以創建從類藍圖使用關鍵字new創建對象。下面是一個簡單的語法在Scala中定義一個類:

class Yiibai(xc: Int, yc: Int) { ?? var x: Int = xc ?? var y: Int = yc ? ?? def move(dx: Int, dy: Int) { ????? x = x + dx ????? y = y + dy ????? println ("Yiibai x location : " + x); ????? println ("Yiibai y location : " + y); ?? } }

這個類定義了兩個變量x和y和方法:move,沒有返回值。類變量被調用,類的字段和方法被稱為類方法。

類名可以作為一個類的構造函數,可以采取一些參數。上面的代碼定義了兩個構造函數的參數:xc和yc;它們都在類的主體內可見。

正如前面提到的,可以使用關鍵字new創建對象,然后可以按照下面的例子所示訪問類的字段和方法:

import java.io._ ? class Yiibai(val xc: Int, val yc: Int) { ?? var x: Int = xc ?? var y: Int = yc ?? def move(dx: Int, dy: Int) { ????? x = x + dx ????? y = y + dy ????? println ("Yiibai x location : " + x); ????? println ("Yiibai y location : " + y); ?? } } ? object Test { ?? def main(args: Array[String]) { ????? val pt = new Yiibai(10, 20); ? ????? // Move to a new location ????? pt.move(10, 10); ?? } }

當上述代碼被編譯和執行時,它產生了以下結果:

C:/>scalac Test.scala C:/>scala Test Yiibai x location : 20 Yiibai y location : 30 ? C:/>from: http://www.yiibai.com/scala/scala_basic_syntax.html

總結

以上是生活随笔為你收集整理的Scala基础教程(六):字符串、数组、集合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色国产视频网站 | 欧美二区视频 | www五月天com | 欧美熟妇久久久久 | 黑人巨大猛交丰满少妇 | 成人av网站免费 | 欧美日韩一区精品 | 久久久久久久久97 | 狼人精品一区二区三区在线 | 台湾性生生活1 | 欧美性网址| 成人免费看片在线观看 | 成人午夜一区 | 天天躁日日躁狠狠躁免费麻豆 | 国产丝袜视频在线观看 | 国内自拍青青草 | 黄色av免费在线播放 | 视频在线观看免费大片 | 日韩精美视频 | 一区二区三区四区视频 | 玩偶姐姐在线看 | 日韩精品成人一区 | 日韩激情在线 | 韩国禁欲系高级感电影 | 男女福利视频 | 91精品入口| 特级精品毛片免费观看 | 免费看黄20分钟 | 久久精品久久精品久久精品 | 在线观看的黄网 | 日韩视频在线观看二区 | 欧美人与禽性xxxxx杂性 | 涩涩涩综合 | 老司机精品视频在线 | 91精品国产高潮对白 | 日本少妇性高潮 | 国产97在线 | 亚洲 | 国产成人77亚洲精品www | 日本中文字幕免费观看 | 精品中文字幕视频 | 禁漫天堂黄漫画无遮挡观看 | 国产人妻精品一区二区三 | 三级a级片| 欧美日韩大片在线观看 | 色视频在线免费观看 | 免费的黄色的网站 | 日本a在线| 小泽玛利亚一区二区三区 | 精品欧美一区二区在线观看 | 国产aⅴ一区二区三区 | 樱花影院最新免费观看攻略 | 一道本无吗一区 | 91在线小视频 | 午夜资源站 | 亚洲人妻一区二区三区 | 免费观看黄色小视频 | 久操伊人 | 亚洲精品乱码久久久久久国产主播 | 国产一级二级 | 国产日韩二区 | 日韩一区电影 | 碧蓝之海动漫在线观看免费高清 | 免费av电影网址 | 99超碰在线观看 | 亚洲小说图片区 | 视频二区在线观看 | 亚洲丝袜在线观看 | 午夜国产福利在线 | 中文字幕一区二区三区乱码不卡 | 狠狠躁18三区二区一区传媒剧情 | 婷婷深爱激情 | 极品人妻一区二区 | 天天操穴 | 少妇肥臀大白屁股高清 | 偷拍老头老太高潮抽搐 | 哪里可以看免费毛片 | 色综合综合网 | 中文字幕一区二区免费 | 亚洲va久久久噜噜噜久久天堂 | 精品日韩一区二区三区四区 | 亚洲视频在线播放 | 在线播放的av | 日本人添下边视频免费 | 99精品在线免费观看 | 国产精伦 | 内射一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 全部孕妇毛片丰满孕妇孕交 | 国产精品suv一区二区 | 日韩最新网址 | 天堂激情网 | 就要日就要操 | 五月天色网站 | 免费的av| 4438成人网 | 久久精品国产亚洲AV无码男同 | 午夜视频在线网站 | 热久久国产| 久久午夜网站 |