Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号“大数据技术和人工智能”(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的CSDN博客。
Scala是一门多范式编程语言,集成了面向对象和函数式语言的特性。本篇文章将以代码示例的形式简单介绍一下Scala语言的基础语法。
声明值和变量
// val声明的变量是不可变的
val str1 = "Hello World!"
val str2 : String = "Hello World!"
val str3 : java.lang.String = "Hello World!"
println(str1)
println(str2)
println(str3)
// var声明的变量是可变的
var str5 = "Hello World!"
str5 = "str5 Hello World!"
println(str5)
基本数据类型
Scala的数据类型包括:Byte、Char、Short、Int、Long、Float、Double和Boolean。在Scala中,这些类型都是“类”,并且都是包scala的成员,比如,Int的全名是scala.Int。对于字符串,Scala用java.lang.String类来表示字符串。
Scala的字面量包括:整数字面量、浮点数字面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量和元组字面量。举例如下:
val i = 123 //123就是整数字面量
val i = 3.14 //3.14就是浮点数字面量
val i = true //true就是布尔型字面量
val i = 'A' //'A'就是字符字面量
val i = "Hello" //"Hello"就是字符串字面量
// Scala允许对“字面量”直接执行方法
5.toString() //产生字符串"5"
"abc".intersect("bcd") //输出"bc"
操作符
Scala的常用操作符:加(+)、减(-) 、乘(*) 、除(/) 、余数(%)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)等,这些操作符就是方法。
Scala的操作符就是方法,a 方法 b
和a.方法(b)
是等价的,前者是后者的简写形式,这里的+
是方法名,是Int类中的一个方法。
// 下面三种写法的输出结果都是8
val sum1 = 5 + 3
val sum2 = (5).+(3)
val sum2 = 5.+(3)
控制结构
if条件表达式
val x = 6
if (x > 0) {
println("x = " + x)
} else {
println("x = " + x)
}
val x = 3
if (x > 0) {
println("x = " + x)
} else if (x == 0) {
println("x = 0")
} else {
println("x = " + x)
}
// Scala中的if表达式的值可以赋值给变量
val a = if (x > 0) 1 else -1
while循环
var i = 9
while (i > 0) {
i -= 1
printf("i is %d\n", i)
}
var i = 0
do {
i += 1
println(i)
} while (i < 5)
for循环
// for Range
// Range可以是一个数字区间表示 i to j ,或者 i until j,左箭头 <- 用于为变量 x 赋值。
for (a <- 1 to 10) {
println("a = " + a);
}
for (a <- 1 until 10) {
println("a = " + a);
}
for( a <- 1 to 3; b <- 1 to 3){
println( "a = " + a );
println( "Value of b: " + b );
}
// 循环集合
var a = 0;
val numList = List(1, 2, 3, 4, 5, 6);
for (a <- numList) {
println("a = " + a);
}
// 循环过滤
var a = 0;
val numList = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
for (a <- numList if a != 3; if a < 8) {
println("a = " + a);
}
// 使用yield
// 大括号中用于保存变量和条件,retVal是变量,循环中的yield会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。
var a = 0;
val numList = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
var retVal = for {
a <- numList if a != 3; if a < 8
} yield a
for(a <- retVal) {
println("a = " + a);
}
数组
定长数组,就是长度不变的数组,在Scala中使用Array进行声明,如下:
//声明一个长度为3的整型数组,每个数组元素初始化为0
val intValueArr = new Array[Int](3)
//在Scala中,对数组元素的应用,是使用圆括号,而不是方括号,也就是使用intValueArr(0),而不是intValueArr[0],这个和Java是不同的。
intValueArr(0) = 12
intValueArr(1) = 45
intValueArr(2) = 33
//声明一个长度为3的字符串数组,每个数组元素初始化为null
val strArr = new Array[String](3)
strArr(0) = "Flink"
strArr(1) = "Storm"
strArr(2) = "Spark"
for (i <- 0 to 2) println(strArr(i))
//Scala提供了更加简洁的数组声明和初始化方法,如下:
val intValueArr = Array(12, 45, 33)
val strArr = Array("Flink", "Storm", "Spark")
//从上面代码可以看出,都不需要给出数组类型,Scala会自动根据提供的初始化数据来推断出数组的类型。
可变数组
可变数组需要导入包scala.collection.mutable.ArrayBuffer
//导入ArrayBuffer包
import scala.collection.mutable.ArrayBuffer
//定义一个可变的数组
val arr : ArrayBuffer[String] = new ArrayBuffer[String]()
//在末尾添加一个元素
arr += "Hadoop"
//在末尾添加多个元素
arr += ("Hive", "Hbase")
//在末尾添加一个集合
arr ++= ArrayBuffer("Scala", "Java")
//在指定位置添加元素
arr(1) = "spark"
arr.insert(1, "Flume")
arr.insert(1, "Kafka", "Kylin")
arr.insertAll(1, ArrayBuffer("Hello", "World"))
println(arr)
//更新元素
arr(1) = "insistent"
arr.update(2, "Java")
println(arr)
//获取指定元素
println(arr(1))
println(arr.apply(2))
println(arr.take(3))
//删除元素
arr -= "insistent"
//删除集合
arr -= ("Java", "Kafka")
arr.remove(1)
//从1处开始删掉三个
arr.remove(1, 3)
//从前往后移除n个元素
arr.trimStart(1)
//从后往前移除n个元素
arr.trimEnd(1)
println(arr)
//遍历数组
for (i <- arr) {
print(i + " ")
}
//变长数组转成定长数组
arr.toArray
//定长数组转成变长数组
array.toBuffer
Scala快速入门 - 基础语法篇的更多相关文章
- Scala快速入门-基础
HelloWorld 从HelloWorld开始,使用scala IDE编辑器. 新建scala project 新建scala object 编写HelloWorld run as scala ap ...
- Java快速入门-01-基础篇
Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...
- Java快速入门-02-基础篇
Java快速入门-02-基础篇 上一篇应该已经让0基础的人对 Java 有了一些了解,接一篇更进一步 使用 Eclipse 快捷键 这个老师一般都经常提,但是自己不容易记住,慢慢熟练 快捷键 快捷键作 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- Scala快速入门到精通 视频教程 百度云网盘下载地址
Scala快速入门到精通 视频教程 百度云网盘下载地址 Scala快速入门到精通 下载地址链接:https://pan.baidu.com/s/1bqGIKyF 密码:ojwd
- Xamarin XAML语言教程基础语法篇大学霸
Xamarin XAML语言教程基础语法篇大学霸 前 言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...
- scala快速入门之文档注释
scala快速入门之文档注释 1.在项目栏的目录树中找到该源码,右击点击Show in Explorer, 即可找到该源码的本地路径,在路径中输入cmd 2.执行scaladoc -d 生成文档注释 ...
- Scala快速入门(四)——继承、接口
Scala快速入门(四)--继承.接口 一.继承 1.继承的概念:省略 2.模板: class Person(n:String,a:Int) { var name:String=n var age:I ...
- [PowerShell] 快速入门, 基本语法, 常用类型, 函数, .NET 互操作
PowerShell 快速入门 开始之前, 我们认定你已经有一定的编程基础, 熟悉 .NET 中的类型与对象. 此文章对于 .NET 开发者来说更简单哦! 在 PowerShell 中, 几乎一切都是 ...
随机推荐
- WebGL学习笔记(十三):拾取
目前为止,我们还没有涉及到交互相关的内容,实际上,我们是需要知道我们点击的地方下面的第一个物体的信息,这个过程称为拾取. 简单拾取实现 我们可以通过颜色来获取是否成功点击,具体方式如下: 场景中有一个 ...
- 小于K的两数之和
给你一个整数数组 A 和一个整数 K,请在该数组中找出两个元素,使它们的和小于 K但尽可能地接近 K,返回这两个元素的和. 如不存在这样的两个元素,请返回 -1. 示例1: 输入:A = [34,23 ...
- npx vs npm
npx vs npm npx 使用教程
- 【Spring Boot学习之二】WEB开发
环境 Java1.8 Spring Boot 1.3.2 一.静态资源访问 动静分离:动态服务和前台页面图片分开,静态资源可以使用CDN加速;Spring Boot默认提供静态资源目录位置需置于cla ...
- java修改文件所有者及其权限
1.设置所有者 管理文件所有者 Files.getOwner()和Files.setOwner()方法 要使用UserPrincipal来管理文件的所有者 (1)更改文件的所有者 import jav ...
- 【windows】win10局域网共享文件夹
1.打开 2.共享文件夹 另一台局域网电脑可根据共享的电脑ip访问就可以了[格式:\\ip] 如果右键文件夹没有共享选项
- nginx yaf需要注意的问题
nginx yaf需要注意的问题 显示视图的方法<pre> $this->getView()->assign(array('pack'=>$return['pack'], ...
- windows和linux环境下java调用C++代码-JNI技术
最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...
- vps建站施工预告
作为一个小白,最近几天自己用vps搭了个站点,用来发发博客,偶尔还可以去外面看看.后面几章就来记一下过程吧! 结构极为简单,建站用的WordPress,目前也就只有最基础的发文章功能.不过由于习惯了m ...
- 【LEETCODE】65、字符分类,medium&easy级别,题目:20、647、3
今天的字符类还比较简单 package y2019.Algorithm.str.easy; import java.util.HashMap; import java.util.Map; import ...