Scala语言初学

Posted LongRangerTing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala语言初学相关的知识,希望对你有一定的参考价值。

一. 软件配置

工具:IDEA

要先安装scala插件

注:scala程序反编译----- jd-gui.exe

1. file-->new project---- Maven

2. 新建scala文件夹  main---右键,new  directory

Scala语言初学

3. 将scala标记为 source root:scala,右键 Mark Directory as--->Sources Root

4. 默认情况下不能写scala程序,需要加入scala框架。

工程名scala_study 右键 Add Frameworks Support,选中scala

Scala语言初学

5. 选择创建scala的object


二. scala语言

1. windows安装scala ,添加环境变量(SCALA_HOME和Path),创建文本文件 Test.scala ,cmd编译

  # scalac Test.scala   //会产生出两个.class文件  Test.class 和Test$.class

  # scala Test             //运行scala程序

//object 关键字理解 相当于java的单例对象public class TestScala{   public static void main(String[] paramArrayOfString){    TestScala$.MODULE$.main(paramArrayOfString);   }}final class TestScala${    public static final TestScala$ MODULE$;    static{     MODULE$ = new TestScala$();    }    public void main(String[] args){        System.out.println("hello scala");    }}//对应的scala程序object Test{ def main(args:Array[String]):Unit={ println("hello world") }}

2. scala执行流程

1).scala文件---(scalac编译)---字节码文件---(scala运行)---结果

2).scala文件---(scala编译 运行)---结果

3. scala开发注意事项

1)区分大小写。

2)scala源文件以 .scala为扩展名

3)程序执行入口是main()函数

4)每条语句结束无需加分号;若同一行有多条语句 除了最后一条语句不需要加分号,其他语句需要加分号


3. 字符串输出的三种方式

1)字符串通过 + 号连接(类似于java)

2)printf用法 (类似于C语言)字符串通过 % 传值

3)字符串通过 $ 引用 (类似于php

val name = "Herry"val age = 20val url = "www.baidu.com"println("name = "+ name + "age = " + age + "url = " + url)printf("name=%s, age=%d, url=%s \n",name,age,url)println(s"name = $name, age = $age, url = $url");println(s"name = ${name}, age = ${age + 10}, url = ${url}");//可以运算   


4. scala 源码的查看和关联

1)查看源码,选择要查看的方法或类,输入 ctrl+b

2)关联源码:将源码包拷贝到scala的lib目录下,解压两次,然后关联


5. 文档注释

//在代码的路径下(show in explorer查看代码路径)cmd执行如下命令:scaladoc -d d:/software LookSource.scala   // 生成对应的文档说明

6. scala的类库(sdk):1)scala特有的库 2)对java的类进行包装

    java的类库(jdk):java设计者给程序员提供的类库


三. 变量

1. 数据类型

    Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit(相当于java中的void)

var score:Float = 70.9f  //小数默认是Double,整数默认是Int

2. 变量声明

1)格式:val/var 变量名[:变量类型] = 变量值  

注:变量类型可以不写(编译器自动推导)

var num =10 // num是Int类型println(num.isInstanceOf[Int])

2)类型确定后,就不能修改(举例:num被赋值为10后,不能再被赋值为10.3),说明scala是强数据类型语言。

3)在声明/定义变量时,可以使用var或val修饰,var修饰的变量可以改变,val修饰的变量不可改变。变量声明时需要初始值。

val修饰的变量在编译后,等同于加上final。val没有线程安全问题,因此效率高

var num = 10num = 30 //可行val age = 30age = 20 //编译出错

4)程序中 + 号的使用 

当左右两边都是数值型时,则做加法运算;当左右两边有一方是字符串,则做拼接运算。


3. scala数据类型介绍

1)scala与java有着相同的数据类型,在scala中数据类型都是对象,scala没有java中的原生类型。

2)scala中一切皆对象。scala数据类型分为两大类 AnyVal(值类型)和AnyRef(引用类型)。

Any类型相当于java中的object,是所有类的父类。

var num:Int = 10// 在scala中,若一个方法没有形参,则方法调用时可以省略()println(num.toDouble + "\t" + num.toString + "\t" + 100.toString)

3)Null类型是scala的特别类型,它只有一个值null,它是bottom class,是所有AnyRef类型的子类。

4)Nothing类型也是bottom class(底层类),它是所有类的子类,在开发中通常可以将Nothing类型的值返回给任意变量或函数。在抛出异常时使用很多。

object TestDemo { def main(args: Array[String]): Unit = {    println(sayHello) }  //Nothing做返回值,就是明确说明该方法没有正常返回值 def sayHello:Nothing = { throw new Exception("抛出异常") }}

5)scala中仍然遵守低精度值向高精度的值自动转换。

scala各整数类型有固定的表数范围和字段长度,不受OS的影响,以保证scala程序的可移植性。

scala的常量/字面量默认为Int型,声明Long型常量/字面量须加‘l’或‘L’

以上是关于Scala语言初学的主要内容,如果未能解决你的问题,请参考以下文章

Scala语言初学

scala初学

为什么Scala是可扩展的?

详解 Scala 模式匹配

电子书 Scala程序设计 第2版.pdf

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