美文网首页Spark
Scala字符串和Trait特征

Scala字符串和Trait特征

作者: geekAppke | 来源:发表于2018-12-07 09:38 被阅读37次
1. String 不可变
2. StringBuilder 可变,动态增加字符串

1、string操作方法举例

比较:equals
比较忽略大小写:equalsIgnoreCase
indexOf:返回字符串中第一个字符所在的下标

// String && StringBuilder
val str = "abcd"
val str1 = "ABCD"
println(str.equals(str1)) // false
println(str.equalsIgnoreCase(str1)) // true
println(str.indexOf(97))
println(str.indexOf("b"))
println(str==str1)

/**
  * compareToIgnoreCase
  * 
  * 如果参数字符串等于此字符串,则返回值 0;
  * 如果此字符串小于字符串参数,则返回一个小于 0 的值;
  * 如果此字符串大于字符串参数,则返回一个大于 0 的值。
  */
println(str.compareToIgnoreCase(str1))
    
val strBuilder = new StringBuilder
// 下面都是拼接字符串
strBuilder.append("abc")
//    strBuilder.+('d')
strBuilder+ 'd'
//    strBuilder.++=("efg")
strBuilder++= "efg" 
//    strBuilder.+=('h')
strBuilder+= 'h' 
strBuilder.append(1.0)
strBuilder.append(18f)

println(strBuilder) // abcdefgh1.018.0

2、Trait特征

相当于 Java 的接口,实际上它比接口还功能强大
与接口不同的是,它还可以定义属性和方法的实现
一般情况下Scala的类可以继承多个Trait,从结果来看就是实现了多重继承

trait中带属性带方法实现

  • 继承的多个trait中如果有同名的方法属性,必须要在类中使用“override”重新定义
  • Trait中不可以传参数
  • Trait的定义用关键字是trait
trait Read {
  val readType = "Read"
  val gender = "m"
  def read(name:String){
    println(name+" is reading")
  }
}

trait Listen {
  val listenType = "Listen"
  val gender = "m"
  def listen(name:String){
    println(name + " is listenning")
  }
}

// 第一个关键字用extends;之后用with
class Person() extends Read with Listen{
  override val gender = "f"
}

object test {
  def main(args: Array[String]): Unit = {
    val person = new Person()
    person.read("zhangsan")
    person.listen("lisi")
    println(person.listenType)
    println(person.readType)
    println(person.gender)
  }
}

trait中带方法不实现

trait Equle{
  def isEqule(x:Any) :Boolean 
  def isNotEqule(x : Any)  = {
    !isEqule(x)
  }
}

class Point(xx:Int, yy:Int) extends Equle {
  val x = xx
  val y = yy

  def isEqule(p:Any) = {
    // 是不是某个类的实例;作为某个类的实例
    p.isInstanceOf[Point] && p.asInstanceOf[Point].x==this.x
  }
}

object Lesson_Trait2 {
  def main(args: Array[String]): Unit = {
    val p1 = new Point(1,2)
    val p2 = new Point(1,3)
    println(p1.isEqule(p2))
    println(p1.isNotEqule(p2))
  }
}

Scala学习笔记导航

相关文章

  • Scala字符串和Trait特征

    1、string操作方法举例 比较:equals比较忽略大小写:equalsIgnoreCaseindexOf:返...

  • Scala特征(Trait)

    Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属...

  • Scala之旅(TOUR OF SCALA)——特征(TRAIT

    特征被用来在类与类之间共享接口和属性。它与 Java 8 中的接口很相似。类(Classes)和对象(Object...

  • Scala编程基础24:Scala特征

    Scala Trait(特征)相当于Java中的接口,实际上它比接口的功能还要强大。与接口不同的是,Trait可以...

  • scala-09-接口

    Scala语言中,采用trait(特质,特征)来代替接口的概念,也就是说,多个类具有相同的特征(特征)时,就可以将...

  • scala的Trait

    Trait基础 scala 中的Trait和Java中的接口(interface)极其类似 接口是彻底的抽象类,所...

  • trait in scala

    大多数情况下, Scala 中的 trait 相当于 Java 中的借口, 或者 Perl 6 中的 Role。S...

  • 特征变量(Trait Variations)

    特征变量(Trait Variations) Trait Variations,特征变量。 在Xcode8中删除了...

  • scala学习 - 特质

    本文来自《Programming in Scala》一书 Scala学习之特质(trait) 1 特质的定义 特质...

  • Scala语言入门七(trait)

    Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属...

网友评论

    本文标题:Scala字符串和Trait特征

    本文链接:https://www.haomeiwen.com/subject/bkwocqtx.html