Scala基础(一)

一、安装scala

  • idea安装scala插件
    在这里插入图片描述
    在Plugins搜索scala安装
    在这里插入图片描述
  • 在windows上安装scala
    Scala安装包
    提取码: rqna
    安装完成,配置环境变量后cmd命令窗口,使用scala命令开启scala
    在这里插入图片描述

二、Scala概述

1.面向对象特性
a)每个值都是对象
b)对象的数据类型和行为由类(Class)和特征(Trait,类似于interface)描述
c)利用特征实现混入式多重继承

2.函数式编程
a)每个函数都是一个值
b)支持高阶函数、柯里化(currying)、样例类(case class)及模式匹配……

4.Scala是静态类型语言

5.扩展性:隐式类、字符串插值

三、Scala常量变量

变量

定义:var 变量名称:类型=xxx

在这里插入图片描述

常量

定义:val 常量名称:类型=xxx

在这里插入图片描述

注:一般不指定类型,scala编译器会自动推断类型

四、使用类型别名定义变量

注:此方法一般不使用,可直接定义变量
使用type关键字
定义:type 类型别名=类型

type T=String
val T="XXX"

在这里插入图片描述

五、Scala数据类型层次结构

注:Scala基本数据类型与java基本一致

any:所有类型的父类
anyval:表示值类型的父类
anydef:表示引用类型的父类,对应java的object
unit:无返回值
nothing:所有类型的子类
null:表示null或空引用

在这里插入图片描述

六、字符串插值

s插值器

允许将变量引用、表达式直接插入字面字符中

val name="xxx"
println(s"Hello,xxx")    //Hello,xxx
println(s"1+1=${1+1}")  //1+1=2
f插值器
val height=1.9d
val name="xxx"
println(f"$name%s is $height%2.2f")    //f前面数字表示占位符(位数不够可拓展,位数多则空位表示),后面数字表示小数点后位数
raw插值器
print(s"a\nb")  //会换行输出
print(raw"a\nb")  //输出原始字符a\nb

在这里插入图片描述

七、Scala条件控制

if语句

val a=10
if(a>0){
    print("a大于0")
}

if…else语句

val a=10
if(a>10){
    print("a大于10")
}else if(a==10){
    print("a等于10")
}else{print("a小于10")}

注:用法基本与java相同

八、条件语句返回值

scala任何表达式都有返回值

val x=10
val y=if(x==10) x+1 else x+2

代码块{…} 也是表达式,返回值为最后一个表达式结果

val x=1
//返回结果为2
val y={
    println("代码块y1")
    x+1
  }
  println(y)
//返回结果为()
  val y2={
    x+1;println("代码块y2")
  }
  println(y2)

九、Scala循环控制

  • while循环
//输出0-100
var x=0;
    while(x<=100){
      println(x)
      x=x+1
    }
  • do-while循环
//输出0-99
var x=0;
do{
  println(x)
  x=x+1
}while(x<100)
  • for循环
var num=10
//输出1-10
for(i <- 1 to num){
  println(i)
}
//输出1-9
for(x <- 1 until 10){
  println(x)
}
  • 中断
    注:by表示步长
方式一:
//引入break包
import scala.util.control.Breaks._
var num=10
breakable{
  for (x<- num to 1 by -1){
    if(x<3) break
   println(x)
  }
}
方式二:
import scala.util.control.Breaks
var num=10
val loop=new Breaks
loop.breakable{
  for (x<- num to 1 by -1){
    if(x<3) loop.break
    println(x)
  }
}
  • for循环过滤
var i=100
for(x<- 1 to i;if x%2==0;if x%5==0){
    println(x)
}
  • for循环返回值
    for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。也称for推导式
var i=100
val res=for(x<- 1 to i;if x%2==0;if x%5==0) yield x
println(res)

在这里插入图片描述

十、Scala数组

存储固定大小的元素
数组索引从0开始

//创建方式一
var arr1:Array[String] =new Array[String](3)
arr1(0)="Hello"
arr1(1)="World"
arr1(2)="Scala"
println(arr1(0),arr1(1))
//创建方式二
var arr2=Array("Hello","world","scala")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值