考虑下面这个简单的例子,我们给一个字符串类型的 val 变量:
- object Test {
- val greeting: String = "Hello, world!"
- def main(args: Array[String]) {
- println( greeting )
- }
- }
在这里,上面的值类型是从Java的java.lang.String借来的,因为Scala的字符串也是Java字符串。这一点是非常好的,要注意:每一个Java类可用在Scala中。因此,Scala没有String类并直接利用Java字符串String类。因此,这一章已被写入保持Java String的基础。
在Scala中与在Java中一样,一个字符串是不可变的对象,也就是,这是不能被修改的对象。另一方面,对象是可以修改的,如数组对象,被称为可变对象。由于字符串是非常有用的对象,在本节的其余部分,我们目前最重要了解类java.lang.String的方法定义。
创建字符串:
最直接的方法来创建一个字符串的编写方法是:
- 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提供字符串构建器类( String Builder )。
字符串长度:
用于获得关于对象的信息的方法是已知的存取方法。可以使用字符串使用一个存取方法是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()方法: