scala 学习笔记[不断更新中...]

一、初接触

1.scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库

2.scala特性: 纯面向对象、函数式语言(允许嵌套多层函数,支持柯里化和模式匹配)、具备类型系统(通过编译时检查,保证代码的安全性和一致性)、扩展性、使用Actor作为其并发模型(Actor可以复用线程)、scala web框架(Lift框架和Play框架)

3.scala语句末尾的分号 ; 是可选的

4.编写scala程序可以选择交互式编程或脚本编程。

在 CMD 直接输入

scala

即进入交互式命令界面,

注:在交互式界面,输入 :q 可以退出,要查看更多控制方法可以通过输入 :h 或 :help 来查看

要使用脚本编程,在 CMD 输入

scalac HelloWorld.scala
ls   

即对目标文件编译,并生成目标文件的编译文件 HelloWorld$.class 和 HelloWorld.class

编译后可在JVM上查看,也可直接使用以下命令执行程序

scala helloworld.scala

二、基本语法

1.注意点: 区分大小写、所有类名第一个字母大写、方法名称的第一个字母小写、程序文件的名称应与对象名称完全一致,例如

class MyFirstScalaClass      def myMethodName()

main 程序格式: def main(args: Array[string])

2.标识符:字符数字和符号,字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号 "$" 在 Scala 中也看作为字母。然而以 "$" 开头的标识符为保留的 Scala 编译器产生的标志符使用; 避免使用以下划线结尾的标志符以避免冲突; Scala 内部实现时会使用转义的标志符

Scala 内部实现时会使用转义的标志符,比如:-> 使用 $colon$minus$greater 来表示这个符号

混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala 对+方法的内部实现时的名称

你可以在"之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符

3.关键字

4.注释

/* ... */   或 //

5.Scala 包

定义包

package com.runoob
class HelloWorld

package com.runoob {
  class HelloWorld 
}

6.引用

import java.awt.Color  // 引入Color
 
import java.awt._  // 引入包内所有成员

import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。

如果想要引入包中的几个成员:

import java.awt.{Color, Font}
 
// 重命名成员
import java.util.{HashMap => JavaHashMap}
 
// 隐藏成员
import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了

注:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的


三、数据类型

1.同 Java,即:

byte、short、int、long、float、double、char、string、boolean、

unit(无值)、null、nothing(类层级的最低端)、any(所有累的超类)、anyref(所有引用类的基类)

2.Scala 基础字面量

整型字面量,默认为 int,如为 long,需要加 L 或 l 后缀

浮点型字面量,加 f 或 F 后缀表示为 float,否则默认为 double

布尔型字面量,true | false

符号字面量,使用单引号来定义

字符串字面量,使用双引号来定义

多行字符串的表示方法,""" ... """

Null 值,Scala.Null 和 scala.Nothing 是用同一的方式处理 Scala 面向对象类型系统的某些"边界情况"的特殊类型

Null 类是 null 引用对象的类型,它是每个引用类(继承自 AnyRef 的类)的子类。Null 不兼容值类型。

3.Scala 转义字符

\b,\u0008,退格(BS)

\t,\u0009,水平制表(HT)

\n,\u000a,换行(LF)

\f,\u000c,换页(FF)

\r,\u000d,回车(CR)

\",\u0022,双引号

\',\u0027,单引号

\\,\u005c,反斜线

0 到 255 间的 Unicode 字符可以用一个八进制转义序列来表示,即反斜线‟\‟后跟 最多三个八进制。在字符或字符串中,反斜线和后面的字符序列不能构成一个合法的转义序列将会导致编译错误。


四、Scala变量

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值