• scala 基本语法


    scala 基本语法

    scala


     

    1.Scala与Java的关系

    Scala与Java的关系是非常紧密的!!
    因为Scala是基于Java虚拟机,也就是JVM的一门编程语言。所有Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行。
    所以Scala和Java是可以无缝互操作的。Scala可以任意调用Java的代码。所以Scala与Java的关系是非常非常紧密的。
    
     

    2.Scala解释器的使用

    ·REPL:Read(取值)-> Evaluation(求值)->Print(打印)->Loop(循环)。
        scala解释器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM来执行。
    ·计算表达式:在scala>命令行内,键入scala代码,解释器会直接返回结果给你。如果你没有指定变量来存放这个值,那么值默认的名称为res,而且会显示结果的数据类型,比如Int、Double、String等等。
        ·例如,输入1 + 1,会看到res0: Int = 2
    ·内置变量:在后面可以继续使用res这个变量,以及它存放的值。
        ·例如,2.0 * res0,返回res1: Double = 4.0
        ·例如,"Hi, " + res0,返回res2: String = Hi, 2
    ·自动补全:在scala>命令行内,可以使用Tab键进行自动补全。
        ·例如,输入res2.to,敲击Tab键,解释器会显示出以下选项,toCharArray,toLowerCase,toString,toUpperCase。因为此时无法判定你需要补全的是哪一个,因此会提供给你所有的选项。
        ·例如,输入res2.toU,敲击Tab键,直接会给你补全为res2.toUpperCase。
    
     

    3.为什么使用常量而非变量

    在scala程序中,通常建议使用val,也就是常量,因此比如类似于spark的大型复杂系统中,需要大量的网络传输数据,如果使用var,可能会担心值被错误的更改。
    
    在Java的大型复杂系统的设计和开发中,也使用了类似的特性,我们通常会将传递给其他模块 / 组件 / 服务的对象,设计成不可变类(Immutable Class)。在里面也会使用java的常量定义,比如final,阻止变量的值被改变。从而提高系统的健壮性(robust,鲁棒性),和安全性。
    
     

    4.数据类型与操作符

    ·基本数据类型:Byte、Char、Short、Int、Long、Float、Double、Boolean。
        ·乍一看与Java的基本数据类型的包装类型相同,但是scala没有基本数据类型与包装类型的概念,统一都是类。scala自己会负责基本数据类型和引用类型的转换操作。
        ·使用以上类型,直接就可以调用大量的函数,例如,1.toString(),1.to(10)。
    
    ·类型的加强版类型:scala使用很多加强类给数据类型增加了上百种增强的功能或函数。
        ·例如,String类通过StringOps类增强了大量的函数,"Hello".intersect(" World")。
        ·例如,Scala还提供了RichInt、RichDouble、RichChar等类型,RichInt就提供了to函数,1.to(10),此处Int先隐式转换为RichInt,然后再调用其to函数
    
    ·基本操作符:scala的算术操作符与java的算术操作符也没有什么区别,比如+、-、*、/、%等,以及&、|、^、>>、<<等。
        ·但是,在scala中,这些操作符其实是数据类型的函数,比如1 + 1,可以写做1.+(1)
        ·例如,1.to(10),又可以写做1 to 10
        ·scala中没有提供++、--操作符,我们只能使用+和-,比如counter = 1,counter++是错误的,必须写做counter += 1.
    
     

    5.scala中无i++,i--

    scala中的++,--只能写成i = i+1,i += 1
    
     

    6.函数调用和apply函数

    ·函数调用方式:在scala中,函数调用也很简单。
        ·例如,import scala.math._,sqrt(2),pow(2, 4),min(3, Pi)。
        ·不同的一点是,如果调用函数时,不需要传递参数,则scala允许调用函数时省略括号的,例如,"Hello World".distinct
    
    ·apply函数
        ·Scala中的apply函数是非常特殊的一种函数,在Scala的object中,可以声明apply函数。而使用“类名()”的形式,其实就是“类名.apply()”的一种缩写。通常使用这种方式来构造类的对象,而不是使用“new 类名()”的方式。
        ·例如,"Hello World"(6),因为在StringOps类中有def apply(n: Int): Char的函数定义,所以"Hello World"(6),实际上是"Hello World".apply(6)的缩写。
        ·例如,Array(1, 2, 3, 4),实际上是用Array object的apply()函数来创建Array类的实例,也就是一个数组。
    stay foolish,stay hungry!
  • 相关阅读:
    Neo4j图形数据库备份
    Linux中Tomcat 自动设置CATALINA_HOME方法
    VNC viewer 无法打开oracle 11g图形界面方案
    CYPHER 语句(Neo4j)
    Tomcat部署时war和war exploded区别
    java中不能使用小数点(.)来作为分隔符
    做一个完整的Java Web项目需要掌握的技能
    从零讲Java,给你一条清晰地学习道路!该学什么就学什么!
    MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题
    chrome浏览器的跨域设置——包括版本49前后两种设置
  • 原文地址:https://www.cnblogs.com/ios1988/p/6572705.html
Copyright © 2020-2023  润新知