Scala入门

如何学习一门语言? 牢记语法,会查用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的推导式:

示例: 
生成一个102030...100的集合

在这里插入图片描述

  • while循环 (用的少)
    在这里插入图片描述

6 方法

语法:

def methodName (参数名:参数类型, 参数名:参数类型) : [return type] = {
    // 方法体:一系列的代码
}

注意: 
参数列表的参数类型不能省略
返回值类型可以省略,由scala编译器自动推断
返回值可以不写return,默认就是{}块表达式的值

在这里插入图片描述

  • 方法的调用
    后缀调用法
    中缀调用法
    花括号调用法
    无括号调用法

后缀调用法

语法
对象名.方法名(参数)

示例
使用后缀法Math.abs求绝对值

在这里插入图片描述

中缀调用法

语法:
对象名 方法名 参数

在这里插入图片描述

花括号调用法

语法
Math.abs{ 
    // 表达式1
    // 表达式2
}

在这里插入图片描述

无括号调用法

7.函数

定义:

语法
val 函数变量名 = (参数名:参数类型, 参数名:参数类型....) => {函数体}

在这里插入图片描述
方法与函数的区别:

  • 方法属于类或者对象,加载到JVM的方法区中

  • 函数就是一个对象,对象包含方法

  • 方法可以转换为函数
    在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值