zoukankan      html  css  js  c++  java
  • 寒假学习3scala简介与基础1

    Scala----Java++
    Scala更适合大数据的处理
    spark的底层用Scala编写
    spark对集合类型数据处理有非常好的支持
    ————————————————————————————————————————————————————————————

    创建Scala文件之前需要先添加框架
    创建Scala静态类object
    打入main再输入table键就能够自动补全

    package C01

    /*
    object:关键字,声明一个单例对象(伴生对象)
    */

    object HelloWorld {
    /*
    main 方法:从外部可以直接调用执行的方法
    def 方法名称(参数名称:参数类型[泛型]):返回值的类型 Unit代表返回值为空 = {方法体}
    */
    def main(args: Array[String]): Unit = {
    println("hello world")
    System.out.println("hello scala from java")
    }

    }

    在Scala中也可以直接使用Java中的方法,有些需要引入类库,有些则不用
    ——————————————————————————————————————————————————————————————

    变量和数据类型

    1.注释:和Java中完全一样

    ————————————————————————————————————————————————————————————————————————

    2.变量和常量

    Java
    变量类型 变量名称 = 初始值 int a = 10
    final 常量类型 常量名称 = 初始值 final int b = 20

    scala
    var 变量名 [:变量类型] = 初始值 var i:Int = 10
    val 常量名 [:常量类型] = 初始值 val j:int = 20
    注意:能用常量的地方尽量不要使用变量


    package C02

    object test2_Variable {
    def main(args: Array[String]): Unit = {
    //声明一个变量通用语法
    var a : Int = 10

    // (1)声明变量时,类型可以省略,编译器自动推导,即类型推导
    var a1 = 10
    val b1 = 23
    // (2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。
    var a2 = 15 //a2 类型为Int
    // a2 = "hello"

    // (3)变量声明时,必须要有初始值
    // var a3:Int

    // (4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,
    //val 修饰的变量不可改。
    a1 = 8
    // b1 = 9
    // (5)var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值却是可以改变的。(比如:自定义对象、数组、集合等等)

    }
    }
    ——————————————————————————————————————————————————————————————————————

    3.标识符的命名规范

    命名规则
    基本和Java是一致的,但是细节上会有所变化
    (1)以字母或者下划线开头,后接字母、数字、下划线
    (2)以操作符开头,且只包含操作符(+ - * / # !等)
    (3)用反引号`....`包括的任意字符串,即使是 Scala 关键字(39 个)也可以
    • package, import, class, object, trait, extends, with, type, for
    • private, protected, abstract, sealed, final, implicit, lazy, override
    • try, catch, finally, throw
    • if, else, match, case, do, while, for, return, yield
    • def, val, var
    • this, super
    • new
    • true, false, null

    package C02

    object test3_Identifier {
    def main(args: Array[String]): Unit = {
    //(1)以字母或者下划线开头,后接字母、数字、下划线
    val hello:String = ""
    var Hello123 = ""
    val _abc = ""

    //val h-b = ""
    //val 123abc = 234

    //(2)以操作符开头,且只包含操作符(+ - * / # !等)
    val -+/% = ""

    //(3)用反引号`....`包括的任意字符串,即使是 Scala 关键字(39 个)也可以
    val `if` = ""
    println(`if`)
    }

    }
    ————————————————————————————————————————————————————————————————

    4.字符串
    1)基本语法
    (1)字符串,通过+号连接
    (2)printf 用法:字符串,通过%传值。
    (3)字符串模板(插值字符串):通过$获取变量值

    package C02

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

    //(1)字符串,通过+号连接
    val name = "admin"
    val age = 18
    println(name + age + "岁")

    //加号属于相加操作,*号属于赋值操作
    println(name*3)

    //(2)printf 用法:字符串,通过%传值。
    printf("%d岁的%s\n",age,name)

    //(3)字符串模板(插值字符串):通过$获取变量值
    println(s"${age}岁的${name}")

    val num1:Double = 2.3456
    val num2:Float = 2.3456f
    println(f"The num is ${num1}%2.2f") //f 格式化模板字符串
    println(raw"The num is ${num1}%2.2f") //raw 不加工

    // 三引号表示字符串,保持多行字符串的原格式输出
    val sql = s"""
    |select *
    |from
    | student
    |where
    | name=${name}
    |and
    | age >${age}
    |""".stripMargin
    println(sql)

    }

    }

    ——————————————————————————————————————————————————————————————————————

    5.键盘输入

    在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
    1)基本语法
    StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

    package C02

    import scala.io.StdIn

    object test5_StdIn {
    def main(args: Array[String]): Unit = {
    //输入信息
    println("请输入名称")
    val name = StdIn.readLine()
    println("请输入年龄")
    val age = StdIn.readInt()

    //控制台打印输出
    println(s"欢迎${age}岁的${name}到来")
    }
    }

    ——————————————————————————————————————————————————————————————————————

  • 相关阅读:
    Codeforces Round #352 (Div. 1) B. Robin Hood (二分)
    Codeforces Round #209 (Div. 2) D. Pair of Numbers (模拟)
    Kattis
    kattis Curious Cupid (莫队算法)
    HYSBZ
    SPOJ NETADMIN
    day26-2 基于TCP协议的套接字编程
    day26-1 TCP三次握手和四次挥手
    day25-2 OSI协议和socket抽象层
    day25-1 网络架构与互联网组成
  • 原文地址:https://www.cnblogs.com/dty602511/p/15760177.html
Copyright © 2011-2022 走看看