变量与数据类型

变量与数据类型

变量声明

 // 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()
作者:POCOPOCOPOCO原文地址:https://www.cnblogs.com/POCOPOCOPOCO/p/16697603.html

%s 个评论

要回复文章请先登录注册