### 文章目录
- [@[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表示方法没有返回值;