一、 概念
1、 scala语言与java语言之间的关系
scala编程与java语言之间都有相互借鉴的地方,而scala是起源于java的,所以代码的运行机制与java基本一致,因此scala中可以无缝的衔接javad代码。
2、 安装
- 解压安装
- 配置环境变量
3、 使用
- 编写一个xxx.scala源码
- 源码中以scala语法编写代码
- scala将编写好的scala代码转换成二进制文件.class
- scala将编写好的.class字节码文件加载到jvm虚拟机中运行
注意点:
scala是一门纯面向对象编程语言,里面没有static,void这种关键字,也就意味着在scala当中没有和java一样的静态内容一说,scala为了弥补没有静态内容的缺陷,提供了一个object类型的类,类中声明的属性和方法都是静态内容
二、 scala基本语法
1、 注释语法
单行注释 //
多行注释 /* */
文档注释 /** */
2、 变量和常量
变量 var 变量名:变量类型 = 变量值
常量 val 常量名:常量类型 = 常量值
3、 标识符
凡是可以自己起名字的都叫标识符
scala标识符可以是关键字,但是关键字必须加``
以字母或者下划线开头,后面接字母,数字,下划线
以操作符开头,后面只能跟操作符(+-*/)
4、 标准输出
printf
printf("你的名字为%s", name)
用法 %d 十进制数字
%s 字符串
%c 字符
%e 指数浮点数
%f 浮点数
%i 整数(十进制)
%o 八进制
%u 无符号十进制
%x 十六进制
%% 打印%
println/print
模板输出 println(s"你的名字$name")
5、 控制台输出
val name = StdIn.readLine()
或者
var sc:Scanner = new Scanner(System.in)
6、数据类型 Any
- AnyVal
整形 Byte Short Int Long
浮点型 Float Double
布尔型 Boolean
字符型 Char
Unit 等同于java中的void,无返回值类型
StringOps 对java中的string增强
- AnyRef
scala集合
java所有类
scala中其他类
Null是AnyRef中一个特殊值,是所有AnyRef的子类
在AnyVal和AnyRef都有一个特殊的子类Nothing,Nothing一般用在函数无返回值,但是有异常抛出的时候
7、 运算符
算术运算符 +-*/%
比较运算符
== 如果没有重写equals方法,代表比较两个对象的地址值,重写方法后,代表比较两个对象的值
eq 没有重写equals方法,代表比较两个对象的地址值,重写后比较的也是地址值
赋值运算符
逻辑运算符
位运算符
8、流程控制
顺序流程 — 代码遵循从上而下依次执行
分支流程
只有if else类型,switch case在scala中不存在这种语法循环流程
for
范围数据循环
for(i <- start to end) 左闭右闭
for(i <- start until end) 左闭右开
循环守卫
for(i <- start to end if i != num) 只有满足if条件才执行
循环步长
for(i <- start to end by num) by 表示步长
嵌套循环
for(i <- start to end; j <- start to end)
循环倒序
for(i <- start to end reverse)
循环返回值
var a = for(i <- start to/until end reverse/by num if 循环守卫) yield i
循环的变量引入
for( i <- start to/until end; j = i*3){
ij
}
while
do while 和java中类似
循环的终止
java中的循环终止方式
continue:跳出本次循环,从下一次循环继续开始
break:终止循环,执行循环之后的代码
return:终止循环,还会终止循环之后的代码
scala中循环终止方式
scala中没有break和continue关键字,如果我们想要终止循环,我们需要使用一个函数来完成循环的结束
scala中支持break类型的终止,不支持continue类型
Breaks.breakable(
循环代码
需要结束循环的结束,使用Breaks.break()
)
Breaks可以省略
本文含有隐藏内容,请 开通VIP 后查看