Scala
文章
1 基本语法
基本语法1 相关概念对象:对象有属性和行为。例如:一只狗的状属性有:颜色,名字,行为有:叫、跑、吃等。对象是一个类的实例。 类:类是对象的抽象,而对象是类的具体实例。 方法:方法描述的基本的行为,一个类可以包含多个方法。 属性:每个对象都有它唯一的实例变量集合。对象的属性通过给字段赋值来创建。 2 基本语法特点区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。 类名 - 对于所有的类名的第一个字母要大写。如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。 示例:class MyFirstScalaClass 方法名称 - 所有的方法名称的第一个字母用小写。如果若干单词被用于构成方法的名称,则每个单词的第一个字母应大写。 示例:def myMethodName() 程序文件名 - 程序文件的名称应该与对象名称完全匹配(新版本不需要了,但建议保留这种习惯)。保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加”.scala”为文件扩展名。 (如果文件名和对象名称不匹配,程序将无法编译...
2 数据类型
数据类型1 数据类型Scala 数据类型Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型: 数据类型 描述Byte 8位有符号补码整数。数值区间为 -128 到 127Short 16位有符号补码整数。数值区间为 -32768 到 32767Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807Float 32 位, IEEE 754 标准的单精度浮点数Double 64 位 IEEE 754 标准的双精度浮点数Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFFString 字符序列Boolean true或falseUnit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。Null null 或空引用Nothing Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。An...
3 变量常量
Scala 变量变量的作用变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。 变量声明在学习如何声明变量与常量之前,我们先来了解一些变量与常量。 一、变量: 在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。二、常量 在程序运行过程中其值不会发生变化的量叫做常量。如:数值 3,字符’A’。在 Scala 中,使用关键词 “var” 声明变量,使用关键词 “val” 声明常量。 声明变量实例如下: var myVar : String = “Foo”var myVar : String = “Too”以上定义了变量 myVar,我们可以修改它。 声明常量实例如下: val myVal : String = “Foo”以上定义了常量 myVal,它是不能修改的。如果程序尝试修改常量 myVal 的值,程序将会在编译时报错。 变量类型声明只声明类型不给值。变...
4 访问修饰符
Scala 访问修饰符Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。 1 私有(Private)成员用 private 关键字修饰,带有此标记的成员仅在包含了成员定义的类或对象内部可见,同样的规则还适用内部类。 class Outer{ class Inner{ private def f(){println(“f”)} class InnerMost{ f() // 正确 } } (new Inner).f() //错误}(new Inner).f( ) 访问不合法是因为 f 在 Inner 中被声明为 private,而访问不在类 Inner 之内。 但在 InnerMost 里访问 f 就没有问题的,因为这个访问包含在 I...
5 运算符
Scala 运算符一个运算符是一个符号,用于告诉编译器来执行指定的数学运算和逻辑运算。 Scala 含有丰富的内置运算符,包括以下几种类型: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 1 算术运算符下表列出了 Scala 支持的算术运算符。 假定变量 A 为 10,B 为 20: 运算符 描述 实例+ 加号 A + B 运算结果为 30- 减号 A - B 运算结果为 -10* 乘号 A * B 运算结果为 200/ 除号 B / A 运算结果为 2% 取余 B % A 运算结果为 0 2 关系运算符下表列出了 Scala 支持的关系运算符。 假定变量 A 为 10,B 为 20: 运算符 描述 实例== 等于 (A == B) 运算结果为 false!= 不等于 (A != B) 运算结果为 true 大于 (A > B) 运算结果为 false< 小于 (A < B) 运算结果为 true= 大于等于 (A >= B) 运算结果为 fa...
6 控制结构
控制结构1 IF选择Scala IF…ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 if 语句。if 语句有布尔表达式及之后的语句块组成。 if…else 语句。if 语句后可以紧跟 else 语句,else 内的语句块可以在布尔表达式为 false 的时候执行。 if…else if…else 语句。if 语句后可以紧跟 else if…else 语句,在多个条件判断语句的情况下很有用。 if…{if…else…}…else… 嵌套语句。if…else 嵌套语句可以实现在 if 语句内嵌入一个或多个 if 语句。 2 循环循环类型Scala 语言提供了以下几种循环类型。点击链接查看每个类型的细节。 循环类型 描述while 循环 运行一系列语句,如果条件为true,会重复运行,直到条件变为false。do…while 循环 类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。for 循环 用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。 while 循环Scala 语...
7 函数
方法函数1 方法与函数关系Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。 Scala 中的方法跟 Java 的类似,方法是组成类的一部分。 Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。 Scala 中使用 val 语句可以定义函数,def 语句定义方法。 class Test{ def m(x: Int) = x + 3 val f = (x: Int) => x + 3} 2 函数类型变量混合式val f1 = (x:Int,y:Int)=>x*y 类型变量分离式val f2:(Int,Int)=>Int = (x,y)=>x*y 3 方法方法声明Scala 方法声明格式如下: def functionName ([参数列表]) : [return type]如果你不写等于号和方法主体,那么方法会被隐式声明为抽象...
8 闭包
Scala 闭包闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。 闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。 如下面这段匿名的函数: val multiplier = (i:Int) => i * 10函数体内有一个变量 i,它作为函数的一个参数。如下面的另一段代码: val multiplier = (i:Int) => i * factor在 multiplier 中有两个变量:i 和 factor。其中的一个 i 是函数的形式参数,在 multiplier 函数被调用时,i 被赋予一个新的值。然而,factor不是形式参数,而是自由变量,考虑下面代码: var factor = 3val multiplier = (i:Int) => i * factor这里我们引入一个自由变量 factor,这个变量定义在函数外面。 这样定义的函数变量 multiplier 成为一个”闭包”,因为它引用到函数外面定义的变量,定义这个函数的过程是将这个自由变量捕...
9 字符串
字符串1 简介在 Scala 中,字符串的类型实际上是 Java String,它本身没有 String 类。 在 Scala 中,String 是一个不可变的对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。 但其他对象,如数组就是可变的对象。接下来我们会为大家介绍常用的 java.lang.String 方法。 2 常用方法创建字符串创建字符串实例如下: var greeting = “Hello World!”; 或 var greeting:String = “Hello World!”; 字符串长度我们可以使用 length() 方法来获取字符串长度: object Test { def main(args: Array[String]) { var palindrome = “www.runoob.com“; var len = palindrome.length(); println( “String Length is : “ + len ); }} 字符...
10 数组
Scala数组1 基本操作声明数组以下是 Scala 数组声明的语法格式: var z:Array[String] = new ArrayString 或 var z = new ArrayString 处理数组数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本的 for 循环。 以下实例演示了数组的创建,初始化等处理过程: object Test { def main(args: Array[String]) { var myList = Array(1.9, 2.9, 3.4, 3.5) // 输出所有数组元素 for ( x <- myList ) { println( x ) } // 计算数组所有元素的总和 var total = 0.0; for ( i <- 0 to (myList.length - 1)) { total += myList(i); } println("总和为 " + total); ...













