目录
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)首先确保安装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
测试案例:a = 10, b = 12 计算a + b 的值
(1)按住WIN+R或者直接在搜索框数据cmd + enter, 打开dos窗口
(2)输入 Scala 并按回车键,启动 Scala 环境。如下图所示,则环境配置成功。如果出现其他情
况,应该是你的环境变量没有配置好,建议再检查一下。
(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即可
(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。
(1)右键点击 main 目录->New->点击 Diretory -> 写个名字(比如 scala)。
(2)右键点击 scala 目录->Mark Directory as->选择 Sources root,观察文件夹颜色发生变化。
(1)案例测试如下:
有意思的是JAVA也可以混着一起用。
/*这是一个多行注释*/
object Demo01 {
def main(args: Array[String]): Unit = {
// 1. 测试
println("==========测试============")
println("hello world")
System.out.println("hello scala from java")
}
}
(2)关联scala源码
去官网下载对应版本的scala源码包,加载到本地即可
(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
(1)字符串,通过+号连接
(2)printf 用法:字符串,通过%传值。
(3)字符串模板(插值字符串):通过$获取变量值
package com.atguigu.chapter02
object TestCharType {
def main(args: Array[String]): Unit = {
var name: String = "jinlian"
var age: Int = 18
//(1)字符串,通过+号连接
println(name + " " + age)
//(2)printf 用法字符串,通过%传值。
printf("name=%s age=%d\n", name, age)
//(3)字符串,通过$引用
//多行字符串,在 Scala中,利用三个双引号包围多行字符串就可以实现。
//输入的内容,带有空格、\t 之类,导致每一行的开始位置不能整洁对齐。
//应用 scala 的 stripMargin 方法,在 scala 中 stripMargin 默认
是“|”作为连接符,//在多行换行的行头前面加一个“|”符号即可。
val s =
"""
|select
| name,
| age
|from user
|where name="zhangsan"
""".stripMargin
println(s)
//如果需要对变量进行运算,那么可以加${}
val s1 =
s"""
|select
| name,
| age
|from user
|where name="$name" and age=${age+2}
""".stripMargin
println(s1)
val s2 = s"name=$name"
println(s2)
}
}
1)基本语法
StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()
2)案例实操
需求:可以从控制台接收用户信息,【姓名,年龄,薪水】。
import scala.io.StdIn
object TestInput {
def main(args: Array[String]): Unit = {
// 1 输入姓名
println("input name:")
var name = StdIn.readLine()
// 2 输入年龄
println("input age:")
var age = StdIn.readShort()
// 3 输入薪水
println("input sal:")
var sal = StdIn.readDouble()
// 4 打印
println("name=" + name)
println("age=" + age)
println("sal=" + sal)
}
}
SCALA是纯面向对象语言,在JAVA基础上更上一层。因此没有基本数据类型,只有包装类型和引用数据类型
(1)精度小向精度大的自动转换: var d: Double = 12
(2)精度大向精度小的需要强制转换,同时存在失去精度的风险 var d: Int = 12.33.toInt
(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 (负数补码转换成原码,符号位不变,其余的位置逐一取反后加一)
注意:Java 和 Scala 中关于==的区别
》》在scala中:==更加类似于 Java 中的 equals,参照 jd 工具
<<左移:比如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 在二进制中,转换成补码再操作:右移两位,补符号位。再转换成源码。
SCALA的流程控制语句和JAVA差不多,这里就不做一样赘述了。