【scala】 scala 条件控制 和异常处理(二)
1.scala 变量定义 ,var val 区别。
var 定义可变变量
val 定义不可变变量,scala 推荐使用。相当于Java的final 变量.
scala中包含的基本数据类型详情如下表所示:
| 序号 | 基本类型 | 增强类型 | 大小 | 取值范围 |
|---|---|---|---|---|
| 1 | Byte | RichByte | 8-bit | -128 ~ 127 |
| 2 | Char | RichChar | 16-bit | 0 ~ 65535 |
| 3 | Short | RichShort | 16-bit | -32768 ~ 32767 |
| 4 | Int | RichInt | 32-bit | -2^31 ~ 2^31 -1 |
| 5 | Long | RichLong | 64-bit | -2^63 ~ 2^63 -1 |
| 6 | Float | RichFloat | 32-bit | |
| 7 | Double | RichDoube | 64-bit |
2.scala 条件控制 if else if else
3. for 增强和 yield类型推导
to ,until 遍历集合的区别
4.scala 异常处理
try catch {case ex: Exception=> e}finally{}
5. 可变参数方法定义
参数类型* *定义多个参数
6. def 方法定义的注意
def 方法名(参数):返回值={方法体}
返回值省略,默认 Any ,Any相当于java中的Object
object Control {
def main(args:Array[String]): Unit ={
val a=5
// scala 尽量不用return,最后一个表达式的值 作为值返回
val b = if(a<7){val c=a+1;c+3} else if (a==5) 5 else 3
println(b)
//数组初始化
val c:Array[String]=Array("a","b","d")
//变量定义, 变量名:变量类型
val d:String = forAry(c)
println(d)
//求和
val result= sum(23,32,32,32,32)
println(" sum result :"+result)
// 将整个区间作为参数序列来处理 :_*
val newResult = sum(1 to 10:_*)
println("sum newResult: "+newResult)
//数组格式化输出 toBuffer
println(yieldAry().toBuffer)
println("--------------------")
filter()
//异常
exception()
}
/**
* 遍历数组
* @param ary
* @return
*/
def forAry(ary:Array[String]):String={
val newBuilder=new StringBuilder
// to 是 i到 区间,包含开始和结尾
for(i<-10 to ary.length-1){
newBuilder.append(ary.apply(i))
}
// unit 是 0 到 length-1 之间
for(i<-0 until ary.length){
newBuilder.append(ary.apply(i))
}
//普通遍历
for(a<-ary) println( a)
newBuilder.toString()
}
/**
* yield 关键字 推导生成新的数组
* @return Array[Int]
*/
def yieldAry():Array[Int]={
val ary :Array[Int]= Array(1,32,3,31,43)
//until 从 0 到 ary.length-1 之间的下标
for(i<-0 until ary.length){
val d:Int=ary.apply(i)
val e= d.*(122);
// println(e)
}
//yield 类型推导为Array
for(arg<-ary) yield arg *2
}
/**
* 可变长参数定义 *
* @param args
* @return
*/
def sum(args:Int*):Long={
var result : Long=0
//for 循环遍历
for(arg<-args){
result += arg
}
return result
}
/**
* 数组过滤
*/
def filter(): Unit ={
//定義一個數組
val ary =Array(12,2,12,43,2,12,1)
//去重 过滤
//保留符合条件的元素 _.%(2)==0 保留偶数,
// map(_*2) 是各个元素乘以 2
val a = ary.distinct.filter(_.%(2)==0).map(_*2)
println(a.toBuffer)
println(a.sum)//元素求和
}
/**
* 异常处理
*/
def exception():Unit={
//定义一个定长的数组
val ary = new Array[String](2)
ary(0)="1234e"
var it = -2
try{
it = ary(0).toInt
}
catch {
case ex: FileNotFoundException => it = 0
case ex: NumberFormatException => it = 12
case ex:Exception => it = -3
}finally {
println(it)
}
}
}
【scala】 scala 条件控制 和异常处理(二)的更多相关文章
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
- Scala入门系列(二):条件控制与循环
条件控制与循环 if表达式 定义:if表达式是有值的,就是if或者else中最后一行语句返回的值. 例如:val isAdult = if (age > 18) 1 else 0 类型推断: ...
- Scala深入浅出实战经典-----002Scala函数定义、流程控制、异常处理入门实战
002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 ...
- 2.scala控制结构、函数、异常处理
2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...
- Dream------scala--函数定义、流程控制、异常处理
Dream------scala--函数定义.流程控制.异常处理 一.函数的定义 1.新建工程
- Python的条件控制及循环
一.条件控制: 1.If语句的使用: Python中if语句的一般形式如下所示: 上图中: 如果 "score>=90" 为 True 将执行 "print(‘优秀 ...
- Shell学习(三)——Shell条件控制和循环语句
参考博客: [1]Shell脚本的条件控制和循环语句 一.条件控制语句 1.if语句 1.1语法格式: if [ expression ] then Statement(s) to be execut ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- python基础之条件控制与循环
Python3 条件控制 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户 ...
随机推荐
- HTTP1.0/1.1/2.0特性对比_转
转自:HTTP1.0 HTTP1.1 HTTP2.0 主要特性对比 https://segmentfault.com/a/1190000013028798 HTTP1.0 早先1.0的HTTP版本, ...
- Shell脚本 Hello World
#!/bin/bash echo "Hello World !" “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口 ...
- 使用taskset命令来限制进程的CPU
常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源: 这个时候我们就可以把一些不太重要的比如co ...
- hbase 学习(十二)非mapreduce生成Hfile,然后导入hbase当中
最近一个群友的boss让研究hbase,让hbase的入库速度达到5w+/s,这可愁死了,4台个人电脑组成的集群,多线程入库调了好久,速度也才1w左右,都没有达到理想的那种速度,然后就想到了这种方式, ...
- android开发(38) 使用 DrawerLayou t实现左侧抽屉式导航菜单
最近流行 左侧抽屉式的导航条菜单,知乎,360,QQ都使用了这样的导航菜单,我们也了解下: Android Design 的流行趋势:Navigation Drawer 导航抽屉 参考这篇文章:htt ...
- Entity Framework应用:导航属性
一.主键和外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组是能唯一标识一条记录,该属性组就可以称为主键.例如: 学生版(学号.姓名.性别.班级) 其中每个学生的学号是唯一的,学号就是一 ...
- 添加相应型号和头文件到Keil中
- Android studio中出现Couldn't resolve resource @dimen/...
问题出现: Path.isConvex is not supported. Rendering problems .. Couldn't resolve resource @dimen/...等等 资 ...
- [技术选型] SSH/SSI框架替代品
1.Nutz 简介:http://blog.csdn.net/u012373523/article/details/16993859 官网:http://www.nutzam.com/ 2.
- 利用altium怎么生成PDF及怎么1:1打印文档
画完板子之后,还要生成原理图PDF文档,供其他设计人员参考和指正. 上图红框标注的两个地方,分别用于打印预览设置和生成原理图PDF.那么若是生成原理图PDF文档,则选择smart PDF即可. 点击s ...