大数据“火”的有段日子了,原来打算学习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. 网络编程中几个地址结构与转换(in_addr,sockaddr,sockaddr_in,pcap_addr)

    man socket可以查看相关信息. socket头文件: #include <sys/types.h> /* See NOTES */ #include <sys/socket. ...

  2. Java---设计模块(装饰模式)

    ★ 场景和问题 在不对原有对象类进行修改的基础上,如何给一个或多个已有的类对象提供增强额外的功能? ★ 引例 写一个MyBufferedReader类,使它能够对字符流(如FileReader.Inp ...

  3. C# 同步/并发队列ConcurrentQueue (表示线程安全的先进先出 (FIFO) 集合)

    http://msdn.microsoft.com/zh-cn/library/dd267265(v=vs.110).aspx static void Main(string[] args) { // ...

  4. cpppp

  5. 深入理解linux网络技术内幕读书笔记(十)--帧的接收

    Table of Contents 1 概述 1.1 帧接收的中断处理 2 设备的开启与关闭 3 队列 4 通知内核帧已接收:NAPI和netif_rx 4.1 NAPI简介 4.1.1 NAPI优点 ...

  6. Spark-用户应用程序入门

    /* 2 Spark Standalone模式下的Application Application是Spark中类似于Hadoop的Job的用户提交的应用.sc是Spark集群初始化时创建的SparkC ...

  7. JS(二)

    对象里面的属性和方法比较多啊,不容易记住,需要多实践: 1.将一串字符串的顺序颠倒,并实现首尾字母大写的两种方法: <!DOCTYPE html> <html lang=" ...

  8. protobuf2.5 iphone5s中崩溃的问题

    我们的游戏用到了protobuf2.5,在其他版本中都是好的,但iphone5s中崩溃,表现为针对DescriptorPool为空了.网上也找不到什么信息,xiaozhong同学各种尝试,都没有搞定, ...

  9. c#序列化反序列化工具(json,binary,xml)

    using System; using System.Text; using System.IO; using System.Runtime.Serialization.Formatters.Bina ...

  10. 再探java基础——对面向对象的理解(1)

    对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...