zoukankan      html  css  js  c++  java
  • spark学习进度3:Scala中变量,常量,数据类型,运算符,表达式,循环,方法,函数的基本使用

    scala中定义变量:
    (1)var 变量名 = 初始化值
    (2)var 变量名:数据类型 = 初始化值
    如:var a = 1
    注意:
    (1)定义变量的时候需要初始化
    (2)定义变量的时候可以不指定变量的数据类型,这时系统会根据变量的初始化值推断变量的数据类型

    定义常量:
    (1)val 常量名 = 初始化值
    (2)val 常量名:数据类型 = 初始化值
    注意:
    (1)val修饰的常量,相当于java中final修饰的变量
    (2)val修饰的常量,常量的类型的值类型(相当于Java的基本数据类型,int,double,boolean),值是不可以修改的(如:val a = 10,a的值是无法修改的)

    val修饰的变量,变量的类型是引用类型,引用不可变,引用的内容可变
    如:
    val a1 = Array(1,2,3)
    val a2 = Array(4,5,6)
    a1 = a2 //错误,引用不可变
    a1(0) = 10 //正确,引用的内容可变

    lazy修饰val的常量(lazy只能修饰val定义的常量),当使用到这个常量的时候才会执行赋值操作。

    在程序开发中,能使用val的地方尽量使用val。


    Scala中的数据类型:
    (1)分为值类型(java中的基本数据类型)和引用类型
    (2)值类型是类类型,没有基本数据类型和包装类之分


    运算符:
    (1)Scala中的运算符都是方法的重载,是方法的调用(如:1 + 1和1.+(1)代表相同的意思)
    (2)Scala中没有++与--运算符,可以用+=和-=代替

    表达式:
    表达式就是一个语句块,包含一条或者多条语句
    特点:
    (1)表达式是有返回值的
    (2)返回值是表达式中最后一条语句的执行结果
    条件表达式:
    定义:含有if/else的语句块
    val a = 1
    val res = if(a>0)100 else -100//返回100
    val res = if(a>0) 100 else if(a<0) -100 else 0//返回100
    块表达式:
    定义:{一条或者多条语句}//返回值为最后一条语句的执行结果
    val res = {10}//返回10
    val res = {val a = 10|val b = 10|a+b}//返回20
    val res = {val a = 10|val b = 10}//返回(),()是unit类型


    循环:
    for:
    for(i <- 1 to 10)println(i)//输出结果为1到10,其中1 to 10是一个集合
    for(i <- 1 until 10)println(i)//输出结果为1到9,其中1 until 10是一个集合
    for(i <- 1 to 3;j <- 1 to 3 if(i!=j))print(10*i + j)//嵌套循环+条件
    val res = for(a <- 1 to 10)yield a*10//yeild产生返回值,res是一个集合
    while:
    while(条件语句){表达式}
    do while:
    do{表达式}while(条件语句)


    方法:
    定义方法:def 方法名(参数列表):返回类型 = 方法体//其中对于递归方法返回类型是不可以省略的,对于其他方法可以省略;方法体是一个表达式。
    定义实例:
    def add(x:Int,y:Int) = x+y
    def add(x:Int,y:Int):Unit = {x+y|println(x+y)}
    调用实例:
    add(x=1,y=2)或者add(1,2)

    带有参数列表的方法:
    def addAndMultiply(x:Int,y:Int,z:Int) = (x+y)*z
    def addAndMultiply(x:Int)(y:Int,z:Int) = (x+y)*z
    def addAndMultiply(x:Int)(y:Int)(z:Int) = (x+y)*z
    调用的形式分别为:
    addAndMultiply(1,2,3)
    addAndMultiply(1)(2,3)
    addAndMultiply(1)(2)(3)

    没有参数的方法:
    def printInfo = println("i love scala")
    调用:
    printInfo//不可以带小括号
    def printInfo() = println("i love scala")
    调用:
    printInfo()
    printInfo//带不带小括号都可

    带有默认参数值的方法:
    def printInfo(str:String = "Hello Scala") = println(str)
    调用:
    printlnInfo()//输出Hello Scala
    printlnInfo(i love scala)//输出i love scala
    注意:
    def add(a:Int = 1,b:Int,c:Int = 3) = println(a+b+c)
    调用时add(1)报错,因为默认把1给了a,b没有默认值,add(1,2)或者add(b = 2)是可以的

    可变长参数方法:
    def add(a:Int*) = {for(i <- a)|println(a)}


    函数:
    函数定义(1):val fun = ((x:Int,y:Int)=>x+y)//最常用
    函数定义(2):val fun = (_:Int)+(_:Int)
    函数定义(3):val fun :(Int,Int)=>Int = (_+_)
    函数定义(4):val fun :(Int,Int)=>Int =(x,y)=>x+y
    无参函数定义:val fun = () =>println("haha")
    无参数函数调用:fun()//必须带小括号

  • 相关阅读:
    理解java的三大特性之封装
    Spring_事务-注解代码
    Spring_使用 NamedParameterJdbcTemplate
    C#多线程简单例子讲解
    C#多线程编程
    ASP.NET MVC 的URL路由介绍
    NHibernate二级缓存(第十一篇)
    NHibernate之配置文件属性说明
    NHibernate之映射文件配置说明
    NHibernate 延迟加载与立即加载 (第七篇)
  • 原文地址:https://www.cnblogs.com/123456www/p/12257082.html
Copyright © 2011-2022 走看看