处理数据:字面量、值、变量和类型
特点
scala是运行在java虚拟机上的,兼容现有的java程序;
面向对象;函数式语言;轻量级函数,高阶函数,并发性比较好;
基本语法
区分大小写;
类名第一个字母大写,或者每个单词的第一个字母大写;
方法名称第一个字母小写,每个单词的第一个字母大写;
程序文件名与对象名称完全匹配(新版本不需要了,但仍保留习惯);
scala程序从main()方法开始处理;
$为开头的标识符为保留的scala编译器产生的标识符使用;
scala用package关键字来定义包
1.在文件的头定义包名:
package com.runoob
class HelloWorld
2.可以在一个文件中定义多个包
package com.runoob{
class HelloWorld
}
##引用
Import java.awt.Color //引入color
import java.awt._ //引入包内所有
import java.awt.{Color,Font} //引用其中几个成员
Import java.util.{HashMap => JavaHashMap} //重命名成员
import java.util.{HashMap => _,_} //引入了util包的所有成员,但是hashmap并隐藏了
处理数据
-
字面量或字面数据;
scala数据类型
数据类型 | 描述 |
---|---|
Byte | 8位有符号补码整数。数值区间为 -128 到 127 |
Short | 16位有符号补码整数。数值区间为 -32768 到 32767 |
Int | 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Long | 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 |
Float | 32 位, IEEE 754 标准的单精度浮点数 |
Double | 64 位 IEEE 754 标准的双精度浮点数 |
Char | 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF |
String | 字符序列 |
Boolean | true或false |
Unit | 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。 |
Null | null 或空引用 |
Nothing | Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。 |
Any | Any是所有其他类的超类 |
AnyRef | AnyRef类是Scala里所有引用类(reference class)的基类 |
byte等级最低,可以转换为任何其他类型,不能从高等级向低等级转换
可以用toType方法手动完成类型间的转换
多行字符串用三个双引号来表示分隔符
转义
转义符号 | 描述 |
---|---|
\b | 退格(BS) ,将当前位置移到前一列 |
\t | 水平制表(HT) (跳到下一个TAB位置) |
\n | 换行(LF) ,将当前位置移到下一行开头 |
\f | 换页(FF),将当前位置移到下页开头 |
\r | 回车(CR) ,将当前位置移到本行开头 |
\" | 代表一个双引号(")字符 |
\' | 代表一个单引号(')字符 |
\\ | 代表一个反斜线字符 '' |
值(不可变)
val <name>:<type> = <literal>
val x:Int = 5
val xmax, ymax = 100 //多个变量声明
val pa = (40,"Foo")
变量(可重新赋值,但不能改变为他指定的类型)
var a:Double = 2.72
var myvar: String = "foo"
在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。
所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。
值优先于变量
字符串
string类型支持使用数学运算符,=检查真正的相等,而不是引用相等
字符串内插,在第一个双引号前面加“s”前缀,使用approx."),字符串内插的替代格式是使用printf记法,前缀改成f
正则表达式
基于java类java.util.regex.Pattern
matches 匹配,返回true
replaceAll 用替换文本取代所有匹配文本
replaceFirst 用替换文本取代第一个匹配文本
富包装类:在scala.runtime中,基本类型都对应一个富包装类。
range
1 to 5是(1,2,3,4,5)
1 until 5 是(1,2,3,4)
1 to 10 by 2 步长是2
0.5f to 5.9f by 0.8f
从控制台读取数据input
import io.StdIn._
var i = readInt()
输入一个数字
输出
print()
println()
printf() #也是支持的
写入文件
import java.io.PrintWriter
val out = new PrintWriter(".../output.txt") //当前在哪个路径下启动的scala,文件就被写到哪里
for (i <- 1 to 5) out.println(i) //写入
out.close
读取文件
import scala.io.Source
val inputFile = Source.fromFile("output.txt")
val lines = inputFile.getLines
for (line <- lines) println(line)
异常处理
import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException
try {
val f = new FileReader("input.txt")
//文件操作
} catch {
case ex: FileNotFoundException =>
//文件不存在时的操作
case ex:IOException =>
// 发生I/O错误时的操作
} finally {
file.close()// 确保关闭文件
}
网友评论