1. Scala is a contraction of "scalable" and "language". It's a fusion of objected-oritended and functional programming.

2. Compare Book class between Java and Scala
Java:

class Book{
private String title;
private int numberOfPages; public Book(String title, int numberOfPages){
this.title = title;
this.numberOfPages = numberOfPages;
}
}

Scala:

class Book(title: String, numberOfPages : Int)

3. Scala does not include static members, primitive types, break and continue statements, enums, wildcards(通配符). Scala includes features such as type inference(类型推断) and extensible APIs.

4. Case classes don’t have code such as getter/setter, equals,hashCode,toString etc.

case class Book(var title: String, var numberOfPages: Int)

Example:

(1) Compile Book.scala: scalac Book.scala, this creates Book.class and Book$.class file.
(2) disassemble Book.class: javap Book, then illustrates the Java equivalent as follows:

public class Book implements scala.ScalaObject,scala.Product,scala.Serializable {
public static final scala.Function1<scala.Tuple2<java.lang.String, java.lang.Object>, Book> tupled();
public static final scala.Function1<java.lang.String, scala.Function1<java.lang.Object, Book>> curry();
public static final scala.Function1<java.lang.String, scala.Function1<java.lang.Object, Book>> curried();
public scala.collection.Iterator<java.lang.Object> productIterator();
public scala.collection.Iterator<java.lang.Object> productElements();
public java.lang.String title();
public void title_$eq(java.lang.String);
public int numberOfPages();
public Book copy(java.lang.String, int);
public int copy$default$2();
public java.lang.String copy$default$1();
public int hashCode();
public java.lang.String toString();
public boolean equals(java.lang.Object);
public java.lang.String productPrefix();
public int productArity();
public java.lang.Object productElement(int);
public boolean canEqual(java.lang.Object);
public Book(java.lang.String, int);
}

5. Everything in Scala is an object, including numbers. Thus,

 +  *  / x = ().+((().*())./(x))

6. Scala traits are similar with Java interfaces, the difference is that traits can include method implementations. Scala also does not support static members, instead a Scala class can provide a singleton object. A singleton object uses object keyword.

object HelloWorld{
def greet(){
println("Hello World!")
}
}

HelloWorld is a singleton object. Call the method like HelloWorld.greet()

7. In Scala, you can pass functions to methods and functions, and return them from methods and functions, as well as assign them to variables. Functions also are objects.

(i: Int) => {i * i}

It defines a function that takes an Int parameter and returns a value that is square of the provided Int.

Assign the function to a variable: val square = (i: Int) => { i * i }, square is an instance of a function
Example:

scala> val square = (i: Int) => {i*i}
square: Int => Int = <function1>
scala> square()
res3: Int =

8. Scala can call any Java code, subclass any Java class, and implement any Java interface. Scala code reuses Java libraries and Java types. Scala was designed for seamless interoperability(互通性) with Java and ultimately Scala programs compile to JVM bytecode.

9. Intsall Scala:
Add these lines to your $HOME/./bash_profile:
export SCALA_HOME=/Users/Al/scala
PATH=$PATH:/Users/A1/scala/bin
10. scala offers different ways to run programs:
(1) Interactive at a REPL command line.

scala> println("Hello World!")
Hello World!
scala> +
res1: Int =
scala> res1* # Any variables you created are available for the lifetime of your session
res3: Int =
scala> val x="Hello World" # Scala interpreter infers the value type for you
x: String = Hello World
scala> var x1=x.length
x1: Int =
scala> import java.util._ # java.util library in session we can use
import java.util._
scala> val d = new Date
d: java.util.Date = Fri Jun :: CST
scala> val str="1_2_3"
str: String = 1_2_3
scala> str.split("_")
res4: Array[String] = Array(, , )
scala> :help # help命令
scala> :paste # Multiline paste mode supports entering multiple lines of code to be compiled together, and external source code and libraries
// Entering paste mode (ctrl-D to finish) val v =
if(v==) println("true") else println("false") // Exiting paste mode, now interpreting. true
v: Int =
scala> :quit

(2) scala scripts

Type scala code into a text file and save it with an extension .scala.
println("Hello World!")
scala Hello.scala
Hello World
(3) Compiling Scala Programs

> scalac File1.scala File2.scala # compile Scala source files into class files
> fsc File1.scala File2.scala # use fast scala compiler, which is very useful smaller projects.

SBT is an open source build tool for Scala and Java projects, which provides native support for compiling Scala code and integrating with many Scala test frameworks and dependency management, continuous compilation, testing, and deployment.

11. Scala programs
(1) HelloWorld. Remark: A semicolon at the end of a statement is usually optional.

object HelloWorld{
def main(args: Array[String]){
println("Hello World!")
}
}

main method is defined in an object, not in class. Actually return type is Unit, which is similar to void.

Specify the return type:

def main(args :Array[String]) : Unit = { } # def: tell comppiler that this is a method 

(2) Print1.scala

scala> for{i <- to } print(i+" ")

scala> for{i<- to
| j <- to } print(i*j+" ")

Beginning Scala study note(1) Geting Started with Scala的更多相关文章

  1. Beginning Scala study note(3) Object Orientation in Scala

    1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). examp ...

  2. Beginning Scala study note(4) Functional Programming in Scala

    1. Functional programming treats computation as the evaluation of mathematical and avoids state and ...

  3. Beginning Scala study note(9) Scala and Java Interoperability

    1. Translating Java Classes to Scala Classes Example 1: # a class declaration in Java public class B ...

  4. Beginning Scala study note(2) Basics of Scala

    1. Variables (1) Three ways to define variables: 1) val refers to define an immutable variable; scal ...

  5. Beginning Scala study note(8) Scala Type System

    1. Unified Type System Scala has a unified type system, enclosed by the type Any at the top of the h ...

  6. Beginning Scala study note(6) Scala Collections

    Scala's object-oriented collections support mutable and immutable type hierarchies. Also support fun ...

  7. Beginning Scala study note(5) Pattern Matching

    The basic functional cornerstones of Scala: immutable data types, passing of functions as parameters ...

  8. Beginning Scala study note(7) Trait

    A trait provides code reusability in Scala by encapsulating method and state and then offing possibi ...

  9. Scala 深入浅出实战经典 第49课 Scala中Variance代码实战(协变)

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

随机推荐

  1. 10个最常见的 HTML5 面试题及答案

    这是选择了10个 HTML5 面试问题并给出了答案.这是 Web 开发人员最常见的面试问题,相信你掌握了这些重要的面试问题后一定会觉得你的理解提高了.一起来看看吧. 您可能感兴趣的相关文章 Web 前 ...

  2. Excel—利用散点图计算相关系数

    1.建立数组 2.创建散点图. 3.添加趋势线. 4.设立为线性函数,勾选显示公式.显示R^2值,R即为相关系数. 5. 备注:此外也可以使用=CORREL()函数对相关系数进行求值.其结果是一致的.

  3. (转载)GDI+双缓冲

    双缓冲在GDI+里可以有效的提高描画效率.改善显示的质量. 下面的代码是一个最简单的双缓冲的模板.可以根据需要,做简单的修改即可. Bitmap CacheImage( [Width], [Heigh ...

  4. Be careful about the upper limit of integer

    在面对整数时,要留心整数溢出的情况. 在探索一个数有多少个除数的程序中,原本我们只要累加自然数到大于根号N停止即可. 不过因为计算机的整数范围的限制,我们需要判断是否i*i<(i-1)*(i-1 ...

  5. 基于SSH框架的网上商城的质量属性

    常见质量属性 1.性能 性能就是一个东西有多快,通常指响应时间或延迟. 响应时间:从发出请求到收到响应所用的时间,比如用户点击网页中的超链接或桌面应用程序中的按钮 延迟:消息从A点到B点,通过你的系统 ...

  6. Visual Studio 默认保存为UTF8编码

    Visual Studio (中文版)默认保存的文本文件是GB2312编码(代码页936)的,默认的行尾(End of line)是CRLF的. 如果仅仅是在windows下开发问题也不大,但是涉及到 ...

  7. httpie 取代 curl

    接口测试有人喜欢postman(for windows or mac) 如果长期用linux工作,可能更喜欢命令的方式,比如curl最近深入了解了下django-rest-framwork,他们推荐了 ...

  8. The note of Vue.js

    In computed field, increment operator is not supported.

  9. ReWriteDateControll

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. JSP复习整理(二)基本语法

    最基础的整理.. 一.语句声明 <%@ page language="java" contentType="text/html; charset=UTF-8&quo ...