var语句
用来声明一个变量,变量声明后,在程序执行过程中可以被修改。
示例:
def main(args: Array[String]): Unit = {
//三种变量复制方式
var var1=100;
var var2:Int=100;
var var3:java.lang.String="hello";
//变量修改
var2=200;
var3="world";
}
注:scala可以自动根据值的类型推断变量/常量的类型,所以不写类型声明也可以
val语句
用来声明一个常量,一旦被赋值就不能再进行修改
注:java中变量使用较多,但在scala里,常量使用较多,因为在线程并发时 可以减少甚至杜绝多线程并发安全问题,所以scala特别适合于应用在处理高并发场景。
//定义常量
val a1=100;
//修改将会报错
a1 = 200;
字符串操作
事实上Scala的String类就是Java的String类,所以可以直接调用Java里String的所有方法。
由于Scala提供了隐式转换的魔法,String类也拥有StringOps类中所有方法的访问权限,所以可以用这些方法做许多事情
v4.foreach { x => println(x) }
v4.filter { x => x!='l' }
v4.distinct
v4.exists { x => x=='p' }
v4.drop(2)
v4.dropRight(2)
v4*3
v4.min
v4.mkString(",")
Scala数据基本类型
1)Byte
2)Short
3)Int
4)Long
5)Char
6)String
7)Float
8)Double
9)Boolean
**其中String处于java.lang包, 其他的则处在scala包下
**由于scala会自动导入java.lang和scala包所以这些类型可以在程序中直接使用
**其实可以认为scala中并没有真正意义上的基本类型(如java中的基本类型) 以上的九种基本类型其实也出在包下是一个类
**在scala中以上基本数据类型区别于其他类的地方在于,他们的对象都已直接量的形式体现
**以上基本数据类型的直接量和java中基本完全相同,不再复述
*这九个类的直接量在需要时可以自动被转换为其对应的富包装类来调用富包装类提供的额外方法
scala.runtime.RichByte
scala.runtime.RichShort
scala.runtime.RichInt
scala.runtime.RichLong
scala.runtime.RichChar
scala.runtime.RichString
scala.runtime.RichFloat
scala.runtime.RichDouble
scala.runtime.RichBoolean
//每种数据类型都提供了很多方法供调用,所以scala的数据类型不同于java的基本类型
v1.<(8)
//0000 1010
//0000 0101
v1.&(10)
v1.%(2)
v1.toShort
v1.toLong
v1.toString
v1.toDouble
v1.compare(12)
v1.to(20)
v1 to 20
v1 to(20,2)
v1 to 10 by 2
v1.until(20)
v1 until 20
Int.MaxValue //> res0: Int(2147483647) = 2147483647
//String三引号用法
//需要转义
var var3="ab\\c";
//不需要转义
var var4="""ab\c""";
//大数据操作
var v1=BigInt(2)
v1.pow(10)
var v2=BigDecimal(2.0)
操作符
scala中操作符即方法,方法即操作符
scala中的操作符其实是普通方法调用的另一种表现形式
对以上基本的运算符的使用其实就是隐含的在调用对应的方法
所以 可以认为 scala中并没有传统意义上的操作符 所有的操作符都是方法 所有的方法也都可以像操作符一样去使用
• 算数运算
±*/
• 关系运算
> < >= <=
• 逻辑运算
&& || !
• 位运算
>> >>> << ~ & | ^
• 比较运算
== !=
var var1=2;
var var2=2+3;
var var3=2.+(3);
scala中,符号越靠上优先级越高:
* / %
±
:
=!
<>
&
^
|
2.+(3).*(5) //> res23: Int = 25
2+(3)*(5) //> res24: Int = 17
2+3*5 //> res25: Int = 17
前缀操作符
//前缀操作符,一共4个,分别是:+,-,!,~
//前缀操作符在使用时,需要有空格
//表示+2
var var5= +2;
//表示-2
var var6= -2;
//取反
var var7= !true;
//二进制取反
var var8= ~0XFF;
//也可以通过unary_ 来表示前缀操作符
var var9=2.unary_+;
var var10=2.unary_-;
var var11=true.unary_!;
var var12=0XFF.unary_~;