Scala入门到放弃—— 第二节Scala基本类型及操作、程序控制结构

1、Scala基本类型

Scala的基本数据类型与Java中的基本数据类型是一一对应的,Scala的基本数据类型头字母必须大写。

整数类型变量定义:

//16进制定义法
scala> val x=0x29
x: Int = 41

//十进制定义法
scala> val x=41
x: Int = 41

浮点类型变量定义:

//Double类型定义,直接输入浮点数,编译器会将其自动推断为Double类型
scala> val doubleNumber=3.141529
doubleNumber: Double = 3.141529

//要定义Float类型浮点数,需要在浮点数后面加F或f
scala> val floatNumber=3.141529F
floatNumber: Float = 3.141529

scala> val floatNumber=3.141529f
floatNumber: Float = 3.141529123456

浮点类型的变量还可以采用指数表示法,如

//浮点数指数表示法,e也可以是大写E,0.314529e1与0.314529*10等同
scala> val floatNumber=0.314529e1
floatNumber: Double = 3.14529123

字符变量定义:

//字符定义,用''将字符包裹
scala> var charLiteral='A'
charLiteral: Char = A

字符串变量定义:

//字符串变量用""包裹
scala> val helloWorld="Hello World"
helloWorld: String = Hello World

布尔类型定义:

scala> var x=true
x: Boolean = true12

2、Scala基本类型操作

在Scala中一切操作皆方法,这意味着Scala中的一切皆为对象

算术操作:

//整数求和,编译器会将其转换为(1).+(2)执行
scala> var sumVlaue=1+2
sumVlaue: Int = 3

//前一语句等同于下列语句
scala> var sumVlaue=(1).+(2)
sumVlaue: Int = 3

//操作符重载,编译器会将其转换为(1).+(2L)执行
scala> val longSum = 1 + 2L
longSum: Long = 3

//减法
scala> 1-3
res5: Int = -2

//除法
scala> 1/3
res6: Int = 0

//取模
scala> 1%3
res7: Int = 1

//乘法
scala> 1L*3L
res8: Long = 3

//scala中可以用+ -符号来表示正负数,例如-3 +3,并且可以加入到运算符当中
scala> var y=1+ -3
y: Int = -2

关系运算:

//大于
scala> 3 > -3
res12: Boolean = true
//小于
scala> 3 < -3
res13: Boolean = false

逻辑运算:

//逻辑与:&&
scala> val bool=true
bool: Boolean = true

scala> bool && bool
res17: Boolean = true
//逻辑或:||
scala> bool || bool
res18: Boolean = true

scala> bool || !bool
res20: Boolean = true

位运算:

// 00000001
// 00000010
// 00000000
scala> 1 & 2
res24: Int = 0

// 00000001
// 00000010
// 00000011
scala> 1 | 2
res24: Int = 3

// 00000001
// 00000011
// 00000010
scala> 1 ^ 3
res24: Int =2

//00000001
//11111110
scala> ~1
res24: Int =-2

//左移位(shift left)
//00000110
//00001100
scala> 6 << 1
res29: Int = 12

//右移位(shift left)
//00000110
//00000011
scala> 6 >> 1
res28: Int = 3

//无符号右移(shift left)
//11111111111111111111111111111111
//00000000000000000000000000000001
scala> -1 >>> 31
res32: Int = 1

对象比较:

scala> 1==1
res34: Boolean = true

scala> 1==1.0
res35: Boolean = true

scala> val x="Hello"
x: String = Hello

scala> val y="Hello"
y: String = Hello

scala> x==y
res36: Boolean = true

3、Scala程序控制结构

if 的使用:

val x= if("hello"=="hell")  1 else 01

while 的使用:

def gcdLoop(x: Long, y: Long): Long = {
        var a = x
        var b = y
        while (a != 0) {
            val temp = a
            a = b % a
            b = temp
        } 
        b
}

do while的使用

var line = ""
do {
    line = readLine()
    println("Read: "+ line)
} while (line != "")

注意:与if不同的是,while与do while不能用作表达式,也即其返回值为Unit。

//利用if替代while控制结构
def gcd(x: Long, y: Long): Long =
if (y == 0) x else gcd(y, x % y)

var line = ""
while ((line = readLine()) != "") // 在Scala中不能这么用,因为Scala中的赋值操作返回的值是Unit,而""是String类型,不能进行比较,这是函数式编程语言特有的特点
println("Read: "+ line)

for循环的使用

scala> val filesHere = (new java.io.File(".")).listFiles
//集合操作方式
scala> for (file <- filesHere)
     | println(file)

//间接调用方式(不常用)
for (i <- 0 to filesHere.length - 1)
println(filesHere(i))

<-被称生成器(generator)

scala> 1 to 5
res39: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

scala> for(i <- res39) println("Iteration"+i)
Iteration1
Iteration2
Iteration3
Iteration4
Iteration5

也可直接简写成
scala> for(i <- 1 to 5) println("Iteration"+i)
Iteration1
Iteration2
Iteration3
Iteration4
Iteration5

//如果不需要5出现,则用
scala> for(i <- 1 until 5) println("Iteration"+i)
Iteration1
Iteration2
Iteration3
Iteration4

在for循环结构中还可以加入if进行过滤操作

val filesHere = (new java.io.File(".")).listFiles
for (file <- filesHere if file.getName.endsWith(".scala"))
println(file)

//还可以加入多个过滤条件,用;隔开
for (
file <- filesHere
if file.isFile;
if file.getName.endsWith(".scala")
) 
println(file)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值