Scala day01

Scala是基于Java虚拟机,也就是JVM的一门编程语言,所以有Scala代码都需要经过编译为字节码,然后由Java虚拟机运行.
Scala和Java是可以无缝互操作的,Scala可以任意调用Java的代码.

Scala解释器

REPL:会快速编译Scala代码为字节码,然后交给JVM来执行.
计算表达式:在Scala内部命令行内输入Scala代码,解释器会直接返回结果,如果没有指定变量来存放这个值,那么默认的名称为res,而且会显示数据类型
在这里插入图片描述
内置变量:在后面可以继续使用res这个变量,以及他存放的值
在这里插入图片描述

声明变量

val 声明不可变类型
var 声明可变类型
在Scala中通常建议使用val,也就是常量,如果需要大量的网络传输数据,如果使用var可能担心值被错误的更改
指定类型,无论声明val变量还是var变量,都可以手动指定类型,如果不指定的话,Scala会自动根据值,进行类型的推断
声明多个变量:可以将多个变量放在一起进行声明.
基本数据类型:byte,char,short,int,long,float,double,Boolean
与Java的基本数据类型的包装类型相同,但是Scala没有基本数据类型与包装类型的概念,统一都是类,Scala自己会负责基本数据类型和引用数据类型的转换操作.
类型的加强版类型
Scala使用很多加强类给数据类型增加上百种增强的功能或函数.
基本操作符
Scala的孙淑操作符与Java的算数操作符没什么区别
+、-、*、/、%等,以及&、|、^、>>、<<等。
Scala中没有提供++,–操作符,只能用+.-
函数的调用方式
如果调用函数时,不需要传递参数,则scala允许调用函数时省略括号的,例如,“Hello World”.distinct
apply函数
·Scala中的apply函数是非常特殊的一种函数,在Scala的object中,可以声明apply函数。而使用“类名()”的形式,其实就是“类名.apply()”的一种缩写。通常使用这种方式来构造类的对象,而不是使用“new 类名()”的方式。
·例如,“Hello World”(6),因为在StringOps类中有def apply(n: Int): Char的函数定义,所以"Hello World"(6),实际上是"Hello World".apply(6)的缩写。
·例如,Array(1, 2, 3, 4),实际上是用Array object的apply()函数来创建Array类的实例,也就是一个数组。

if表达式

if表达式的定义:
在Scala中,if表达式是有值的,就是if或者else中最后一行语句返回的值
val age = 30;if (age > 18) 1 else 0
在这里插入图片描述
可以将if表达式赋予一个变量
val isAdult = if (age > 18) 1 else 0
在这里插入图片描述
if表达式的类型推断
由于if表达式是有值的,而if和else子句的值类型可能不同,此时if表达式的值时什么类型Scala会自动进行推断,取两个类型的公共父类型
例:adult值的类型是string,0的类型是int,则表达式的值时Any,Any是string和int的公共父类型
在这里插入图片描述
如果if后没有跟else,则默认else的值是Unit,也用()表示,类似于Java中的void或null
例:val age =12;if (age>18) "adult"等于val age =12;if (age>18) “adult” else().
if语句放在多行中
默认情况下,REPL只能解释一行语句,但是if表达式通常需要放在多行,可以用{}的方式,或者使用:paste和ctrl+D的方式
在这里插入图片描述
语句终结符
默认情况下,Scala不需要语句终结符,默认将一行作为一个语句
一行放多条语句:
如果一行放多条语句,必须用语句终结符

 例var a, b, c = 0; if(a < 10) { b = b + 1; c = c + 1 }

在这里插入图片描述
块表达式
块表达式值得就是{}中的值,其中可以包含多条语句,最后一个语句的值就是块表达式的返回值

例var d = if(a < 10) { b = b + 1; c + 1 }

在这里插入图片描述

输入和输出

print和println
print打印时不会加换行符,而println打印时会加一个换行符。
·例如,print(“Hello World”); println(“Hello World”)
在这里插入图片描述
printf
printf可以用于进行格式化
例如,printf(“Hi, my name is %s, I’m %d years old.\n”, “Leo”, 30)
在这里插入图片描述
·readLine:
readLine允许我们从控制台读取用户输入的数据,类似于java中的System.in和Scanner的作用。
·综合案例:游戏厅门禁
在这里插入图片描述

循环

while do
基本与Java相同

 var n = 10
while(n > 0) {
  println(n)
  n -= 1
}

在这里插入图片描述
Scala没有for循环,只能使用while代替,或者使用简易for

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值