变量与数据类型
变量声明
- // var | val 变量名 :变量类型 = 变量值
- // 用户名称
- var username : String = "zhangsan" //可变变量 :值可以改变的变量
- // 用户密码
- val userpswd : String = "000000" //不可变变量 :值一旦初始化后无法改变的变量
复制代码 变量的类型如果能够通过变量值推断出来,那么可以省略类型声明
变量初始化(强制)- var username // Error
- val username = "zhangsan" // OK
复制代码 标识符
- 1. 数字,字母,下划线,$
- 2. 数字不能开头
- 3. 不能使用关键字或保留字
- 4. 区分大小写
- 5. 长度没有限制
复制代码 Scala 可以使用两种形式的标志符,字符数字和符号。
- 字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"\("在 Scala 中也看作为字母。然而以"\)"开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。
- Scala 的命名规范采用和 Java 类似的 camel 命名规范,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。
- Scala 内部实现时会使用转义的标志符,比如:-> 使用 \(colon\)minus$greater 来表示这个符号。
字符串
在 Scala 中,字符串的类型实际上就是 Java中的 String类,它本身是没有 String 类的。
在 Scala 中,String 是一个不可变的字符串对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。- val name : String = "scala"
- val subname : String = name.substring(0,2)
- println("Hello " + name) // 字符串连接
- printf("name=%s\n", name) // 传值字符串(格式化字符串)
- println(s"name=${name}") // 插值字符串 将变量值插入到字符串
- // 多行格式化字符串
- // 在封装JSON或SQL时比较常用
- // 竖线表示顶格符
- val s =
- """
- | Hello
- Scala
- |""".stripMargin('#')
- val json =
- s"""
- | { "username":"${name}", "password":"${password}" }
- |""".stripMargin
- val sql = "select id from (select * from t_user where id = 1 order by id desc) a group by id"
- val sql1 =
- """
- | select
- | id
- | from
- | (
- | select
- | *
- | from t_user
- | where id = 1
- | order by id desc
- |
- | ) a
- | group by id
- |
- |""".stripMargin
复制代码 输入与输出
输入
- val age : Int = scala.io.StdIn.readInt() // 从控制台输入
- scala.io.Source.fromFile("input/user.json").foreach(
- line => {
- print(line)
- }
- )
- scala.io.Source.fromFile("input/user.json").getLines() // 从文件中输入
- // 也可静态导入
复制代码 输出
- val writer = new PrintWriter(new File("output/test.txt" ))
- writer.write("Hello Scala")
- writer.close()
复制代码 网络
- object TestServer {
- def main(args: Array[String]): Unit = {
- val server = new ServerSocket(9999)
- while ( true ) {
- val socket: Socket = server.accept()
- val reader = new BufferedReader(
- new InputStreamReader(
- socket.getInputStream,
- "UTF-8"
- )
- )
- var s : String = ""
- var flg = true
- while ( flg ) {
- s = reader.readLine()
- if ( s != null ) {
- println(s)
- } else {
- flg = false
- }
- }
- }
- }
- }
- ...
- object TestClient {
- def main(args: Array[String]): Unit = {
- val client = new Socket("localhost", 9999)
- val out = new PrintWriter(
- new OutputStreamWriter(
- client.getOutputStream,
- "UTF-8"
- )
- )
- out.print("hello Scala")
- out.flush()
- out.close()
- client.close()
- }
- }
复制代码 数据类型

Scala是完全面向对象的语言,所以不存在基本数据类型的概念,有的只是任意值对象类型(AnyVal)和任意引用对象类型(AnyRef)- // Nothing是scala语言中特殊的类型,用于统一方法的异常和正常的返回
- }
- def test(): Nothing = {
- throw new Exception()
- }
- def test1(): String = {
- throw new Exception()
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |