# scala_base **Repository Path**: XuLin790/scala_base ## Basic Information - **Project Name**: scala_base - **Description**: scala笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # scala_base ### Scala概述 #### Scala语言的特点 Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。 ``` (1)Scala 是一门多范式 (multi-paradigm) 的编程语言,Scala支持面向对象和函数式编程 (2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。 (3)Scala 单作为一门语言来看, 非常的简洁高效 (4)Scala 在设计时,马丁·奥德斯基 是参考了Java的设计思想,可以说Scala是源于java,同时马丁·奥德斯基 也加入了自己的思想,将函数式编程语言的特点融合到JAVA中, 因此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala 和 Java相同点和不同点,就可以快速的掌握Scala这门语言 ``` #### 开发环境搭建 ##### Windows\Mac环境 Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机并配置好,推荐安装JDK1.8 在 [http://www.scala-lang.org/](http://www.scala-lang.org/) 下载程序安装包以Scala2.11.12为例 [![](img/scala_down.png)](https://www.scala-lang.org/download/2.11.12.html "markdown") ``` 配置JDK的环境变量 JAVA_HOME 配置Scala的环境变量SCALA_HOME 将Scala安装目录下的bin目录加入到PATH环境变量
在PATH变量中添加:%SCALA_HOME%\bin 在命令行窗口中输入“scala”命令打开scala解释器(REPL) ``` ![](img/scala_cmd.png) ##### IDEA配置Scala开发 ![](img/scala_idea.png) #### 快速开发入门 直接利用IDEA工具创建Maven工程 新建后的工程src-main下只有java和resource,新建scala文件夹 ![](img/scala_resource.png) ``` Scala源文件以 “.scala" 为扩展名 Scala程序的执行入口是main()函数 Scala语言严格区分大小写。 Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号),这也体现出Scala的简洁性。 如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号(尽量一行就写一条语句)。 ``` ```scala object StdInDemo { def main(args: Array[String]): Unit = { // val line:String = StdIn.readLine(); // println(line); var a =11; var b = 12; println(s"a=${a},b=${b}") println("中间变量交换后:") var c =a; a=b; b=c; println(s"a=${a},b=${b}") println("不要中间变量") a = a+b; b = a-b; a = a-b; println(s"a=${a},b=${b}") println("位运算") //异或运算 a = a^b; b = a^b; a = a^b; println(s"a=${a},b=${b}") } } ``` #### 变量 变量声明 _基本语法_ var | val 变量名 [: 变量类型] = 变量值 注意事项 声明变量时,类型可以省略(就是叫 类型推断) 类型确定后,就不能修改,说明Scala 是强数据类型语言 在声明/定义一个变量时,可以使用var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改 val修饰的对象属性在编译后,等同于加上final
 var 修饰的对象引用可以改变,val 修饰的则不可改变,但对象的状态(值)却是可以改变的。(比如: 自定义对象、数组、集合等等) 




 ```scala class Dog { var age = 100 } ``` 变量声明时,必须有初始值(显示初始化)。 ``` 数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 Float 32 位, IEEE 754标准的单精度浮点数 Double 64 位 IEEE 754标准的双精度浮点数 Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF String 字符序列 Boolean true或false Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。 Null null Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。 Any Any是所有其他类的超类 AnyRef AnyRef类是Scala里所有引用类(reference class)的基类 ```