注释
package tcode.chapter02
object $01_Command {
/**
* java的注释:
* 单行注释: //
* 多行注释: /* .. */
* 文档注释: /** .. */
* scala的注释:
* 单行注释: //
* 多行注释: /* ..*/
* 文件注释: /** ..*/
*/
def main(args: Array[String]): Unit = {
//单行注释
val name:String = "zhangsan"
/*
多行注释
*/
val age:Int = 20
}
}
命名规范
- java中标识符的命名规范: 必须是数字、字母、下划线、$,首字母不能是数字
scala中标识符的命名规范: 必须是数字、字母、下划线、$、某些特殊符号, 首字母不能是数字
scala中定义标识符的时候特殊符号是scala内部使用,不推荐开发人员使用
* 在工作中定义变量的时候还是推荐驼峰原则 ```scala package tcode.chapter02
object $02_ParamdDefindName {
def main(args: Array[String]): Unit = {
val + = "zhsan"
} }
<a name="828rZ"></a>
# 变量定义
//java中定义变量: [final] 类型 变量名 = 值<br /> //scala中定义变量: val/var 变量名: 类型 = 值<br /> //scala定义变量的时候,变量类型可以省略,省略之后scala会自动推断<br /> // val与var的区别:<br /> // val修饰的变量相当于java final修饰的变量,不可修改值<br /> // var修饰的变量可以修改值<br /> //scala中定义变量的时候,必须初始化<br /> //scala中如果一行只写一个语句,分号可以省略,如果一行写多个语句,多个语句之间必须通过;分割
```scala
package tcode.chapter02
object $03_ParamDefined {
def main(args: Array[String]): Unit = {
val name:String = "zhangsan" ;var age:Int = 20
// name = "lsii"
age = 100
println(name)
println(age)
//自动推断变量类型
val address = "shenzhen"
println(address)
//scala中定义变量的时候,必须初始化
//var sex:String
}
}
字符串
/
java中如何得到字符串:
1、拼接: “aa”+”bb”
2、new String
3、一些方法: toString,subString,..
* 4、双引号包裹: “xxx”
scala中字符串:**
1、new String
2、双引号包裹: “xxx”
3、拼接:
1、通过+拼接: “aa”+”bb”
2、插值表达式: s”${外部变量/值/表达式}”
视情况,可以不写‘{}’
4、一些方法: toString,subString,..
format方法: 在字符串中引入占位符,后续可以动态传入参数
%s: 字符串的占位符
%d: 整数占位符
%f: 浮点型占位符
5、三引号: 能够完整保留字符串的格式[一般用于写sql语句]
可以不转义
*/
package tcode.chapter02
object $04_String {
def main(args: Array[String]): Unit = {
val s = new String("xxx")
println(s)
val name = "yyy"
println(name)
val cc = "aa"+"bb" + name
println(cc)
//插值表达式: s"${外部变量/值/表达式}"
val dd = s"aa ${name} ${1+1}"
println(dd)
println(dd.substring(2))
val host = "hadoop102"
val port = "8020"
val url =s"hdfs://${host}:${port}/user/hive/warehouse"
val url3 =s"hdfs://$host:$port/user/hive/warehouse"
println(url)
println(url3)
val xx = s"${host}andport"
println(xx)
// format方法
val url2 =s"hdfs://%s:%f/user/hive/warehouse"
println(url2.format(host, 1.1))
val sql = "select " +
"id," +
"name," +
"age" +
" from person " +
"where id>30"
// 三引号
val sql2 =
"""
|select
| id,
| name,
| age
| from perosn
| where id>30
""".stripMargin
println(sql2)
}
}
读取数据
//scala中读取控制台数据(键盘输入): 静态方法:StdIn.readXXX
//从文件读取数据(封装的io流): 静态方法:Source.fromFile(path).getLines
package tcode.chapter02
import scala.io.{Source, StdIn}
object $05_StdIn {
def main(args: Array[String]): Unit = {
// 键盘输入字符串
val line = StdIn.readLine("请输入一行语句:")
println(line)
// 键盘输入数字
val i = StdIn.readInt()
println(i)
// 文件读取,getlines方法返回迭代器
Source.fromFile("d:/data.txt","utf-8").getLines().foreach(x=>println(x))
}
}
数据类型
/
java中的数据类型:
1、基本数据类型[不是对象]: byte、short、int、long、float、double、char、boolean
2、引用数据类型: String,数组,集合,java class
/
scala类型:
没有基础数据类型,
只有引用数据类型。**
Any:所有类的父类 | ||
---|---|---|
AnyVal:值类型 | AnyRef:引用类型 | |
Byte、Short、Int、Long、Float、Double、Char、Boolean Unit: 相当于java的void,有一个实例() StringOps: 是对Java字符串的补充 |
String, 数组, 集合, java class, scala class |
|
Null: 是所有引用类型的子类,有一个实例null【一般用于给引用类型赋予初始值,在赋予初始值的时候,必须定义变量的类型】 |
||
Nothing: 所有类的子类,是scala内部使用 |
package tcode.chapter02
object $06_Type {
def main(args: Array[String]): Unit = {
// 一般用于初始化
var age:String = null
}
}
类型转换
/*
数字与数字的转换
1、低精度转高精度[Int->Long]: 自动转换
2、高精度转低精度[Long->Int]: toXXX方法转换
数字与字符串的转换
1、数字转字符串:
1、拼接
1、通过+拼接: 数字+””
2、插值表达式: s”${数字}”
2、toString
2、字符串转数字: toXXX方法
*/
package tcode.chapter02
object $07_DataCover {
def main(args: Array[String]): Unit = {
val a:Int = 10
val b:Long = a
println(b)
//高精度转低精度
val c:Int = b.toInt
println(c)
val e:String = c.toString
println(e)
//数字转字符串:
val f:String = c + ""
val g:String = s"${10}"
println(f,g)
val u = f.toInt
println(u)
}
}