标识符_基本规则
Scala 可以使用两种形式的标识符,字符+数字和符号。
标识符使用字母或是下划线开头,后面可以接字母或是数字。
package cn.itbaizhan.chapter02
//标识符的基本规则
object Identifier1 {
def main(args: Array[String]): Unit = {
/*scala的标识符和java的标识符基本一致
1.可以使用字母、数字,下划线,$(不建议使用)
2.是区分大小写的。
3.长度是没有限制的。
4.数字不能为标识符的开头
5.关键字不能直接用来作为标识符
*/
var name = "tuhao1"
var naMe = "tuhao2"
var name1 = "diaosi"
//var 2name = "baifumei"//错误的
//var def = "aitucuo"//错误的
var name_ = "baifumei2"
}
}
Scala内部实现时会使用转义的标识符,比如:-> 使用 c o l o n colon colonminus$greater 来表示这个符号。因此如果你需要在 Java 代码中访问:->方法,你需要使用 Scala 的内部名称 c o l o n colon colonminus$greater。
package cn.itbaizhan.chapter02
object Identifier2 {
def main(args: Array[String]): Unit = {
//不建议使用特殊符号做标识符
// 编译后将> 转义为 $greater,所以我们使用$开头的标识符容易产生冲突
val > = "tuhao"
println(>)//tuhao
//val $greater = "diaosi"//
//下划线不要 直接作为标识符的名称
/*val _ = "username"
println(_)//运行时出现异常*/
}
def method(): String ={
"method()被调用了.."
}
def :->():Unit={
println(":->()被调用了..")
}
}
以"
"
开头的标识符为保留的
S
c
a
l
a
编译器产生的标识符使用,应用程序应该避免使用
"
"开头的标识符为保留的 Scala 编译器产生的标识符使用,应用程序应该避免使用"
"开头的标识符为保留的Scala编译器产生的标识符使用,应用程序应该避免使用""开始的标识符,以免造成冲突。
Scala 的命名规则采用和 Java 类似的 驼峰命名规则,首字符小写,比如 toString。类名的首字符还是使用大写。
避免使用以下划线结尾的标识符以避免冲突。符号标识符包含一个或多个符号,如+,:,? 等,比如:
- ++ ::: < ?> :->
package cn.itbaizhan.chapter02
//了解即可
object Identifier3 {
def main(args: Array[String]): Unit = {
val ## = "tuohao"
val @@ = "diaosi"
val + = "tuhao1"
val - = "tuhao1"
val * = "tuhao1"
val / = "tuhao1"
val % = "tuhao1"
val < = "tuhao1"
val :: = "tuhao1"
val ? = "tuhao1"
}
}
可以在反引号之间使用任何有效的 Scala 标识符,Scala 将它们解释为一个 Scala 标识符,一个典型的使用为 Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字,如下方式使用。
package cn.itbaizhan.chapter02
//关键字作为标识符如何解决
object Identifier4 {
def main(args: Array[String]): Unit = {
//以下两个代码 编译错误
/*val def = "主函数变量"
val private = "test1"*/
//如果需要使用关键字作为标识符,需要使用反引号
val `def` = "主函数变量"
val `private` = "test1"
println(`def`)
Thread.`yield`()
}
}
下表列出了 scala 保留关键字,我们不能使用以下关键字作为变量名:
标识符_特殊符号
Scala 可以使用两种形式的标识符,字符+数字和符号。
标识符使用字母或是下划线开头,后面可以接字母或是数字。
package cn.itbaizhan.chapter02
//标识符的基本规则
object Identifier1 {
def main(args: Array[String]): Unit = {
/*scala的标识符和java的标识符基本一致
1.可以使用字母、数字,下划线,$(不建议使用)
2.是区分大小写的。
3.长度是没有限制的。
4.数字不能为标识符的开头
5.关键字不能直接用来作为标识符
*/
var name = "tuhao1"
var naMe = "tuhao2"
var name1 = "diaosi"
//var 2name = "baifumei"//错误的
//var def = "aitucuo"//错误的
var name_ = "baifumei2"
}
}
Scala内部实现时会使用转义的标识符,比如:-> 使用 c o l o n colon colonminus$greater 来表示这个符号。因此如果你需要在 Java 代码中访问:->方法,你需要使用 Scala 的内部名称 c o l o n colon colonminus$greater。
package cn.itbaizhan.chapter02
object Identifier2 {
def main(args: Array[String]): Unit = {
//不建议使用特殊符号做标识符
// 编译后将> 转义为 $greater,所以我们使用$开头的标识符容易产生冲突
val > = "tuhao"
println(>)//tuhao
//val $greater = "diaosi"//
//下划线不要 直接作为标识符的名称
/*val _ = "username"
println(_)//运行时出现异常*/
}
def method(): String ={
"method()被调用了.."
}
def :->():Unit={
println(":->()被调用了..")
}
}
java代码如下:
package cn.itbaizhan.chapter02;
public class Identifier2Java {
public static void main(String[] args) {
/*String result = Identifier2.method();
System.out.println(result);*/
//调用Identifier2中的:->()
Identifier2.$colon$minus$greater();
}
}
以"
"
开头的标识符为保留的
S
c
a
l
a
编译器产生的标识符使用,应用程序应该避免使用
"
"开头的标识符为保留的 Scala 编译器产生的标识符使用,应用程序应该避免使用"
"开头的标识符为保留的Scala编译器产生的标识符使用,应用程序应该避免使用""开始的标识符,以免造成冲突。
Scala 的命名规则采用和 Java 类似的 驼峰命名规则,首字符小写,比如 toString。类名的首字符还是使用大写。
避免使用以下划线结尾的标识符以避免冲突。符号标识符包含一个或多个符号,如+,:,? 等,比如:
变量
变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。
变量的类型在变量名之后等号之前声明。
var/val 变量名 :变量类型 = 变量值 // :变量类型 可以省略。
变量的类型如果能够通过变量值推断出来,那么可以省略类型声明,这里的省略,并不是不声明,而是由Scala编译器在编译时自动声明编译的。
object ScalaVarVal {
def main(args: Array[String]): Unit = {
//名称
var name = "GTJin"
//年龄
var age = 30
//城市
val city = "beijing"
}
}
Java语法中变量在使用前进行初始化就可以,但是Scala语法中是不允许的,必须 显式进行初始化操作。
var address //错误
var phone = "13812345678" //正确的
值可以改变的变量,被称为可变变量。使用var进行声明,值可以改变,但是类型不能改变。
var phone = "13812345678" //正确的
phone = "13888888888"//值可以改变
phone = 123 //类型无法改变,也就是无法从String改为Int
值一旦初始化后无法改变的变量,称之为不可变变量(也被称为常量)。Scala中不可变变量使用关键字val进行声明, 类似于Java语言中的final关键字
//城市
val city:String = "beijing"
city = "ShangHai" // 错误
city = true //错误