zoukankan      html  css  js  c++  java
  • scala学习笔记1

    一、REPL

    scala解释器读到一个表达式,对它进行求值,将它的打印出来,接着再继续读下一个表达式。这个过程被称作 读取-打印-循环,即REPL。

    从技术上讲,scala程序并不是一个解释器。实际发生的是,你输入的内容被快速的编译成字节码,然后这段字节码交由java虚拟机执行。正因如此,大多数scala程序员更倾向将它称作REPL。

    二、声明值

    2.1val定义的值实际上是一个常量,你无法改变它的内容。

    scala> val result = 8*2
    result: Int = 16
    
    scala> result = 0
    <console>:11: error: reassignment to val
           result = 0
                  ^

    scala鼓励使用val

    你需要给出值或者变量的类型,声明值或者变量但不做初始化会报错。

    在必要的时候,你也可以指定类型

    scala> val result = 8*2
    result: Int = 16
    
    scala> result = 0
    <console>:11: error: reassignment to val
           result = 0
                  ^

    三、scala常用类型

    3.1基本数据类型

    scala和java中的数据类型一样有8种,但是在scala中并不刻意区分基本类型和引用类型。你可以对一个对数字执行方法,例如

    scala> 1.toString()

    res1: String = 1

    在scala中我们不需要包装类型,在基本类型和包装类型之间的转换是scala编译器的工作。

    BigInt和BigDecimal类,用于任意大小的数字。这些类背后分别对应的是java.math.BigInteger和java.math.BigDecimal。他们用起来更加方便,你可以用常规的数学操作符来操作他们。

    3.2字符串类型

    scala用底层的java.lang.String类来表示字符串。不过,他通过StringOps类给字符串追加了上百种操作。

    intersect方法输出两个字符串共同的一组字符

    scala> "hello".intersect("world")
    res0: String = lo

    在这个表达式中,String对象被隐式的转换为了StringOps对象,接着StringOps类的intersect方法被调用。

    同样的scala还提供了RichInt、RichDouble、RichChar等。他们提供了Int,Double,Char所不具备的快捷方法。我们前面用到的1.toString就是RichInt类中的方法。首先1被转换成了RichInt,然后再应用头方法。

    3.3类型转换

    在scala中我们使用方法而不是强制类型转换。

    scala> 99.44.toInt
    res3: Int = 99
    
    scala> 99.toChar
    res4: Char = c
    
    scala> "99.44".toDouble
    res5: Double = 99.44
  • 相关阅读:
    Java ExecutorService四种线程池的例子与说明
    当代中国社会划分为十大阶层
    各大公司Java面试题超详细总结
    浅谈Java中的hashcode方法
    Java 9的JDK中值得期待的:不仅仅是模块化
    整理Excel数据,10秒搞定别人半天的工作量
    零基础搭建Hadoop大数据处理-环境
    Java性能优化权威指南第三章虚拟机概览第一部分
    15个顶级Java多线程面试题及答案
    最全面的Java多线程用法解析
  • 原文地址:https://www.cnblogs.com/dongdone/p/5701992.html
Copyright © 2011-2022 走看看