大家好,我是百思不得小赵。
创作时间:2022 年 6 月 24 日 博客主页: 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀
如何定义?
var 变量名 [: 变量类型] = 初始值
val 常量名 [: 常量类型] = 初始值
举个栗子:
var a: Int = 10;
val b: Int = 22;
// 变量类型可以省略
var a = 10;
val b = 22;
由于Scala是一个函数式编程语言,所以能用常量的地方不用变量。
重要的结论:
举个栗子:
val hello = ""
var Helo = ""
var _abc=123
var -+/% = "hello"
var `if` = 123
Scala中的关键字合集:
• package, import, class, object, trait, extends, with, type, for
• private, protected, abstract, sealed, final, implicit, lazy, override
• try, catch, finally, throw
• if, else, match, case, do, while, for, return, yield
• def, val, var
• this, super
• new
• true, false, null
与Java中不同的是:
object trait with implicit match yield def val var
基本的语法
String
+
号连接*
用于将一个字符串复制多次拼接printf
输出字符串,通过%传值s"${变量名}“
,前缀为 s
格式化模板字符串,f
为格式化模板浮点数,%
后面为格式化的内容raw"输出内容${变量名}"
,输出的结果原样输出print(输出内容)
、println()
、 printf()
"""......."""
举个栗子:
val name: String = "lisi" + " ";
val age: Int = 12
println(name * 3)
printf("%d岁的%s在吃饭", age, name)
// 格式化模板字符串
println(s"${age}岁的${name}在吃饭")
val num: Double = 2.26054
println(s"this number is ${num}")
println(f"this num is ${num}%2.2f")
println(raw"this num is ${num}%2.2f")
val sql =
s"""
|select *
| from student
| where name = ${name}
| and
| age > ${age}
|""".stripMargin
println(sql)
基本语法
import scala.io.StdIn
,StdIn在 IO 包下StdIn.readLine()
读取字符串StdIn.readShort()
StdIn.readDouble()
举个栗子:
object Test04_StdInt {
def main(args: Array[String]): Unit = {
println("请输入你的名字:")
val name = StdIn.readLine()
println("请输入你的年龄:")
val age = StdIn.readInt()
println(s"欢迎${age}的${name},光临本系统!!!")
}
}
文件输入输出:
import scala.io.Source
import java.io.PrintWriter
import java.io.File
object Test05_FileIO {
def main(args: Array[String]): Unit = {
// 1.从文件中读取数据
Source.fromFile("src/main/resources/test.txt").foreach(print)
// 2。将数据写入文件
val writer = new PrintWriter(new File("src/main/resources/put.txt"))
writer.write("hello scala from java")
writer.close()
}
}
Java中的数据类型
char、byte、short、int、long、float、double、boolean
Character、Byte、Short、Integer、Long、Float、Double、Boolean
Scala中的数据类型
Any
是所有数据的父类。Any
对应有两个子类,一个是数值类型(AnyVal
),另一个是引用类型(AnyRef
)StringOps
是对Java中的String
增强。Unit
为Scala中的一个数据类型,对应Java中的void
,表示方法没有返回值,只有一个单例对象,输出为符串()
,而void
是一个关键字Null
是一个类型,只 有一个对 象就 是null
。它是所有引用类型(AnyRef
)的子类。Nothing
,是所有数据类型的子类,在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。数据类型图(来源于网络~)
Byte
[1个字节] 8 位有符号补码整数
。数值区间为 -128
到 127
Short
[2个字节] 16 位有符号补码整数
。数值区间为 -32768
到 32767
Int
[4个字节] 32 位有符号补码整数
。数值区间为 -2147483648
到 2147483647
Long
[8个字节 ] 64 位有符号补码整数
。数值区间为 -9223372036854775808
到9223372036854775807
= 2 的(64-1)次方-1Int
,长整型需要加 l
或者 L
val b3: Byte = (1 + 10).toByte
举个栗子:
val al: Byte = 127
val a2: Byte = -128
val a3 = 12
val b1: Byte = 10
val b2: Byte = (10 + 20)
println(b2)
val b3: Byte = (b1 + 10).toByte
Float
[4] 32 位, IEEE 754 标准的单精度浮点数Double
[8] 64 位 IEEE 754 标准的双精度浮点数Double
类型举个栗子:
val f1: Float = 1.232f
val d2 = 12.987
Char
,表示单个字符\t 、\n、\\、\”
true
和 false
举个栗子:
val isTrue = true
val isFalse: Boolean = false
println(isTrue)
Unit
:表示无值 只有一个实例值,写成()
Null
: Null 类型只有一个实例值 null
Nothing
: 确定没有正常的返回值,可以用 Nothing 来指定返回类型举个栗子:
def m2(n: Int): Int = {
if (n == 0)
throw new NullPointerException
else
return n
}
Byte
,Short
和 Char
之间不会相互自动转换。Byte
,Short
,Char
他们三者可以计算,在计算时首先转换为 Int
类型。举个栗子:
val a1: Byte = 10;
val b1: Long = 20L;
val result1: Long = a1 + b1
println(result1)
toByte
、toInt
、…'aaa'.toInt 2.2.toInt
基本类型的值+" "
、s1.toInt、s1.toFloat、s1.toDouble、s1.toByte
举个栗子:
val n1: Int = 2.5.toInt
println(n1)
val n2: Int = (2.6 + 3.7).toInt
println(n2)
// 数值转为String
val a: Int = 27
val s: String = a + " "
println(s)
//String转换为数值
val m: Int = "12".toInt
val f: Float = "12.4".toFloat
val f2: Int = "12.6".toFloat.toInt
println(f2)
本次文章分享到这里就结束了,希望对你有所帮助!!!