注释

  1. package tcode.chapter02
  2. object $01_Command {
  3. /**
  4. * java的注释:
  5. * 单行注释: //
  6. * 多行注释: /* .. */
  7. * 文档注释: /** .. */
  8. * scala的注释:
  9. * 单行注释: //
  10. * 多行注释: /* ..*/
  11. * 文件注释: /** ..*/
  12. */
  13. def main(args: Array[String]): Unit = {
  14. //单行注释
  15. val name:String = "zhangsan"
  16. /*
  17. 多行注释
  18. */
  19. val age:Int = 20
  20. }
  21. }

命名规范

  • java中标识符的命名规范: 必须是数字、字母、下划线、$,首字母不能是数字
    scala中标识符的命名规范: 必须是数字、字母、下划线、$、某些特殊符号, 首字母不能是数字
    scala中定义标识符的时候特殊符号是scala内部使用,不推荐开发人员使用
    * 在工作中定义变量的时候还是推荐驼峰原则 ```scala package tcode.chapter02

object $02_ParamdDefindName {

def main(args: Array[String]): Unit = {

  1. val + = "zhsan"

} }

  1. <a name="828rZ"></a>
  2. # 变量定义
  3. //java中定义变量: [final] 类型 变量名 = 值<br /> //scala中定义变量: val/var 变量名: 类型 = 值<br /> //scala定义变量的时候,变量类型可以省略,省略之后scala会自动推断<br /> // val与var的区别:<br /> // val修饰的变量相当于java final修饰的变量,不可修改值<br /> // var修饰的变量可以修改值<br /> //scala中定义变量的时候,必须初始化<br /> //scala中如果一行只写一个语句,分号可以省略,如果一行写多个语句,多个语句之间必须通过;分割
  4. ```scala
  5. package tcode.chapter02
  6. object $03_ParamDefined {
  7. def main(args: Array[String]): Unit = {
  8. val name:String = "zhangsan" ;var age:Int = 20
  9. // name = "lsii"
  10. age = 100
  11. println(name)
  12. println(age)
  13. //自动推断变量类型
  14. val address = "shenzhen"
  15. println(address)
  16. //scala中定义变量的时候,必须初始化
  17. //var sex:String
  18. }
  19. }

字符串

/
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语句]
可以不转义
*/

  1. package tcode.chapter02
  2. object $04_String {
  3. def main(args: Array[String]): Unit = {
  4. val s = new String("xxx")
  5. println(s)
  6. val name = "yyy"
  7. println(name)
  8. val cc = "aa"+"bb" + name
  9. println(cc)
  10. //插值表达式: s"${外部变量/值/表达式}"
  11. val dd = s"aa ${name} ${1+1}"
  12. println(dd)
  13. println(dd.substring(2))
  14. val host = "hadoop102"
  15. val port = "8020"
  16. val url =s"hdfs://${host}:${port}/user/hive/warehouse"
  17. val url3 =s"hdfs://$host:$port/user/hive/warehouse"
  18. println(url)
  19. println(url3)
  20. val xx = s"${host}andport"
  21. println(xx)
  22. // format方法
  23. val url2 =s"hdfs://%s:%f/user/hive/warehouse"
  24. println(url2.format(host, 1.1))
  25. val sql = "select " +
  26. "id," +
  27. "name," +
  28. "age" +
  29. " from person " +
  30. "where id>30"
  31. // 三引号
  32. val sql2 =
  33. """
  34. |select
  35. | id,
  36. | name,
  37. | age
  38. | from perosn
  39. | where id>30
  40. """.stripMargin
  41. println(sql2)
  42. }
  43. }

读取数据

//scala中读取控制台数据(键盘输入): 静态方法:StdIn.readXXX
//从文件读取数据(封装的io流): 静态方法:Source.fromFile(path).getLines

  1. package tcode.chapter02
  2. import scala.io.{Source, StdIn}
  3. object $05_StdIn {
  4. def main(args: Array[String]): Unit = {
  5. // 键盘输入字符串
  6. val line = StdIn.readLine("请输入一行语句:")
  7. println(line)
  8. // 键盘输入数字
  9. val i = StdIn.readInt()
  10. println(i)
  11. // 文件读取,getlines方法返回迭代器
  12. Source.fromFile("d:/data.txt","utf-8").getLines().foreach(x=>println(x))
  13. }
  14. }

数据类型

image.png
/
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【一般用于给引用类型赋予初始值,在赋予初始值的时候,必须定义变量的类型】
image.png
Nothing: 所有类的子类,是scala内部使用
  1. package tcode.chapter02
  2. object $06_Type {
  3. def main(args: Array[String]): Unit = {
  4. // 一般用于初始化
  5. var age:String = null
  6. }
  7. }

类型转换

/*
数字与数字的转换
1、低精度转高精度[Int->Long]: 自动转换
2、高精度转低精度[Long->Int]: toXXX方法转换
数字与字符串的转换
1、数字转字符串:
1、拼接
1、通过+拼接: 数字+””
2、插值表达式: s”${数字}”
2、toString
2、字符串转数字: toXXX方法

*/

  1. package tcode.chapter02
  2. object $07_DataCover {
  3. def main(args: Array[String]): Unit = {
  4. val a:Int = 10
  5. val b:Long = a
  6. println(b)
  7. //高精度转低精度
  8. val c:Int = b.toInt
  9. println(c)
  10. val e:String = c.toString
  11. println(e)
  12. //数字转字符串:
  13. val f:String = c + ""
  14. val g:String = s"${10}"
  15. println(f,g)
  16. val u = f.toInt
  17. println(u)
  18. }
  19. }