Scala 集成开发环境 Intellgence IDEA 需要下载并安装 网上都有教程这里就不再阐述。
1、Hello Scala
类似于JAVA中的Hello World
package com.auru.Leon
object HelloScala {
def main(args: Array[String]): Unit ={
println("hello scala")
}
}
关于 HelloWorld 程序:Scala 和 Java 的对比不同处
1、文件后缀名
2、编译和运行方式
3、类的声明
4、main 方法的声明
5、分号
2、变量的定义
Scala的变量分为两种
//使用 val 定义的变量值是不可变的,相当于 java 里用 final 修饰的变量
val i = 1
//使用 var 定义的变量是可变得,在 Scala 中鼓励使用 val
var s = "hello"
//Scala 编译器会自动推断变量的类型,必要的时候可以指定类型
//变量名在前,类型在后
总结:
1)数据类型可以指定,也可以不指定,如果不指定,那么就会进行数据类型的自动推断。
2)如果指定数据类型,数据类型的执行方式是在变量名后面写一个冒号,然后写上数据类型。
3)我们的 scala 里面变量的修饰符一共有两个,一个是 var,一个是 val如果是 var 修饰的变量,那么这个变量的值是可以修改的,虽然可以修改,但是不能改成其他类型的值如果是 val 修饰的变量,那么这个变量的值是不可以修改的。
3、数据类型
Scala 和 Java 一样,有 7 种数值类型 Byte、Char、Short、Int、Long、Float 和 Double(无包装类型)和一个 Boolean 类型,再加上常用的 String 类型。
下面举例子:
package com.auru.Leon
object Test01 {
def main(args:Array[String]): Unit ={
val var_int=1
println(var_int)
val var_double=3.33
println(var_double)
val var_float=2.4F
println(var_float)
val var_char='A'
println(var_char)
val var_bool=true
println(var_bool)
val var_16=0x29 //41
println(var_16)
val var_string="aa"
println(var_string)
val var_string1="\"AAAA\"" //"AAAA"
println(var_string1)
val var_string2="""BBBB\CCC\DD\E\\"""
println(var_string2) //BBBB\CCC\DD\E\\
}
}
数据类型
数据类型间的关系
4、Scala基本类型操作
算术操作:+ - * / %
关系运算:> > = < <= == !=
逻辑运算:&& || !
位运算: & | ^ ~ >> << >>>
对象比较:1==1 1==1.0 "huangbo" == "huangbo" ne eq
特别注意:ne eq equals == 四者的区别
package com.auru.Leon
object MethodTest {
def main(args:Array[String]): Unit ={
println(sum(2,3))
println(multiply(2,3))
println(sum1(2,3))
println(sum2(2,3))
}
def sum(a:Int,b:Int):Int={
a+b
}
def multiply(a:Int,b:Int):Int={
a*b
}
def sum1(c:Int,d:Int)=c+d
def sum2(a:Int,b:Int){a+b}
}
5、编码规范
1、分号:在 scala 编码中,不强制在代码末尾加分号,但是如果有多句代码写在同一行,那么必须使用分号进行隔开。
2、注释:在 scala 编程中,注释的方式和 java 中注释方式一样,原则:少而精
3、关键字:关注新关键字:yield, match, object, def, implicit, trait, sealed, var/val
关键字
6、流程控制语句
if语句
package com.auru.Leon
object If {
def main(args:Array[String]): Unit ={
val x=1
val y=if(x>0) 1 else -1
println(y)
println("----------------------")
val z=if(x>2) "true"
println(z)
println("----------------------")
val m=if(x>2) 1 else "error"
println(m)
println("----------------------")
val n=if(x>2) 1 else ()
println(n)
println("----------------------")
val k=if(x<0) 0
else if (x>=1) 1 else -1
println(k)
println("----------------------")
}
}
块表达式
package com.auru.Leon
object Block {
def main(args:Array[String]): Unit = {
val x = 0
//在 scala 中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
//下面就是一个块表达式
val result = {
if (x < 0) {
-1
} else if (x >= 1) {
1
} else {
"error"
}
}
println(result)
}
}
for循环
package com.auru.Leon
object For {
def main (args:Array[String]): Unit = {
for(i <- 1 to 10)
print(i+"\t")
println()
val arr=Array("a","b","c")
for(i <- arr)
print(i+"\t")
println()
for(str <- arr.reverse){
print(str+"\t")
}
println()
for(i <- 0 to arr.length-1){
print(arr(i)+"\t")
}
println()
for(i <- 0 until arr.length){
print(arr(i)+"\t")
}
println()
println("-----------------")
for(i <- 0 until (arr.length,2)){
print(arr(i)+"\t")
}
println()
for(i <- 1 to 3;j <- 1 to 3 if i==j){
println((10*i+j)+"")
}
val v=for(i <- 1 to 10)yield i *10
println(v)
}
}
注意:
1、在 scala 里面没有运算符,都有的符号其实都是方法。
2、在 scala 里面没有 ++ – 的用法
3、for( i <- 表达式/数组/集合)
4、在 for 循环里面我们是可以添加 if 表达式
5、有两个特殊表达式需要了解:
To 1 to 3 1 2 3
To 1 to (3,2) 1 3
Until 1 until 3 12
6、如果在使用 for 循环的时候,for 循环的时候我们需要获取,我们可以是使用 yield 关键字。
while循环
package com.auru.Leon
object While {
def main(args:Array[String]): Unit ={
var n=11
while(n>10){
println(n)
n-=1
}
}
}
注意:
1)while 使用跟 java 一模一样
2)注意点:在 scala 里面不支持 i++ i-- 等操作统一写成 i+=1 i-=1