环境搭建

创建一个新项目,选择maven工程

点击next,写入项目名,然后finish

注意:默认下,maven不支持scala的开发,需要引入scala框架,右键项目点击-》add framework

pport....,在下图选择Scala

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

创建项目的源文件目录

步骤:右键main目录创建一个diretory,写个名字比如scala,右键scala目录,mark diretory,选择source root即可

在scala包下,创建包com.某某某.scala-1包名,并创建Object

编写输出Hello scala案例

scala程序基本架构

class scala_one {

  定义变量:

  val/var 变量名:变量类型 = 变量值

  val a: Int = 1

  定义方法:

  def 函数名(参数名:参数类型):返回值类型={方法体}

  def hello(arg: String): Unit = {

    println(arg)

  }

}


object scala_one {

  Scala程序的入口

  def main(args: Array[String]): Unit = {

    println("hello,scala") }

  完全面向对象:scala完全面向对象,故scala去掉了java中非面向对象的元素,如static关键字,void类型

  1.static

  scala无static关键字,由object实现类似静态方法的功能(类名.方法名),object关键字和class的关键字定义方式相同,但作用不同。class关键字和java中的class关键字作用相同,用来定义一个类;object的作用是声明一个单例对象,object后的“类名”可以理解为该单例对象的变量名。

  2.void

  对于无返回值的函数,scala定义其返回值类型为Unit类

}

Scala程序反编译

object在底层会生成两个类 scala_one, scala_one$

scala_one中有个main函数,调用 scala_one$ 类的一个静态对象 MODULES$

scala_one$.MODULE$. 对象时静态的,通过该对象调用Hello$的main函数

可以理解我们在main中写的代码在放在scala_one$的main,在底层执行Scala编译器做了一个包装

下面我们说明一下Scala程序的执行流程:

scala_one源码

objscala_one {

def main(args: Array[String]): Unit = {

  //4. 可以理解我们在main中写的代码在放在Hello$的main,在底层执行scala编译器做了一个包装

 println("hello,scala") }}

scala_one.class类

//1. object在底层会生成两个类 Hello , Hello$

//2. Hello中有个main函数,调用 Hello$ 类的一个静态对象 MODULES$

public final class scala_one{

    public static void main(String[] paramArrayOfString) {

    scala_one$.MODULE$.main(paramArrayOfString); }}

scala_one$.class

public final class scala_one${

    public static final  MODULE$;

static { new ();  }

public void main(String[] args) {

  //3. scala_one$.MODULE$. 对象是静态的,通过该对象调用scala_one$的main函数

       Predef..MODULE$.println("hello,scala");}

    private scala_one$(){

       MODULE$ = this;}}

解释:

scala中如果使用object关键字声明类,在编译时,会同时产生两个类:当前类和当前类$。

使用当前类$的目的在于模拟静态语法,可以通过类名直接访问方法。

scala将当前类$这个对象称之为伴生对象,伴随着类所产生的对象,这个对象中的方法可以直接使用。

开发注意事项:

Scala源文件以“.scala" 为扩展名。

Scala程序的执行入口是object main()函数。

Scala语言严格区分大小写。

Scala方法由一条条语句构成,每个语句后不需要分号,

Scala语言会在每行后自动加分号)。(至简原则)

如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。

官方编程指南

        查看scala-docs-2.11.8文档,可以获得Scala的API操作

        

变量和数据类型

用于注解说明解释程序的文字就是注释,注释提高了代码的阅读性。

注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。

1)基本语法

(1)单行注释://

(2)多行注释:/* */

(3)文档注释:/**

*

    */

代码规范

使用一次tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移。

或者使用ctrl + alt + L来进行格式化。

运算符两边习惯性各加一个空格。比如:2 + 4 * 5。

一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。

标识符的命名规范

Scala对各种变量方法函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。

命名规则

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下四种规则:

以字母或者下划线开头,后接字母、数字、下划线

以操作符开头,且只包含操作符(+ - * / # !等)

第一种和第二种拼接,第一种在前,二者以下划线分隔

用反引号`....`包括的任意字符串,即使是关键字(39个)也可以

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

变量

        基本语法

var | val 变量名 [: 变量类型] = 变量值

说明:在Scala中声明一个变量时,可以不指定类型,编译器根据值确定

        案例实操

声明变量时,类型可以省略(编译器自动推导,即类型推导)

      类型确定后,就不能修改,说明Scala是强数据类型语言。

变量声明时,需要初始值。

在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改

val修饰的变量在编译后,等同于加上final通过反编译看下底层代码

通过反编译软件,得到对应的底层的.class是

public final class TestVar${

    public static final MODULE$;

    private int num1;

    private final int num2;

var修饰的对象引用可以改变,val修饰的则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

字符串输出

基本语法

字符串,通过+号连接。

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

字符串,通过$引用。

案列实操

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐