1. Scala数据类型
(1)Byte:8位有符号补码整数。数值区间为-128到127。
(2)Short:16位有符号补码整数。数值区间为-32768到32767。
(3)Int:32位有符号补码整数。数值区间为-2147483648到2147483647。
(4)Long:64位有符号补码整数。数值区间为-9223372036854775808到9223372036854775807。
(5)Float:32位IEEE754单精度浮点数。
(6)Double:64位IEEE754单精度浮点数。
(7)Char:16位无符号Unicode字符,区间值为U+0000到U+FFFF。
(8)String:字符序列。
(9)Boolean:true或false。
(10)Unit:表示无值,和其它语言void等同。用作不返回任何结果方法的结果类型。Unit只有一个实例值,写成()。
(11)Null:null或空引用。
(12)Nothing:Nothing类型在Scala的类层级的最低端,它是任何其它类型的子类型。
(13)Any:Any是所有其它类的超类。
(14)AnyRef:AnyRef类是Scala里所有引用类(reference class)的基。
2. Scala访问修饰符
Scala访问修饰符包括:private,protected,public,如下所示:
(1)private
在Java中允许外部类访问内部类的私有成员,但是在Scala中是不允许外部类访问内部类的私有成员的。
(2)protected
在Java中允许类的子类,以及同一包中的类访问保护成员,但是在Scala中仅允许类的子类访问保护成员。
(3)public
如果没有指定任何的修饰符,那么Scala默认为public。
(4)作用域保护
private[x]表示"这个成员除了对[…]中的类或[…]中的包中的类及它们的伴生对像可见外,对其它所有类都是private。
需要说明的是x可以指代某个所属的包、类或单例对象。
说明:Scala运算符包括算术运算符,关系运算符,逻辑运算符,位运算符,赋值运算符等。
3. Java数据结构
解析:
(1)枚举(Enumeration):枚举(Enumeration)接口本身不属于数据结构,但它定义了一种从数据结构中取回连
续元素的方式。
(2)位集合(BitSet):一个Bitset类创建一种特殊类型的数组来保存位值。BitSet中数组大小会随需要增加。
(3)向量(Vector):该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的
增长长度,默认扩容方式为原来的2倍。
(4)栈(Stack):栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
(5)字典(Dictionary):Dictionary类是一个抽象类,用来存储键/值对,作用和Map类相似。
(6)哈希表(Hashtable):Hashtable是Dictionary(字典)类的子类,位于java.util包中。
(7)属性(Properties):Properties继承于Hashtable,表示一个持久的属性集,属性列表中每个键及其对应值都是
一个字符串。
4. Java多线程
解析:
(1)采用实现Runnable、Callable接口的方式创见多线程时,线程类只是实现了Runnable接口或Callable接口,还可
以继承其它类。
(2)使用继承Thread类的方式创建多线程时,编写简单,如果需要访问当前线程,则无需使用
Thread.currentThread()方法,直接使用this即可获得当前线程。
5. javadoc标签
解析:
(1)@author:标识一个类的作者:@author description
(2)@deprecated:指名一个过期的类或成员:@deprecated description
(3){@docRoot}:指明当前文档根目录的路径:Directory Path
(4)@exception:标志一个类抛出的异常:@exception exception-name explanation
(5){@inheritDoc}:从直接父类继承的注释:Inherits a comment from the immediate surperclass.
(6){@link}:插入一个到另一个主题的链接:{@link name text}
(7){@linkplain}:插入一个到另一个主题链接,但该链接显示纯文本字体:Inserts an in-line link to another topic.
(8)@param:说明一个方法的参数:@param parameter-name explanation
(9)@return:说明返回值类型:@return explanation
(10)@see:指定一个到另一个主题的链接:@see anchor
(11)@serial:说明一个序列化属性:@serial description
(12)@serialData:说明通过writeObject()和writeExternal()方法写的数据:@serialData description
(13)@serialField:说明一个ObjectStreamField组件:@serialField name type description
(14)@since:标记当引入一个特定的变化时:@since release
(15)@throws:和@exception标签一样:The @throws tag has the same meaning as the @exception tag.
(16){@value}:显示常量值,该常量须static属性:Displays the value of a constant, which must be a static field.
(17)@version:指定类的版本:@version info
6. import java.util.{HashMap => _, _}
解析:引入了util包的所有成员,但是HashMap被隐藏了。
说明:默认情况下,Scala总会引入java.lang._ 、scala._和Predef._。
7. Scala Collection
解析:
(1)Scala List(列表):List的特征是其元素以线性方式存储,集合中可以存放重复对象。
(2)Scala Set(集合):Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。
(3)Scala Map(映射):Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。
(4)Scala 元组:元组是不同类型的值的集合。
(5)Scala Option:Option[T]表示有可能包含值的容器,也可能不包含值。
(6)Scala Iterator(迭代器):迭代器不是一个容器,更确切的说是逐一访问容器内元素的方法。
8. ScalaNLP,Breeze,Epic,Puck
解析:
(1)ScalaNLP:a suite of machine learning and numerical computing libraries.
(2)Breeze:a set of libraries for machine learning and numerical computing.
(3)Epic:a high-performance statistical parser and structured prediction library.
(4)Puck:an insanely fast GPU-powered parser, built on the same grammars produced by Berkeley Parser.
9. Breeze
解析:
(1)breeze-math: Numerics and Linear Algebra. Fast linear algebra backed by native libraries (via JBlas) where
appropriate.
(2)breeze-process: Tools for tokenizing, processing, and massaging data, especially textual data. Includes
stemmers, tokenizers, and stop word filtering, among other features.
(3)breeze-learn: Optimization and Machine Learning. Contains state-of-the-art routines for convex optimization,
sampling distributions, several classifiers, and DSLs for Linear Programming and Belief Propagation.
(4)breeze-viz: (Very alpha) Basic support for plotting, using JFreeChart.
10. Fernflower
解析:一个对Java程序进行反编译分析的利器。
11. 面向对象行为特征
解析:
(1)继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的
属性和方法;
(2)封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能;
(3)多态指的是子类对象可以直接赋给父类变量,但运行时依然表现出子类的行为特征,这意味着同一个类型的对
象在运行时可能表现出不同的行为特征。
12. UML图
解析:UML图大致可分为静态图和动态图两种,UML 2.0包括13种图,如下所示:
(1)静态图
用例图(use case diagram),类图(class diagram)、包图(package diagram)、组件图(component
diagram)、对象图(object diagram)、部署图(deployment diagram)、复合结构图(composite structure
diagram)。
(2)动态图
活动图(activity diagram)、通信图(communication diagram)、、交互概观图(interactive overview diagram)、
顺序图(sequence diagram)、状态机图(state machine diagram)、定时图(timing diagram)。
说明:常用的UML图包括用例图,类图,组件图,部署图,顺序图,活动图和状态机图。
13. 用例图 [2]
解析:用例图指由参与者(Actor)、用例(Use Case),边界以及它们之间关系构成的用于描述系统功能的视图。
14. 类图
解析:类图使用包含三个部分的矩形来描述,最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包
含类的方法。类之间有三种基本关系,即关联(聚合和组合),泛化(继承)和依赖。
说明:聚合使用带空心菱形框的实线表示,组合使用带实心菱形框的实线表示。泛化使用带空心箭头的实线表示。依
赖使用带箭头的虚线表示。
15. 组件图
解析:组件图提供系统的物理视图,它的用途是显示系统中的软件对其它软件组件(比如,库函数)的依赖关系。组
件图可以在一个非常高的层次上显示,从而仅显示粗粒度的组件,也可以在组件包层次上显示。
16. 部署图
解析:部署图是用来显示系统中软件和硬件的物理架构。从部署图中,可以了解到软件和硬件组件之间的物理关系以
及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的
配置和部署方式。
17. 顺序图
解析:顺序图显示具体用例的详细流程,并且显示了流程中不同对象之间的调用关系,同时还很详细地显示对不同对
象的不同调用。顺序图描述了对象之间的交互,重点在于描述消息及其时间顺序。
18. 活动图
解析:描述用例内部的活动或方法的流程,如果出去活动图中的并行活动描述后,它就变成流程图。
19. 状态机图
解析:描述某一对象生命周期中需要关注的不同状态,并会详细描述刺激对象状态改变的事件,以及对象状态改变时
所采取的动作。
20. Java位运算符
解析:
(1)&:按位与。
(2)|:按位或。
(3)^:按位非。
(4)<<:左位移运算符。
(5)>>:右位移运算符。
(6)>>>:无符号右移运算符。
21. Java逻辑运算符
解析:
(1)&&:与,必须前后两个操作数都是true才返回true,否则返回false。
(2)&:不短路与,作用与&&相同,但不会短路。
(3)||:或,只要两个操作数中有一个true,就可以返回true,否则返回false。
(4)|:不短路或,作用与||相同,但不会短路。
(5)!:非,只需要一个操作数,如果操作数为true,返回false,否则反之。
(6)^:异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false。
22. Java形参长度可变的方法
解析:在JDK 1.5后,Java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。如果在定义方法
时,在最后一个形参的类型后增加三点(...),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。
23. Java访问控制符
解析:
(1)private访问控制权限:如果类里的一个成员(包括属性和方法)使用private访问控制符来修饰,则这个成员只
能在该类的内部被访问。这个访问控制符用于修饰属性最合适,使用它来修饰属性就可以把属性隐藏在类的内部。
(2)default访问控制权限(包访问权限):如果类里的一个成员(包括属性和方法)或者一个*类不使用任何访
问控制符修饰,那么就称它是默认访问控制,default访问控制的成员或*类可以被相同包下其它类访问。
(3)protected访问控制权限(子类访问权限):如果一个成员(包括属性和方法)使用protected访问控制符修饰,
那么这个成员既可以被同一个包中其它类访问,也可以被不同包中的子类访问。如果使用protected来修饰一个方法,
通常是希望其子类来重写这个方法。
(4)public访问控制权限(公共访问权限):如果一个成员(包括属性和方法)或者一个*类使用了public修饰,
这个成员或*类就可以被所有类访问,不管访问类或被访问类是否处于同一包中,是否具有父子继承关系。
24. Java父类实例的super引用
解析:如果需要在子类方法中调用父类被覆盖的实例方法,可使用super作为调用者来调用父类被覆盖的实例方法。
25. final关键字
解析:Java提供了final关键字来修饰变量、方法和类,系统不允许为final变量重新赋值,子类不允许覆盖父类的final
方法,final类不能派生子类。通过使用final关键字,允许Java实现不可变类,不可变类会让系统更加安全。
参考文献:
[1] Scala教程:http://www.runoob.com/scala/scala-tutorial.html
[2] UML系列图--用例图:http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html