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
.....

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

3. 变量和常量

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

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

​ 两种类型跟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}
    
  2. 实例变量和实例方法

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

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

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

    class Test{
        def add:Int = {
            val a = 100
            val b = 100 
            val res = 0
            res = a + b
        }
    }
    

    ​ 在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)
        }
    }
    


tips

编程范式

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

多范式编程语言

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

编程范式

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

多范式编程语言

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值