Scala入门- 变量(基础+案例)

2.1 注释

Scala注释使用和 Java 完全一样。
注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
1)基本语法
(1)单行注释://
(2)多行注释:/* */
(3)文档注释:

/**
*
*/  

在IDEA中,多行注释的用法:打/*,接着回车。也可/**,按回车。

代码规范:
(1)使用一次 tab 操作,实现缩进,默认整体向右边移动,用 shift+tab 整体向左移
(2)或者使用 ctrl + alt + L 来进行格式化
(3)运算符两边习惯性各加一个空格。比如 2 + 4 * 5 。
(4)一行最长不超过 80 个字符,超过的 请使用换行展示 ,尽量保持格式优雅

2.2 变量和常量(重点)

常量:在程序执行的过程中,其值不会被改变的变量

0)回顾 Java 变量 和常量语法
变量类型 变量名称 = 初始值 : int a = 10
final 常量类型 常量名称 = 初始值 : final int b = 20

1)基本语法
var 变量名 [: 变量类型] = 初始值 : var i:Int = 10
val 常量名 [: 常量类型] = 初始值 : val j:Int = 20
注意: 能用常量的地方 不用变量
[: 变量类型] [: 常量类型] 都可以省略 ,scala并不关注变量的类型,而是变量名

2)案例实操
(1)声明变量时,类型可以省略,编译器自动推导,即类型推导
(2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。
(3)变量声明时,必须要 有 初始值
(4)在声明 定义一个变量时,可以使用 var 或者 val 来修饰, var 修饰的变量可改变,val 修饰的变量不可改。
(5 ) var 修饰的对象引用可以改变, val 修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

package chapter02

import chapter01.Student

object Test02_Variable {
  def main(args: Array[String]): Unit = {
    //声明一个变量的通用语法
    var a:Int = 10
    //(1)声明变量时,类型可以省略,编译器 自动推导,即类型推导
    var a1 = 10
    val b1 = 23
    //(2) 类型确定后,就不能修改,说明 Scala 是强数据类型语言
    var a2=15
//    a2="Hello"     //报错
    //(3) 变量声明时,必须要有初始值
//    var a3:Int    //报错
    //(4))在声明定义一个变量时,可以使用 var 或者 val 来修饰,var修饰
    //的变量可改变, val 修饰的变量不可改。
    a1=58
//    b1=85 //报错
    
      //对象定义成val,不能改变其值的
//    val alice = new Student("alice", 20)  
//    alice=new Student("Alice",20)

    //对象定义成var,接下来alice改成Alice,没有报错
    var alice = new Student("alice", 20)
    alice=new Student("Alice",20)
    alice=null
    //如果定义成Val,而之后要修改其值的话,在所定义的student类的参数位置,前面加var,即可修改
    val bob = new Student("bob",23)
    bob.age=100
    bob.printInfo()
  }
}

举个详细的案例来讲解下:

object TestVar {
def main(args: Array[String]): Unit = {
// p1 是 var 修饰的, p1 的属性可以变,而且 p1 本身也可以变
	var p1 = new Person()
	p1.name = "dalang"
	p1 = null
// p2 是 val 修饰的,那么 p2 本身就不可变 (即 p2 的内存地址不能变),
//但是 p2 的属性是可以变,因为 属性并没有用 val 修饰 。
	val p2 = new Person()
	p2.name="jinlian"
// p2 = null // 错误的,因为 p2 是 val 修饰的
	}
}
class Person{
	var name : String = "jinlian"
}

2.3 标识符的命名规范

Scala对各种变量 、 方法 、 函数 等命名时使用的字符序列称为 标识符 。即 凡是自己可以起名字的地方都叫标识符。
1)命名规则
Scala中的标识符声明, 基本和 Java 是一致的 ,但是细节上会有所变化,有以下三 种规则:
(1)以字母或者下划线开头,后接字母、数字、下划线: 以字母开头,以下划线开头都可以,以数字开头报错。
(2)以操作符开头,且只包含操作符(+ - * /等)
(3)用反引号包括的任意字符串,即使是 Scala 关键字( 39 个)也可以
• 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
2)案例实操

object TestName {
def main(args: Array[String]): Unit = {
// 1 )以字母或者下划线开头,后接字母、数字、下划线
	var hello: String = "" // ok
	var Hello12: String = "" // ok
	var 1hello: String = "" // error 数字不能开头
	var h-b: String = "" // error 不能用
	var x h: String = "" // error 不能有空格
	var h_4: String = "" // ok
	var _ab: String = "" // ok
	var Int: String = "" // ok 因为在 Scala 中 Int 是预定义的字符
	不是 关键字,但 不推荐
	var _: String = "hello" // ok 单独一个下划线不可以作为标识符,
	因为被认为是一个方法
	println(_)
	//(2) 以操作符开头,且只包含操作符 (+ * / # 等)
	var  +*--/#! : String = "" // ok
	var  +*--/#!1 : String = "" // error 以操作符开头,必须都是操作符
	// (3)用反引号 包括的任意字符串,即使是 Scala 关键字( 39 个)也可以
	var if : String = "" // error 不能用关键字
	var `if` : String = "" // ok 用反引号 包括的任意字符串包括关键字
	}
}

2.4 字符串输出

1)基本语法
(1 )字符串,通过 +号连接
(2 ) printf 用法:字符串,通过%传值。
(3 ) 字符串模板 (插值字符串 ): 通过 获取变量 值
2) 案例实操

object Test04_String {
  def main(args: Array[String]): Unit = {
    //(1)字符串,通过+号连接
    val name:String ="alice"
    val age: Int =18
    println(age+"岁的" +name + "在尚硅谷学习")
    //  *用于将一个字符串复制多次并拼接
    println(name * 3)

    //(2)字符串的格式化输出
    printf("%d岁的%s在尚硅谷学习",age,name)

    //(3)字符串模板(插值字符串):通过$获取变量
    println(s"${age}岁的${name}在尚硅谷学习")  //s" " 指定模板字符串

    val num :Double =22.3456
    print(s"the number is ${num}")
    print(f"the number is ${num}%2.2f")  //f"" :格式化模板字符串  %2.2f:
    println(raw"the number is ${num}%2.2f")  //按照原始内容输出
    
    //三引号表示字符串,保持多行字符串的原格式输出
    val sql =s"""
       |select *
       |from
       |  student
       |where
       |  name=${name}
       |and
       |  age>${age}
       |""".stripMargin
      print(sql)
  }
}

2.5 键盘输入

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
1)基本 语法
StdIn.readLine()、 StdIn.readShort() 、 StdIn.readDouble()
2) 案例实操

import scala.io.StdIn

object Test05_StdIn {
  def main(args: Array[String]): Unit = {
    println("请输入您的大名:")
    val name:String = StdIn.readLine()
    println("请输入您的芳龄:")
    val age = StdIn.readInt()
    //控制台打印输出
    println(s"欢迎${age}岁的${name}来到尚硅谷学习")
  }
}

结果:
在这里插入图片描述
利用SCALAIO实现文件的写入:

package chapter02
import java.io.{File, PrintWriter}
import scala.io.Source

object Test06_FileIO {
  def main(args: Array[String]): Unit = {
    //1.从文件中读取数据
    Source.fromFile("src\\main\\resources\\test.txt").foreach(print)   //foreach传进了一个函数进去,涉及到的是函数式编程

    //2.将数据写入文件
    val writer = new PrintWriter(new File("src\\main\\resources\\output.txt"))
    writer.write("Hello Scala from java writer ")
    writer.close()
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值