scala-idea环境搭建及使用

环境搭建

创建一个新项目,选择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程序的执行入口是 o bject 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用法:字符串,通过%传值。

字符串,通过$引用。

案列实操

相关推荐
Java探秘者1 天前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
鸿乃江边鸟2 天前
Spark SQL中怎么注册python以及使用python注册的UDF中数据流是怎么流转的
python·sql·spark
顧棟2 天前
【Spark 实战】基于spark3.4.2+iceberg1.6.1搭建本地调试环境
大数据·分布式·spark
cooldream20093 天前
IDEA 使用技巧与插件推荐
ide·idea
B站计算机毕业设计超人3 天前
计算机毕业设计Python+Spark知识图谱酒店推荐系统 酒店价格预测系统 酒店可视化 酒店爬虫 酒店大数据 neo4j知识图谱 深度学习 机器学习
大数据·数据仓库·hadoop·机器学习·spark·数据可视化·推荐算法
小狗爱世界3 天前
设置Android studio或者IEDA自动导包
idea·android-studio
解孔明4 天前
idea远程连接docker
idea
冬至喵喵4 天前
SPARK调优:AQE特性(含脑图总结)
大数据·ajax·spark
TuringSnowy4 天前
PySpark把一列数据上下移动,时序数据
笔记·python·spark·pandas