大数据“火”的有段日子了,原来打算学习hadoop…… 后知道spark要比hadoop更牛, 故而转学spark。其原码为scala所写,为了更好的研究spark,故又开始学习scala.

将自己所学记录在此,不为点赞, 只为加深记忆,加深理解…不是都说写一遍等于读十遍嘛……

1、基本类型:

  

  Byte  8位有符号补码整数

  Short  16位有符号补码整数

  Int  32位有符号补码整数

  Long  64位有符号补码整数

  Char  16位无符号Unicode字符

  String  char序列

  Float  32位IEEE754单精度浮点数

  Double  64位IEEE754双精度浮点数

  Boolean  true or false

 

  如果熟悉Java,你后发现java的基本类型在scala中有同样的意思, 不同的是scala是首字母大写,这是由于scala 高度重用java类型的缘故(隐式转换)

2、变量定义:

  scala 有两种变量:val 及 var。

  val 类似与java中的final ,一旦初始化,就不能再被赋值。

  var 则类似java中的非final变量,在它的生命周期中可以被多次赋值。

  

  在java中,各种类型是固定的,  int型是int型, String 是 String, 是什么类型就是什么类型,除非显示转换。

  而Scala 中在定义变量时可以之用val 及 var ,因为其有类型推断的能力。

  如: val msg = "123", 则Scala解释器自动推断类型为String;

    val msg = 123 则为Int;

  

  另外Scala中写明类型标注,这样可以确保编译器使用自己想要的类型, 其与java中不同之处在于 Scala的变量类型写在其名称之后,中间用冒号分隔,如:

    val msg :java.lang.String = "123";

    也可以写成

    val msg : String = "123";

3、函数定义:

  Scala中函数定义用 def 关键字,然后是函数名称。如:

  def max(x : Int, y : Int) : Int = {

    if(x>y)

      x;

    else

      y;

  }

  

  上列中:max为函数名, x,y为参数,类型为Int型, 最后一个Int标识函数返回值类型,{}中部分为方法体;

  Scala与java一个 重要的区别是返回值, 在java中必须显式的用return 关键字,但在Scala中可以用显示的用return标识返回类型, 也可省略,这时最后执行的一行就为返回值。 Scala中返回值类型可以不加编译器可以自动推断它,但递归函数必须加。

  java中函数没有返回值时用void ,scala中则为Unit。

4、数组(Array)

  

  scala中数组定义如下:

    val greetStrings = new Array[String](5);

    此句表达式定义了一个 名为greetStrings,类型为String,初始长度为5的数组;

  与java不同的是在使用数组中元素时 scale用圆括号,java用方括号。如:

    Java:  greetString[0] = “hello”;  

    Scala: greetString(0) = “hello”;

5、控制结构:

  1) if表达式

    scala 与其它语言的不同之外在于 scala的if 是可以有返回值的。如:

    val res =

       if(!args.isEmpty)  args(0);

       else "default";

    其它用法同其它语言一样

  2) while表达式:

    与其它语言基本相同。

  3) for 表达式:

    用法如下

    for(arg <- args) {

      Println(arg);

    }

  4) foreach

    args.foreach(arg => println(arg));   由于此时没写明arg的类型, 由解释器自动推断

    亦可明确元素类型,如:

      args.foreach((arg : String) => println(arg));

  今天就先进行到这里了, 明天继续…

scala 入门(1)的更多相关文章

  1. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

  2. Scala入门 【1】

    Scala入门 [1] 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 基础 val定义的为常量,var为变量 val name:Type = ***,变量名后加冒号 ...

  3. Scala入门(1)Linux下Scala(2.12.1)安装

    Scala入门(1)Linux下Scala(2.12.1)安装 一.文件准备 1.1 文件名称 scala-2.12.1.tgz 1.2 下载地址 http://www.scala-lang.org/ ...

  4. scala 入门Eclipse环境搭建

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...

  5. Scala 入门详解

    Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...

  6. idea创建Scala入门HelloWorld

    Scala开发环境的搭建 首先到Scala官网下载Scala网址为 https://www.scala-lang.org/download/ 找到下图所示位置:选择相对应的版本的Scala进行下载,这 ...

  7. IntelliJ中的Scala入门

    IntelliJ IDE中的Scala入门 创建项目 打开IntelliJ并单击File => New => Project 在左侧面板中,选择Scala.在右侧面板中,选择IDEA. 将 ...

  8. Scala入门到精通

    原文出自于: http://my.csdn.net/lovehuangjiaju 感谢! 也感谢,http://m.blog.csdn.net/article/details?id=52233484 ...

  9. scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  10. Scala入门之函数

    /** * 函数可以被简单的被认为是包裹了一条或者几条语句的代码体,该代码体接收若干参数,经过代码体处理后返回结果,形如数学中的f(x) = x + 1 * 在Scala中函数式一等公民,可以向变量一 ...

随机推荐

  1. Oracle12c中新建用户

    运行SQLPlus,以  sysdba打开 新建用户需要 create user C##[username] identified by [password] grant dba to C##[use ...

  2. 【转】 Spinner的常用技巧

    原文网址:http://blog.csdn.net/wanli_smile/article/details/6410388 用法 1 :以资源方式,静态展示 Spinner 选项 1.     在资源 ...

  3. bzoj2821作诗

    http://www.lydsy.com/JudgeOnline/problem.php?id=2821 分块 我们把数列分成$\sqrt{N}$块 记$f[i][j]$表示第i块到第j块的答案,这个 ...

  4. led驱动程序设计

    LED的驱动程序很简单,按照张字符型设备驱动设计方法顺下来即可实现,这里主要讲几个注意事项. 一.在linux系统中,操作硬件不能够使用物理地址,一定要用虚拟地址.将物理地址转化为虚拟地址的函数如下: ...

  5. Java 截取反斜杠--java使用split拆分特殊字符

    Java 截取反斜杠 replaceAll和split (“\”) 问题解决办法 xxx.split("\\") 显然得不到想要的结果 正确方法 xxx.split("\ ...

  6. openwrt time sycronize

    三行命令搞定这个. opkg update opkg install ntpclient ntpclient -s -c 0 -h ntp.sjtu.edu.cn 最后把这个 放到 rc.local ...

  7. php 多维数组如何用foreach遍历修改其中的一个值

    数组: array(6) { [0]=> array(11) { ["id"]=> string(2) "76" ["topic_id&q ...

  8. django: template - built-in tags

    本节介绍模板中的内置标签:if for 承上文,修改 views.py 如下: from django.shortcuts import render_to_response class Person ...

  9. 如何学习javascript?(转)

    推荐几本好书: Step 1: <JavaScript DOM编程艺术> 看这本书之前,请先确认您对Javascript有个基本的了解,应该知道if else之类的语法,如果不懂,先去看看 ...

  10. Linux 系统库函数coreleft 与sbrk简介

    coreleft   函数名: coreleft 功 能: 返回未使用内存的大小 用 法: unsigned coreleft(void); 程序例: #include <stdio.h> ...