如何学习一门语言? 牢记语法,会查用API
简介: scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程
进入Scala解释器: cmd窗口 输入 Scala
第一个Scala程序:
print("Hello Scala")
1. 变量
- Java定义
int a = 10;
- Scala定义: 语法: 在 Scala 中,使用关键词 “var” 声明变量,使用关键词 “val” 声明常量。
//常量
val name:String = "liuafu"
name = "jim" //报错 常量不能变
var num:Int = 123
num = 456 //变量 可以变
- 惰性赋值
2.字符串
- 双引号 语法: val/var 变量名 = “字符串”
val name:String = "liufu"
print(name)
print(name + name.length) //在Scala解释器中 name.tab 方法就出来了
- 插值表达式 语法: val/var 变量名 = s"${变量/表达式}字符串"
scala> val name = "zhangsan"
name: String = zhangsan
scala> val age = 30
age: Int = 30
scala> val sex = "male"
sex: String = male
scala> val info = s"name=${name}, age=${age}, sex=${sex}"
info: String = name=zhangsan, age=30, sex=male
scala> println(info)
name=zhangsan, age=30, sex=male
- 三引号
语法:
如果有大段的文本需要保存,就可以使用三引号来定义字符串。例如:保存一大段的
SQL语句。三个引号中间的所有字符串都将作为字符串的值。
val/var 变量名 = """字符串1
字符串2"""
例子:
定义一个下面sql:
val sql = """ select *
| from
| student
| where name="liuafu"
| order by age
| """
打印:
scala> print(sql)
select *
from
student
where name="liuafu"
order by age
3. 数据类型与操作符
- scala的所有数据类型都是大写,不像java有int,float有小写。整形是Int,不是小写的,也不是Integer
- scala中没有i++,i–这种操作,应写为i=i+1, 和 i=i-1
- scala中的判断两个值是否相等用==. 判断两个对象的引用(内存地址)是否相等,用eq
- java中的判断两个String的值是否相等.equals() ,判断两个对象的引用(内存地址)是否相等,用==
4.条件表达式
-
if表达式
-
块表达式
scala中,使用{}表示一个块表达式
和if表达式一样,块表达式也是有值的
值就是最后一行代码表达式的值
5.循环
- for循环
语法:
for(i <- 表达式/数组/集合) {
// 表达式
}
简单for循环:
嵌套for:
守卫:
for表达式中,可以添加if判断语句,这个if判断就称之为守卫。我们可以使用守卫让for表达式更简洁。
语法:
for(i <- 表达式/数组/集合 if 表达式) {
// 表达式
}
例子:
使用for表达式打印1-10之间能够整除3的数字
参考代码
// 添加守卫,打印能够整除3的数字
for(i <- 1 to 10 if i % 3 == 0) println(i)
for的推导式:
示例:
生成一个10、20、30...100的集合
- while循环 (用的少)
6 方法
语法:
def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
// 方法体:一系列的代码
}
注意:
参数列表的参数类型不能省略
返回值类型可以省略,由scala编译器自动推断
返回值可以不写return,默认就是{}块表达式的值
- 方法的调用
后缀调用法
中缀调用法
花括号调用法
无括号调用法
后缀调用法
语法
对象名.方法名(参数)
示例
使用后缀法Math.abs求绝对值
中缀调用法
语法:
对象名 方法名 参数
花括号调用法
语法
Math.abs{
// 表达式1
// 表达式2
}
无括号调用法
7.函数
定义:
语法
val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => {函数体}
方法与函数的区别:
-
方法属于类或者对象,加载到JVM的方法区中
-
函数就是一个对象,对象包含方法
-
方法可以转换为函数