🏠 个人主页:csdn春和
📢 推荐专栏:更多专栏尽在主页!
JavaWeb专栏(从入门到实战超详细!!!)
SSM专栏 (更新中)
📝 本期文章:Scala的基础语法第一篇
如果对您有帮助还请三连支持,定会一 一回访!
本文目录
Scala基础语法了解
1、注释
Scala注释使用和Java完全一样
。注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。单行注释
多行注释
文档注释
2、变量
2.1、声明变量
变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。
声明变量语法:
var | val 变量名 :变量类型 = 变量值
变量的类型在变量名之后等号之前声明。
变量的类型如果能够通过变量值推断出来,那么可以省略类型声明,这里的省略,并不是不声明,而是由Scala编译器在编译时自动声明编译的。
// 因为Scala是静态类型语言,所以即使不声明类型
// Scala也能在编译时正确的判断出变量的类型,这体现了Scala语言的简洁特性。
val num1 = 1
val num2 = 2
val str = "hello world!"
println(num1 * num2)
println(str)
2.2、变量初始化
Java语法中变量在使用前进行初始化就可以,但是
Scala语法中是不允许的,必须显示进行初始化操作。
var username // Error
val username = "zhangsan" // OK 必须显示初始化
2.3、可变变量
值可以改变的变量,称之为可变变量,但是变量类型无法发生改变,
Scala中可变变量使用关键字var进行声明
即使用var关键字声明的变量是可变变量,可变变量的可变是值可变而数据类型不可变
// 可变变量
var name : String = "zhangsan"
name = "lisi"
// 修改为其他类型就会报错
name = 20 // error
println(name)
3.2.4、不可变变量
值一旦初始化后无法改变的变量,称之为
不可变变量
。Scala中不可变变量使用关键字val进行声明
, 类似于Java语言中的final关键字
即使用val关键字声明的变两个为不可变变量,不能在修改它的值
// 不可变变量
val name2 : String = "lisi"
name2 = "zhangsan" //error
2.5、小结
(1)声明变量时,类型可以省略,编译器编译时可以自动推导,即类型推导
(2)类型确定后,就不能修改,说明
Scala 是强数据类型语言。
(3)变量声明时,必须要有初始值 ,即必须显示初始化变量
(4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变, val 修饰的变量不可改。
问题思考
val和var两个修饰符,更推荐使用哪一个?
答:更推荐使用val修饰符,因为在开发中声明的变量一般都会一直使用过,而不会经常去修改它。
java中的字符串为何被称为不可变字符串?
答:不可变字符串只是内存的地址不可变,地址中的内容其实是可以通过反射进行改变的
3、标识符
Scala 对各种变量、方法、函数等命名时使用的字符序列称为标识符。
凡是自己可以起名字的地方都叫标识符
Scala 可以使用两种形式的标志符,字符数字和符号。
scala中的标识符命名规范和java基本一致
3.1、以字母或者下划线开头,后接字母、数字、下划线
// 标识符
/*
* scala的标识符和java中的标识符基本一致
* 1、数字、字母、下划线、$
* 2、数字不能开头
* 3、不能使用关键字或保留字
* 4、区分大小写
* 5、长度没有限制
* */
val name: String = "zhangwuji"
val _name: String = "zhangwuji"
val name$: String = "zhangwuji"
val name1: String = "zhangwuji"
// val 1name:String = "zhangwuji" // error 不能一数字开头
// val private: String = "zhangwuji" // error 不能使用关键字或保留字
在java中 java重写了+号的运算规则,其实本质就是一个运算符,
运算符在scala中是可以自定义的
3.2、以操作符开头,且只包含操作符(+ - * / # !等)
// Scala中的标识符可以用来声明运算符
// Scala中的标识符不用记住 报错了改就可
val + = 1 + 1
val - = 1 + 1
val * = 1 + 1
val / = 1 + 1
val % = 1 + 1
val @@ = 1 + 1
val ## = 1 + 1
val $ = 1 + 1
val ^ = 1 + 1
val & = 1 + 1
val < = 1 + 1
val > = 1 + 1
// 颜文字
val :-> = "张三"
println(:->)
3.3、不以$开头
在java中没有颜文字,但是scala又支持颜文字,所以由此可知scalac对此又作出一些操作,使其编译的结果在java中能够得到支持。
反编译查看源码
查看
所以在scala中特殊符号在编译时会转换为以$开头的变量,所以我们应该注意如下问题
Scala 内部实现时会使用转义的标志符,比如:-> 使用
$colon$minus$greater
来表示这个符号。
所以在声明变量的时候我们一般不能以$
开头
以"$
“开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用”$"开始的标识符,以免造成冲突。
3.4、不以 _下划线作为变量名
在scala中下划线 _ 的作用非常丰富 为了避免冲突,我们一般不以_ 单独作为变量名来使用
可以声明 但是不能访问
(5)遵循驼峰命名规则
Scala 的命名规范采用和 Java 类似的 camel 命名规范,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。
切记:能声明和能使用时两回事
Scala 中的标识符也不能是关键字或保留字,那么Scala中有多少关键字或保留字呢?
3.5、小结
Scala中标识符命名规范和java基本一致但是有一些小的区别
不能以数字开头
不建议使用$开头 可能存在冲突
不建议使用_单独作为变量 可声明但是不能访问
问题一:如何在java中使用scala对象?
在Scala中Object关键字的作用就是声明一个对象,在java中我们可以直接使用对象.方法进行调用
编写一个ScalaTest
package com.zhou.scala.chapter1
/**
* @author it春和
* @create 2022-04-26 15:30
*/
object ScalaTest {
def sayHi(): Unit ={
println("hello world!")
}
def add(a:Int,b:Int): Unit ={
println(a + b)
}
}
编写一个java类 在Java类中使用Scala对象
public class JavaUseScala {
public static void main(String[] args) {
// 通过对象.方法的方式
ScalaTest.sayHi();
ScalaTest.add(20,10);
}
}
问题二:如果变量就想使用特定含义的关键字怎么办?
使用``包裹即可
val `private` = "zhangsan"
println(`private`)
4、字符串
在Scala中字符串的类型实际上就是java中的String类型它本身是没有 String 类的。在 Scala 中,String 是一个不可变的字符串对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。
基础语法:(重点掌握)
(1)字符串,通过+号连接 拼串
(2)printf 用法:字符串,通过%传值。 传值字符串
(3)字符串模板(插值字符串):通过$获取变量值
案例代码:
package com.zhou.scala.chapter1
/**
* @author it春和
* @create 2022-04-26 19:56
*/
object Scala03_string {
def main(args: Array[String]): Unit = {
val username: String = "张无忌"
val age: Int = 20
// 1、拼接字符串
println("你好" + username)
// 2、传值字符串(格式化字符串)
printf("用户名=%s,年龄=%d\n", username, age)
// 3、插值字符串 (将变量的值插入到字符串中)
println(s"${username}今年${age}岁")
// 4、如果需要对变量进行运算,那么可以加${}
println(s"${username}今年${age}岁,两年后是${age+2}岁")
}
}
5、键盘输入
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取
// 基本语法
StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()
案例:从控制台接收用户信息
package com.zhou.scala.chapter1
import scala.io.StdIn
/**
* @author it春和
* @create 2022-04-25 9:56
*/
object Scala04_input {
def main(args: Array[String]): Unit = {
// 接收控制台输入
// 接收用户名
println("请输入用户名:")
val username: String = StdIn.readLine()
// 接收年龄
println("请输入年龄:")
val age: Int = StdIn.readInt()
// 打印
println(s"用户${username}今年${age}岁!")
}
}
小结:
1、Scala注释和java中的注释完全一样
2、变量分为可变变量和不可变变量(常量),可变变量一般用var来声明,不可变变量用val来声明,更加推荐使用val声明变量
3、标识符的规范和java一样但有区别需要注意区分
4、字符串输出的三种形式需要掌握(拼串、传值字符串、插值字符串)
5、键盘输入的语法 StdIn.readXxx