03_Scala变量和数据类型

### 文章目录

  • [@[toc]](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**变量和数据类型**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**1.注释**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**2.变量和常量**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**3. 标识符的命名规范**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**4.scala的字符串**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**5.键盘输入**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**5.1 StdIn.readLine()**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**5.2 从文件中读取数据**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)
  • [**5.3 Scala向外写数据**](#文章目录 @[toc] 变量和数据类型 1.注释 2.变量和常量 3. 标识符的命名规范 4.scala的字符串 5.键盘输入 5.1 StdIn.readLine() 5.2 从文件中读取数据 5.3 Scala向外写数据)

变量和数据类型

1.注释

和Java完全一样

**

**

2.变量和常量

复制代码
var name [:VariableType] = value // variable
val name [:ConstantType] = value // constant

变量var常量val

其次,Java是先写类型后写名称,scala是先写名称,后写类型;

放到后面的原因是:scala认为类型并不重要

**

**

一般编译器都可以进行自动推断,所以红色部分类型都可以省略;

**

**

复制代码
//    1.声明变量时,类型可以省略,编译器可以自动推导
    val b =100

//    2.类型定义后就不能修改,因为Scala是强数据类型语言

//    3.变量声明必须有初始值

//    var  d

//    4.变量,常量分别用var,val声明修饰,var修饰的变量的值可改变,val修饰不可改变
    a=100
//    b=50

引入数据类型若是静态变量 ,其可以改变它的属性值,但是前提是其属性值是var修饰;

**

**

**

**

注:你也不能直接重新new或者重新赋值操作;

3. 标识符的命名规范

  • 字母下划线开头,后跟字母数字下划线,和C/C++/Java一样。
  • 操作符开头,且只包含(±*/#!等),也是有效的标识符。这样用会用什么奇怪的好处吗?答案是灵活到天顶星的运算符重载。
  • 用反引号包括的任意字符串,即使是同39个Scala关键字同名也可以。有点奇怪的用法,尚不知道为什么。
  • **
    **

关键字:

  • package import class obejct trait extends with type for
  • private protected abstract sealed final implicit lazy override
  • try catch finlly throw
  • if else match case do while for return yield
  • def var val
  • this super
  • new
  • true false null
  • 其中Java没有的关键字:object trait with implicit match yield def val var

4.scala的字符串

基本用法

1)字符串通过+拼接

2)printf使用%进行值传递

3)字符串模板插值字符串:通过$获取其变量值;

**

**

关于%不太行,还是别用此方法拼接;

**最终一个方法双引号前加s,然后用${}取值经常用到;

**

复制代码
关于格式化数据类型
双引号前面加f
然后%设置格式
.2表示小数点后保留几位
100表示前面要最少100位,如果不够,在整数前面补0,就像上述
如果超了,那没事

//三引号表示字符串,保持多行字符串的原格式输出

**

**

复制代码
 //stripMargin表示边界输出,也就是仅输出有效内容

**

**

目的也是方便写sql,而不进行拼接;

5.键盘输入

5.1 StdIn.readLine()

**

**

**

**

5.2 从文件中读取数据

**

**

复制代码
1.定义文件
2.创建对象,Source.fromFile()
3.如果遍历需要创建迭代器		getLines().var
4.source.close()

5.3 Scala向外写数据

**

**

复制代码
1.定义PrintWriter对象
2.向外写
3.flush()
4.close

Unit表示方法没有返回值;
相关推荐
hweiyu005 小时前
学习Scala语言的最佳实践有哪些?
开发语言·学习·scala
金銀銅鐵2 天前
Scala 的缺省参数值 (default parameter value) 在 class 文件中是如何实现的?
scala
数据智能老司机5 天前
函数式事件驱动架构——交易系统(可观测性)
架构·scala·响应式设计
数据智能老司机6 天前
函数式事件驱动架构——带副作用的流
架构·scala·响应式设计
IvanCodes7 天前
二、Spark 开发环境搭建 IDEA + Maven 及 WordCount 案例实战
大数据·spark·scala
渣渣盟16 天前
Flink数据流高效写入MySQL实战
mysql·flink·scala
开开心心就好16 天前
专业PPT图片提取工具,操作简单
javascript·电脑·powerpoint·scala·erlang·perl·myeclipse
开开心心就好20 天前
电脑息屏工具,一键黑屏超方便
开发语言·javascript·电脑·scala·erlang·perl
linweidong1 个月前
一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用
大数据·vscode·后端·大模型·scala·ai编程·cursor
白总Server2 个月前
GaussDB 分布式数据库调优(架构到全链路优化)
java·网络·c++·架构·go·scala·数据库架构