• Scala基础语法(一)


    目录

    1.scala环境搭建

        1.1 安装scala

        1.2 测试环境是否搭建成功

         1.3 安装插件

    2.创建IDEA项目工程 

         2.1 添加项目框架

          2.2 创建项目源文件目录

          2.3 在scala目录下新建一个包,用于编写程序代码。

    3.变量与常量

    4.字符串输出 

         4.1 基本语法

         4.2 字符串输出案例

     5. 键盘输入   

    6.数据类型

         6.1 数值数据类型

         6.2 数值数据类型的转换(scala中数据类型的转换与java一致)

         6.3 String类型与数值类型的互相转换

     7 运算符

         7.1 算术运算符

          7.2 关系运算符

          7.3 逻辑运算符

          7.4 位运算符

    8.流程控制


    1.scala环境搭建

    1.1 安装scala

    (1)首先确保安装JKD1.8,如何安装JDK1.8可以参考网络上的其他安装教程

    (2)scala官方下载所需要的版本。由于考虑到后续要学习的spark框架,因此这里我选择下载

                 scala-2.12.11
    SCALA官方网址https://scala-lang.org/download/all.html(3)将scala安装包解压到本地文件即可,这里我解压到 C:\tools\

    (4)配置环境变量

     (5)在PATH添加环境变量

    (6)注意事项

    注意 1:解压路径不能有任何中文路径,最好不要有空格。

    注意 2:环境变量要大写 SCALA_HOME

     1.2 测试环境是否搭建成功

       测试案例:a = 10, b = 12 计算a + b 的值

    (1)按住WIN+R或者直接在搜索框数据cmd + enter, 打开dos窗口

    (2)输入 Scala 并按回车键,启动 Scala 环境。如下图所示,则环境配置成功。如果出现其他情

            况,应该是你的环境变量没有配置好,建议再检查一下。

    (3)定义变量,开始进行案例测试

     1.3 安装插件

      因为IDEA本身并不支持scala的开发,因此需要额外安装一个SCALA插件。

    (1)离线安装:这里需要提前去官网上下载。然后打开 IDEA,在左上角找到 File->在下拉菜单中点击 Setting... ->点击 Plugins->点击 右 下 角 Install plugin from disk… , 找 到 插 件 存 储 路 径 D:\Tools\scala-2.12.11\scala-intellij-bin-2017.2.6.zip,最后点击 ok。

    (2)在线安装:打开IDEA。settings->plugins->搜索框搜索Scala -> 点击install即可

    2.创建IDEA项目工程 

    2.1 添加项目框架

    (1)打开 IDEA->点击左侧的 Flie->选择 New->选择 Project…

    (2)创建一个 Maven 工程,并点击 next

    (3)Name:输入项目名称, Location:输入项目地址 , GroupId:输入公司域名.公司名称, ArtifactId:输入 项目名称->点击 next->点击 Finish, 

            注意:工程存储路径一定不要有中文和空格。

    (4)默认情况下,IDEA不支持scala开发,因此这里需要引入scala框架。在项目名称上右键->选择Add Framework Support...>选择 Scala->点击 OK 。

     啊..... 这个我已经添加好了,不好截细节图,所以从别地拷贝了一张,添加scala框架界面就是这样的。。。。。。

     注意:如果是第一次引入框架,Use libary 看不到,需要选择你的 Scala 安装目录,然 后工具就会自动识别,就会显示 user libary。

     2.2 创建项目源文件目录

    (1)右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。

    (2)右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。

     2.3 在scala目录下新建一个包,用于编写程序代码。

    (1)案例测试如下:

    有意思的是JAVA也可以混着一起用。

    1. /*这是一个多行注释*/
    2. object Demo01 {
    3. def main(args: Array[String]): Unit = {
    4. // 1. 测试
    5. println("==========测试============")
    6. println("hello world")
    7. System.out.println("hello scala from java")
    8. }
    9. }

     (2)关联scala源码

    去官网下载对应版本的scala源码包,加载到本地即可

    3.变量与常量

    (1)注释。scala的注释与java一致。 //表示单行注释,/**/表示多行注释,/** */表示文档注释

    (2)变量和常量。

            var 变量名 [: 变量类型] = 初始值 var i:Int = 10 val

            常量名 [: 常量类型] = 初始值 val j:Int = 20

    注意:能用常量的地方不用变量

     (3)标识符的命名规则

            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

    4.字符串输出

    4.1 基本语法

    (1)字符串,通过+号连接

    (2)printf 用法:字符串,通过%传值。

    (3)字符串模板(插值字符串):通过$获取变量值

    4.2 字符串输出案例

    1. package com.atguigu.chapter02
    2. object TestCharType {
    3. def main(args: Array[String]): Unit = {
    4. var name: String = "jinlian"
    5. var age: Int = 18
    6. //(1)字符串,通过+号连接
    7. println(name + " " + age)
    8. //(2)printf 用法字符串,通过%传值。
    9. printf("name=%s age=%d\n", name, age)
    10. //(3)字符串,通过$引用
    11. //多行字符串,在 Scala中,利用三个双引号包围多行字符串就可以实现。
    12. //输入的内容,带有空格、\t 之类,导致每一行的开始位置不能整洁对齐。
    13. //应用 scala 的 stripMargin 方法,在 scala 中 stripMargin 默认
    14. 是“|”作为连接符,//在多行换行的行头前面加一个“|”符号即可。
    15. val s =
    16. """
    17. |select
    18. | name,
    19. | age
    20. |from user
    21. |where name="zhangsan"
    22. """.stripMargin
    23. println(s)
    24. //如果需要对变量进行运算,那么可以加${}
    25. val s1 =
    26. s"""
    27. |select
    28. | name,
    29. | age
    30. |from user
    31. |where name="$name" and age=${age+2}
    32. """.stripMargin
    33. println(s1)
    34. val s2 = s"name=$name"
    35. println(s2)
    36. }
    37. }

     5. 键盘输入   

    1)基本语法

     StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

    2)案例实操

    需求:可以从控制台接收用户信息,【姓名,年龄,薪水】。

    1. import scala.io.StdIn
    2. object TestInput {
    3. def main(args: Array[String]): Unit = {
    4. // 1 输入姓名
    5. println("input name:")
    6. var name = StdIn.readLine()
    7. // 2 输入年龄
    8. println("input age:")
    9. var age = StdIn.readShort()
    10. // 3 输入薪水
    11. println("input sal:")
    12. var sal = StdIn.readDouble()
    13. // 4 打印
    14. println("name=" + name)
    15. println("age=" + age)
    16. println("sal=" + sal)
    17. }
    18. }

    6.数据类型

    SCALA是纯面向对象语言,在JAVA基础上更上一层。因此没有基本数据类型,只有包装类型和引用数据类型

    6.1 数值数据类型

    6.2 数值数据类型的转换(scala中数据类型的转换与java一致)

    (1)精度小向精度大的自动转换: var d: Double = 12

    (2)精度大向精度小的需要强制转换,同时存在失去精度的风险 var d: Int = 12.33.toInt

    6.3 String类型与数值类型的互相转换

    (1)基本类型转 String 类型(语法:将基本类型的值+"" 即可)val s1: String = 123 + ""

    (2)String 类型转基本数值类型

    (语法 s1.toInt、s1.toFloat、s1.toDouble、s1.toByte、s1.toLong、s1.toShort)

    (3)扩展面试题

    Int 4个字节表示:

    原码:0000 0000 0000 0000 0000 0000 1000 0010

    补码:0000 0000 0000 0000 0000 0000 1000 0010(整数的补码是其本身)

    强制转换成Byte,byte具有1个字节8位,强制转换的话是直接截取补码的后8位

    补码:1000 0010

    原码:1111 1101 + 1 = 1000 1110 = -126 (负数补码转换成原码,符号位不变,其余的位置逐一取反后加一)

     7 运算符

    7.1 算术运算符

    7.2 关系运算符

     注意:Java 和 Scala 中关于==的区别

    •  》》在java中:==比较两个变量本身的值,即两个对象在内存中的首地址; equals 比较字符串中所包含的内容是否相同。

    》》在scala中:==更加类似于 Java 中的 equals,参照 jd 工具

    7.3 逻辑运算符

    7.4 位运算符

    <<左移:比如a = 60, a << 2  其实就是a * 2^2 = a * 4=60 * 4=240  在二进制中,转换成补码再操作:左移两位,后面补0,符号位不变。再转换成源码

    >>右移:比如a = 60, a >> 2  其实就是a / 2^2 = a / 4=60 / 4=15  在二进制中,转换成补码再操作:右移两位,补符号位。再转换成源码。

    8.流程控制

    SCALA的流程控制语句和JAVA差不多,这里就不做一样赘述了。

  • 相关阅读:
    2023年10月4日
    ElasticSearch7.3学习(二十一)----Filter与Query对比、使用explain关键字分析语法
    springboot毕设项目大型企业员工信息管理系统9thmk(java+VUE+Mybatis+Maven+Mysql)
    Jquery结合Ajax和Web服务使用三层架构实现无刷新分页
    智能资产时代:探索Web3对数字资产的变革
    Spring容器加载Bean和JVM加载类
    Web大学生网页作业成品:基于html制作中国科技发展网站设计题材【航天之路7页】HTML+CSS+JavaScript
    Regularization 正则化 和 normalization数据标准化(归一化,规范化)
    数据结构代码
    为什么你总是无法做出正确的判断
  • 原文地址:https://blog.csdn.net/baidu_41833099/article/details/124726767