1.声明值和变量值
val name:type=initvalue //不可修改变量
var name:type=initvalue // 可修改
知识兔其中名字name以字母或下划线开头,后面跟着字母、下划线或数字类型type可省略,
scala自动会区分不同类型初始值initvalue
val a= 1
var b: Double=1
var c="Helloworld"
知识兔2.常用类型8种数值类型
Byte Char Short Int Long Float Double Boolean
类型与Java不同的是,这些类型都是类,自带有方法
1.toString()//返回字符串"1"
1.to(3) //返回Range(1,2,3)
知识兔3.算数和操作运算符重载,与Java不同点
1)么有++和--
2)操作符其实是方法,a+b其实是a.+(b)
知识兔4.条件表达式
if/else与java一样,不过在scala中可以把if/else表达式的值赋值给变量
val s=if (x>0) 1 else -1
知识兔5. 块表达式也可以赋值
val a={
val b=1
val c=5b+c
}
知识兔6.输入和输出
输出:与c++类似,print(),printf(),println()
输入: readline(),八个类型read,如readInt,readDouble()....
val name=readLine("your name:")
println("name is "+name)
知识兔7. 循环
while(n>0){....}
for(i< 1 to 10){....}//循环1到10
for(i< myarray){....}
myarray.foreach(i=>{....})
知识兔8. 函数
def methodName(arg1:type1,arg2 type2) returnType={.....result}
知识兔函数的定义关键字def开始,后面跟着方法名和括号的参数列表。参数名:参数类型
参数列表后跟着一个冒号和一个返回结果类型
def abs(x:Double):Double= {if(x>=0) x else -x} //可以省略括号
知识兔9.默认参数、带名参数、变长参数
定义函数时,我们可以给函数设置默认值
def corde(str:String,left:String ="[",right:String ="]") =left +str +right
知识兔此时直接调用 corde("Hello")会得到"[Hello]"另外可以再使用函数的时候,指定参数名,就不需要跟参数列表顺序完全一致
println corde(left="<<<", str="Hello", right =">>>")
知识兔还可以实现混用未命名参数和带名参数,注意未命名参数要排在前面
corde("Helo", right="]]") //输出"[ Hello]]
知识兔scala 可以实现变长参数,可以让函数接受任意多的参数,如下
def sum(args: Int*)={
var result =0
for(arg <args)
result+ = arg
result
}
知识兔注意以下的用法的正确性
val s=sum(1,4,9,16,25)//正确
val ss=sum(1 to 5) //错误,不接受序列
val sss=sum(1 to 5:_*) //正确,追加:_*做参数序列
知识兔10.过程
过程即函数体在花括号前没有=号,返回类型为Unit,也就是过程不返回值
def book(s: String){
//没等号,这个是过程,用来打印书名号
println("<<"+s+">>")
}
知识兔11.赖值当val被声明为lazy时,直到我们首次对它取值,才开始初始化
lazy val word = scala.io.Source.fromfile("/usr/share/words").mkString
//words 没有被调用,文件也不会打开,不会进行初始化
知识兔12.异常
scalar中的异常与java相似try{}catch{}finally{}不同的是 scala没有受检异常,即不需要说函数或方法可能会抛出某种异常,且 scala捕获异常的语法采用的是模式匹配
try {
process(new URL("http://www.baidu....."))
}catch{
case_:MalformedURLException =>println("bad url ")
case ex:IOException =>ex.printStackTrace()
}
知识兔