zoukankan      html  css  js  c++  java
  • Scala(二)【基本使用】

    一.变量和数据类型

    1.变量

    语法:val / var 变量名:变量类型 = 值

    val name:String = "zhangsan"
    

    注意
    1、val定义的变量想到于java的final,不可用被重新赋值
    2、var定义的变量可以被重新赋值
    3、在定义变量的时候,变量类型可以省略,scala会自动推断
    4、在定义变量的时候,必须初始化

    2.命名规范

    驼峰原则

    3.字符串操作

    1、双引号: val 变量名 = "字符串"

    val name:String = "zhangsan"
    

    2、三引号: val 变量名 = """sql语句"""

    一般用于写Sql字符串

    val sparkSql : String =
      """
        |select
        |   t1.name,
        |   t2.age,
        |   t1.address
        |from test1 t1
        |join test2 t2
        |on t1.id = t2.id
        |""".stripMargin
    print(sparkSql)
    

    3、插值表达式: val 变量名 = s"hello ${变量名1}"

    val name : String ="zhangsan"
    val address:String = "BeiJing"
    println(s"name=${name},address=${address}")
    

    4、format方法: "hello %s".format(字符串)

    val name : String ="zhangsan"
    val address:String = "BeiJing"
    println("name is %s, address is %s".format(name, address))
    

    4.数据类型

    类型一览图

    1、类型结构

    Any: 所有类型的父类
    	AnyVal:值类型
    		Byte、Short、Int、Long、Float、Double、Char、Boolean
    		Unit: 相当于java的void,有一个实例()
    		StringOps: 是对java string的扩展
    	AnyRef:引用类型
    		String、scala class、scala集合、java class、java集合
    			Null: 是所有引用类型的子类,有一个实例null
    Nothing: 是所有类型的子类,一般scala抛出异常的时候返回Nothing
    

    2、数据转换

    1、数字之间的转换
    	1、精度小的自动转成精度大的数字类型 比如Byte可以自动转成Int
    	2、精度大的数字转成精度小的数字,通过toXXX方法转换 比如 val a:Int = 10;  val b:Byte = a.toByte
    2、数字和字符串的转换
    	1、数字转字符串,可以通过插值表达式转换
    	2、字符串转数字,可以通过toXXX方法转换
    

    二.运算符

    ​ 1、算术运算符
    ​ 2、关系运算符
    ​ 3、逻辑运算符
    ​ 4、位运算符
    ​ 5、赋值运算符
    ​ scala中没有++、--、三目运算符
    ​ scala中运算符是一个个的方法
    ​ scala中方法的调用:
    ​ 1、对象.方法名(参数,...)
    ​ 2、对象 方法名 (参数,...)
    ​ 如果方法的参数只有一个,那么()可以省略: 对象 方法名 参数

    三.流程控制

    1.块表达式

    { }包裹的一块代码称之为块表达式,块表达式有返回值,返回值为{ }中最后一行表达式的结果值。

    val address = {
      var province: String = "GuangDong"
      var city: String = "ShenZhen"
      s"province:${province},city:${city}"
    }
    print(address)
    

    打印结果

    province:GuangDong,city:ShenZhen
    
    Process finished with exit code 0
    

    2.分支

    单分支

    if (布尔表达式) {..}
    

    双分支

    if (布尔表达式) {..} else {..}
    

    多分支

    if (布尔表达式) {..} else if(布尔表达式) {..} else if(布尔表达式){..} else{..}
    

    嵌套分支

    if (布尔表达式) { if (布尔表达式) {..}}
    

    注意

    分支有返回值的,返回值为满足条件的一个分支的{}的最后一行表达式的结果值。
    如果if在方法中,有return的时候,返回值就不一定是最后一行表达式的结果值。

    3.循环

    for循环

    1)to方法

    左右闭合。1 to 10也等价于1.to(10) ,结果: 1-10的集合

    val list = 1 to 10
    println(list.toBuffer)
    
    ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    Process finished with exit code 0
    

    2)until方法

    左闭右开。1 until 10也等价于1.until(10) ,结果: 1-9的集合

    同上

    3)for循环基本语法

    for(变量 <- 数组/集合/表达式) {..循环体..}

    for(i <- 1 to 10){
      print(i)
    }
    

    4)守卫

    for(变量 <- 数组/集合/表达式 if 布尔表达式)

    for(i <- 1 to 10 if(i%2==0)){
      print(i)
    }
    

    注意:如果if之前有代码语句,那么if不能提到循环后面,只能放在循环体中

    5)嵌套循环

    for(变量 <- 数组/集合/表达式;变量 <- 数组/集合/表达式)
    6)引入变量: for(变量 <- 数组/集合/表达式;val 变量名 = 变量值;变量 <- 数组/集合/表达式)
    7)for循环的返回值:

    for(变量 <- 数组/集合/表达式) yield {..}

    添加yield以后每个{ }都有一个返回值。

    4.实现java的continue和break

    break

    //导包
    import scala.until.control.Breaks._
    //使用
    breakable{
    	while(..){
    		if(...) break()
    	}
    }
    

    continue

    //导包
    import scala.until.control.Breaks._
    //使用
    while (...){
      breakable(){
        if(...)break()
      }
    }
    
  • 相关阅读:
    引用传参
    VS2017 用MySQL Connector 链接 MySQL时 getString异常问题
    Matlab学习日记第3天
    Matlab学习日记第2天
    Matlab学习日记第1天
    c#加密解密方法
    DataGridView添加行号
    c#带参数数组链接数据库方法
    2021/5/27
    2021/5/14
  • 原文地址:https://www.cnblogs.com/wh984763176/p/13356964.html
Copyright © 2011-2022 走看看