• Scala基础入门


    Scala基础

    Scala是什么

    ​ Scala (Scalable Language)是一门多范式的编程语言。一种类似Java的编程语言,运行在JVM虚拟机上,设计初衷是要继承面向对象和函数是编程的各种特性,即有强大的函数式编程支持,又是一种纯粹的面向对象编程语言。

    Scala 语法和规则

    1. Scala中的关键字

    abstractcasecatchclass
    defdoelseextends
    falsefinalfinallyfor
    forSomeifimplicitimport
    lazymatchnewnull
    objectoverridepackageprivate
    protectedreturnsealedsuper
    thisthrowtraittry
    truetypevalvar
    whilewithyield
    -:==>
    <-<:<%>:
    #@

    2. 静态类型语言

    ​ Scala与Java一样,是一种静态类型语言:使用变量前必须先声明。但是Scala必须在声明的时候赋初值。Scala也是一种强类型语言:可以指定要使用的类型,类似于Java一样。但与Java不同的是,并非必须显示指定类型。

    var a:Int = 0
    var b:String = _
    var c:Double = 0
    .....
    
    • 1
    • 2
    • 3
    • 4

    ​ 声明方法的输入参数和返回值是,必须指定类型,但是在方法或函数中声明变量时,可以不指定类型,IDE会自动根据值推断出变量的正确类型。

    3. 变量和常量

    ​ Scala支持两种变量,声明方法的参数或类的实例成员时,必须使用一下两个关键词。

    // 用于声明变量
    var a : Int = 0
    // 用于声明常量
    val b : String = "hello world"
    
    • 1
    • 2
    • 3
    • 4

    ​ 两种类型跟Java类似,变量可以随意修改,常量相当于Java中用final修饰的变量,只能赋值一次。如果常量指向一个可修改的类实例的话,任然可以修改这个实例的内容。

    ​ Scala不支持静态变量(类变量),但是支持可用于替代静态变量的单例对象。

    tips:

    ​ 在Scala编写过程中,尽量使用常量,不可修改的值是函数式编程的基石。

    4. Scala常用的数据类型

    image-20220523212219466

    ​ 在Java中,祖先类是Object,但是在Scala中,祖先类是Any,一切数据都是对象,都是 Any 的子类。

    ​ Scala中的数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),它们都是对象。

    ​ Scala中数据类型依然遵守低精度值类型自动向高精度值类型转换(隐式转换)。

    ​ Unit:数据类型,对应Java中的void,用于方法返回值的位置,表示方法没有返回值,但是Unit作为方法返回值类型时,如果没有返回内容,自动返回**()**。

    ​ Null:空值null,它是所有引用类型的子类,Null不兼容值类型。

    ​ Nothing:所有数据类型的子类,主要用在要给函数没有明确返回值时使用,这样就可以抛出返回值,返回给任何的变量或函数。

    5.访问修饰符

    Scala中访问修饰符基本和Java一致,分别有:private 、protected、public

    如果没有指定访问修饰符的话,默认情况下,Scala对象级别都是public

    在Scala中,private修饰的对象比Java中更严格,在嵌套类的情况下,外层类甚至不能访问被嵌套类中的私有成员。

    protected修饰的对象也比Java更严格一些,只允许保护成员在定义了该类的类的子类中被访问,而Java中,protected修饰的成员,除了定义该成员的类的子类可以访问,同一个包的其他类也可以访问。

    6. 类和对象

    1. 导入成员:

      ​ 在Scala中,导入成员类似于Java,但是Scala中的功能更加强大。

      // 在Scala中,通配符不是*,而是_
      import com.example.parent.A._
      // 同一条语句可以导入多个成员
      import com.example.parent.{A,B}
      // 也可以重新对导入成员命名
      import com.example.parent.{C => D}
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    2. 实例变量和实例方法

      Scala不支持静态成员(类变量和类方法),因此没有static或等价的关键字,但是Scala支持单例类。

      实例变量:在类中定义def和val变量,大多数情况下可以不指定变量类型。

      实例方法:方法声明类似Java,如果方法有参数,必须指定参数的数据类型,方法可以什么都不返回,也可以返回一个对象实例

      class Test{
          def add:Int = {
              val a = 100
              val b = 100 
              val res = 0
              res = a + b
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      ​ 在Scala中,任何方法都会自动返回最后一个表达式的值。也可以用return语句返回,但是不推荐使用。在Scala中,方法和函数不能提早结束,如果使用了return语句,必须指定方法的返回类型。

    3. 构造器

      和Java一样,Scala构造对象也需要调用构造方阿飞,并且可以有任意多个构造方法。

      Scala类的构造器包括:主构造方法和辅助构造方法。

      1. 辅助构造器:函数的名称 **this **可以有多个,编译器通过参数来区分。
      2. 辅助构造方法不能直接构建对象,必须直接或间接调用主构造方法。
      // 简单例子 如果主构造器无参数,小括号可以省略。
      class Person{
          var name = _
          var age = _
          def the(age:Int){
              this()
              this.age = age
              println("辅助构造器")
          }
          println("主构造器")
      }
      object Person {
          def main(args:Array[String]):Unit = {
              val person  = new Person(18)
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16


    tips

    编程范式

    ​ 编程范式(Programming paradigm)是程序语言背后的思想。范式即模式、方法。代表了程序设计者认为程序应该如何被构建和执行的看法。常见的变成范式由:过程式,面向对象,函数式,泛型编程等。

    多范式编程语言

    ​ 多范式,是指这个语言支持使用者采用多种不同的编程范式来编写程序。

    编程范式

    ​ 编程范式(Programming paradigm)是程序语言背后的思想。范式即模式、方法。代表了程序设计者认为程序应该如何被构建和执行的看法。常见的变成范式由:过程式,面向对象,函数式,泛型编程等。

    多范式编程语言

    ​ 多范式,是指这个语言支持使用者采用多种不同的编程范式来编写程序。

  • 相关阅读:
    Elasticsearch实现全文搜索的步骤和实现原理
    『无为则无心』Python日志 — 69、补充:logging.basicConfig()函数说明
    基于ubuntu tun虚拟网卡设备完成ping的发送与模拟接收
    java调用其他项目接口
    工业自动化与物联网技术的融合:开启智能制造新时代
    JAVA都市书城系统计算机毕业设计Mybatis+系统+数据库+调试部署
    LeetCode 50题:实现Pow(x,n)
    kubernetes学习笔记
    计算机体系结构复习笔记
    【Linux基础】zsh 和 Oh My Zsh
  • 原文地址:https://blog.csdn.net/weixin_43760048/article/details/124936296