变量与数据类型

打印 上一主题 下一主题

主题 897|帖子 897|积分 2691

变量与数据类型

变量声明
  1. // var | val 变量名 :变量类型 = 变量值
  2. // 用户名称
  3. var username : String = "zhangsan"  //可变变量 :值可以改变的变量
  4. // 用户密码
  5. val userpswd : String = "000000"  //不可变变量 :值一旦初始化后无法改变的变量
复制代码
变量的类型如果能够通过变量值推断出来,那么可以省略类型声明
变量初始化(强制)
  1. var username // Error
  2. val username = "zhangsan" // OK
复制代码
标识符
  1. 1. 数字,字母,下划线,$
  2. 2. 数字不能开头
  3. 3. 不能使用关键字或保留字
  4. 4. 区分大小写
  5. 5. 长度没有限制
复制代码
Scala 可以使用两种形式的标志符,字符数字和符号。

  • 字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"\("在 Scala 中也看作为字母。然而以"\)"开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。
  • Scala 的命名规范采用和 Java 类似的 camel 命名规范,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。
  • Scala 内部实现时会使用转义的标志符,比如:-> 使用 \(colon\)minus$greater 来表示这个符号。
字符串

在 Scala 中,字符串的类型实际上就是 Java中的 String类,它本身是没有 String 类的。
在 Scala 中,String 是一个不可变的字符串对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。
  1. val name : String = "scala"
  2. val subname : String = name.substring(0,2)
  3. println("Hello " + name) // 字符串连接
  4. printf("name=%s\n", name) // 传值字符串(格式化字符串)
  5. println(s"name=${name}") // 插值字符串 将变量值插入到字符串
  6. // 多行格式化字符串
  7. // 在封装JSON或SQL时比较常用
  8. // 竖线表示顶格符
  9.         val s =
  10.             """
  11.               | Hello
  12.                 Scala
  13.               |""".stripMargin('#')
  14.         val json =
  15.             s"""
  16.               | { "username":"${name}", "password":"${password}" }
  17.               |""".stripMargin
  18.         val sql = "select id from (select * from t_user where id = 1 order by id desc) a group by id"
  19.         val sql1 =
  20.             """
  21.               | select
  22.               |    id
  23.               | from
  24.               |    (
  25.               |        select
  26.               |           *
  27.               |        from t_user
  28.               |        where id = 1
  29.               |        order by id desc
  30.               |
  31.               |    ) a
  32.               | group by id
  33.               |
  34.               |""".stripMargin
复制代码
输入与输出

输入
  1. val age : Int = scala.io.StdIn.readInt() // 从控制台输入
  2. scala.io.Source.fromFile("input/user.json").foreach(
  3.         line => {
  4.                 print(line)
  5.         }
  6. )
  7. scala.io.Source.fromFile("input/user.json").getLines() // 从文件中输入
  8. // 也可静态导入
复制代码
输出
  1. val writer = new PrintWriter(new File("output/test.txt" ))
  2. writer.write("Hello Scala")
  3. writer.close()
复制代码
网络
  1. object TestServer {
  2.     def main(args: Array[String]): Unit = {
  3.         val server = new ServerSocket(9999)
  4.         while ( true ) {
  5.             val socket: Socket = server.accept()
  6.             val reader = new BufferedReader(
  7.                 new InputStreamReader(
  8.                     socket.getInputStream,
  9.                     "UTF-8"
  10.                 )
  11.             )
  12.             var s : String = ""
  13.             var flg = true
  14.             while ( flg  ) {
  15.                 s = reader.readLine()
  16.                 if ( s != null ) {
  17.                     println(s)
  18.                 } else {
  19.                     flg = false
  20.                 }
  21.             }
  22.         }
  23.     }
  24. }
  25. ...
  26. object TestClient {
  27.     def main(args: Array[String]): Unit = {
  28.         val client = new Socket("localhost", 9999)
  29.         val out = new PrintWriter(
  30.             new OutputStreamWriter(
  31.                 client.getOutputStream,
  32.                 "UTF-8"
  33.             )
  34.         )
  35.         out.print("hello Scala")
  36.         out.flush()
  37.         out.close()
  38.         client.close()
  39.     }
  40. }
复制代码
数据类型


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表