摘要:在Scala 是 Scalable Language 的简写,是一门多范式(multi-paradigm)的编程语言。设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

1.Scala 特性

面向对象特性、函数式编程、静态类型、扩展性、并发性

2.Scala Web 框架

目前比较流行的 Scala 的 Web应用框架:Lift 框架、Play 框架

3.Scala 安装

Scala 语言可以运行在Window、Linux、Unix、 Mac OS X等系统上。
Scala是基于java之上,大量使用java的类库和变量,必须使用Scala之前必须先安装 Java
从Scala下载安装包后配置环境变量后cmd中输入scala可以看到scala版本信息。

4.Scala基础语法

区分大小写-
类名 - 对于所有的类名的第一个字母要大写
方法名称 - 所有的方法名称的第一个字母用小写
程序文件名 - 程序文件的名称应该与对象名称完全匹配
def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分。
换行符 - Scala语句末尾的分号是可选的。如果一行里写多个语句那么分号是需要的。

5.Scala包

定义包:
Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式:
第一种方法和 Java 一样,在文件的头定义包名,这种方法就后续所有代码都放在该包中。 比如:

package mytest
class HelloWorld

第二种方法有些类似 C#,如:

package mytest {
class HelloWorld
}

第二种方法,可以在一个文件中定义多个包。
引用:
Scala 使用 import 关键字引用包。

6.Scala变量

在Scala中,使用关键词 "var" 声明变量,使用关键词 "val" 声明常量。

val msg="hello world"

这个表达式定义了一个类型为string的msg字符串常量。这里并不需要定义其类型,Scala 可以根据赋值的内容推算出变量的类型。这在 Scala 语言中成为“ type inference ”。也可以明确指定变量的类型如:

val msg:String="hello"

在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。
所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错:

var myVar = 10;
val myVal = "Hello, Scala!";

以上实例中,myVar 会被推断为 Int 类型,myVal 会被推断为 String 类型。

7.Scala 访问修饰符

Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public。
(1)私有(Private)成员
用private关键字修饰,带有此标记的成员仅在包含了成员定义的类或对象内部可见,同样的规则还适用内部类。

class Outer{
class Inner{
private def f(){println("f")}
class InnerMost{
f() // 正确
}
}
(new Inner).f() //错误
}

(2)保护(Protected)成员

在 scala 中,对保护(Protected)成员的访问比 java 更严格一些。因为它只允许保护成员在定义了该成员的类的子类中被访问。

package p{
class Super{
protected def f() {println("f")}
}
class Sub extends Super{
f()
}
class Other{
(new Super).f() //错误
}
}

(3)公共(Public)成员

Scala中,如果没有指定任何的修饰符,则默认为 public。这样的成员在任何地方都可以被访问。

class Outer {
class Inner {
def f() { println("f") }
class InnerMost {
f() // 正确
}
}
(new Inner).f() // 正确因为 f() 是 public
}

8.Scala 运算符

(1)算术运算符
+ 加号
- 减号
* 乘号
/ 除号
% 取余

(2)关系运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
(3)逻辑运算符
&& 逻辑与
|| 逻辑或
! 逻辑非
(4)赋值运算符
= 简单的赋值运算,指定右边操作数赋值给左边的操作数。
+= 相加后再赋值,将左右两边的操作数相加后再赋值给左边的操作数。
-= 相减后再赋值,将左右两边的操作数相减后再赋值给左边的操作数。
*= 相乘后再赋值,将左右两边的操作数相乘后再赋值给左边的操作数。
/= 相除后再赋值,将左右两边的操作数相除后再赋值给左边的操作数。
%= 求余后再赋值,将左右两边的操作数求余后再赋值给左边的操作数。
<<= 按位左移后再赋值 C <<= 2 相当于 C = C << 2
>>= 按位右移后再赋值 C >>= 2 相当于 C = C >> 2
&= 按位与运算后赋值 C &= 2 相当于 C = C & 2
^= 按位异或运算符后再赋值 C ^= 2 相当于 C = C ^ 2
|= 按位或运算后再赋值 C |= 2 相当于 C = C | 2

9.if...else语句

if(布尔表达式 1){
// 如果布尔表达式 1 为 true 则执行该语句块
}else if(布尔表达式 2){
// 如果布尔表达式 2 为 true 则执行该语句块
}else if(布尔表达式 3){
// 如果布尔表达式 3 为 true 则执行该语句块
}else {
// 如果以上条件都为 false 执行该语句块
}

10.循环

while:

while(condition)
{
statement(s);
}

do...while:

do {
statement(s);
} while( condition );

for:

for( var x <- Range ){
statement(s);
}

break 语句:

Scala 语言中默认是没有 break 语句,但是在 Scala 2.8 版本后可以使用另外一种方式来实现 break 语句。

// 导入以下包
import scala.util.control._
// 创建 Breaks 对象
val loop = new Breaks;
// 在 breakable 中循环
loop.breakable{
// 循环
for(...){
....
// 循环中断
loop.break;
}
}

11.函数

我们可以在任何地方定义函数,甚至可以在函数内定义函数(内嵌函数)。Scala 函数名可以有以下特殊字符:+, ++, ~, &,-, -- , \, /, : 等。
Scala 函数定义格式如下:

def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}

如果函数没有返回值,可以返回为 Unit,这个类似于 Java 的 void, 实例如下:

object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}

12.闭包

Scala基础知识[一]的更多相关文章

  1. scala 基础知识总结

    在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...

  2. SCALA基础知识学习

    注:本文只说和Java不同的地方. 总结自: Scala详细教程 Scala教程 scala基础语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ";" 是 ...

  3. Scala基础知识笔记1

    上一篇文章介绍了如何下载scala, 因为在官网上点击下载按钮无法下载, 下面介绍scala的基础语法: 1 scala和java的关系 Scala是基于jvm的一门编程语言,Scala的代码最终会经 ...

  4. (数据科学学习手札45)Scala基础知识

    一.简介 由于Spark主要是由Scala编写的,虽然Python和R也各自有对Spark的支撑包,但支持程度远不及Scala,所以要想更好的学习Spark,就必须熟练掌握Scala编程语言,Scal ...

  5. [Scala] Scala基础知识

    Object An object is a type of class that can have no more than one instance, known in object-oriente ...

  6. 为Play初学者准备的Scala基础知识

    1 前言 本文的主要目的是为了让Play Framework的初学者快速了解Scala语言,算是一篇Play Framework的入门前传吧.使用PlayFramework可以极大的提高开发效率,但是 ...

  7. 【转】Scala基础知识

    原文地址.续 课程内容: 关于这节课 表达式 值 函数 类 继承 特质 类型 apply方法 单例对象 函数即对象 包 模式匹配 样本类 try-catch-finally 关于这节课 最初的几个星期 ...

  8. Scala基础知识笔记2

    1 类 1.1 定义一个简单的类 1.2 field的getter 和 setter方法 感觉成员变量定义成  var 属性名=属性值即可,  不需要定义成 val 或者 private就行, // ...

  9. Scala基础知识(二)

    1.条件表达式 object ConditionDemo { def main(args: Array[String]) { val x = //判断x的值,将结果赋给y val y = ) //打印 ...

随机推荐

  1. Sql 行转换为列 以及列转换为行的心得

    这是 创建数据库的脚本文件 CREATE TABLE [dbo].[stu]( [学号] [nvarchar](255) NOT NULL, [姓名] [nvarchar](255) NULL, [性 ...

  2. Android程序初体验

    第一个程序的实现的最终功能是: 点击"正确"或者"错误"会得到一个是否正确的提示. 直接上效果图.     此次涉及代码编写的文件有4个: package co ...

  3. 51nod 1526 分配笔名

    题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题. 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一 ...

  4. 遍历PspCidTable枚举进程

    //测试环境:win7 32位 1 // DriverEntry.cpp #include "ntddk.h" #include <ntddvol.h> #includ ...

  5. spring框架的总结

    http://www.cnblogs.com/wangzn/p/6138062.html 大家好,相信Java高级工程师对spring框架都很了解吧!那么我以个人的观点总结一下spring,希望大家有 ...

  6. 安装linux虚拟机(Ubuntu & KALI)

    VMware workstation 15.0.0 ubuntu-18.10-desktop 首先安装VMware 参考资料很多,不再赘述. 之后参考 https://www.cnblogs.com/ ...

  7. 第二次团队作业-PANTHER考勤系统需求分析

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...

  8. 快学UiAutomator配置编辑环境

    Java环境配置 1.下载jdk1.6+包 2.安装jdk,默认安装即可 3.成功安装之后,进行测试是否真的成功安装,点击[开始]----[运行]----输入 CMD,在命令提示符里面输入“Java ...

  9. (1)JSTL的13个core标签库

     标准标签库JSTL的全名为:Java Server Pages Standard Tag Library. (jsp  standard tag library) JSTL主要提供了5大类标签库: ...

  10. 响应式Web设计- 背景图片

    背景图片可以响应式调整大小或缩放,以下是三种不同的方式 1.如果 background-size 属性设置为 "contain", 背景图片将按比例自适应内容区域.图片保持其比例不 ...