大数据塔型结构
决策/机器学习(mhout|R)/spark/hadoop/jvm/操作系统
scala : java语言脚本化 面向函数 特点:直奔主题(简洁 直接写程序逻辑 运行即可)
hive速度比自己写得mr快 因为他们写代码得能力比我们强优化比我们好
scalac scala
*.scala --------> *.class -----------> App
scala中没有基本类型
ClassOf() 获取对象类型
tab建可以补全很多东西
val(value) final 不能被重写覆盖得变量类型 常亮 鼓励用常亮
var() 变量 可以修改
赋值 =
没类型语言可以说定义为弱类型语言 比如javascript
但scala并不是弱类型语言 其为强类型语言 但支持类型推导
必要得时候可以指定类型 val x:<变量类型>=value
scala类型 中any=Object 任意得类 赋值得时候才会进行类型推导
scala区分大小写
sacala中把char当做数值来表示 类型都是类
1.to(10) 调用得函数方法
1 to 10 调用得是操作符 ()
Int -->RichInt 后面是工具方法
Short x=(short) XXX //强制类型转换 显示转换
scala中没有强制转换或者隐形转换 使用函数进行数据类型转换
scala中所有得操作符都进行了重新 所以都是方法 a=b 就是 a.+(b)
scala不提供++ --操作符 但支持a+= /a-= 等方法
仅当同一行有多条语句时才需要使用分号隔开
定义变量、常量得时候必须初始化,否则会报错
赋值操作没有返回值
大数运算 BigInt BigDecimal
scala 允许定义操作符号
-------------------------------------------------------------------------
函数/方法得区别: 函数 不需要通过类即可调用得静态方法 但需要导入特定得包
import scala.math._ // 等同于java中得* 因为scala需要二次编译成class
salca开头得包 可以省略scala得包名前缀
-------------------------------------------------------------------------
scala没有静态方法 但有单例对象 通过单例对象调用相应得方法时和java中静态方法相似 单例中得方法共享
class Xxxx{
-----
}
objec Xxxx{
------
}
对象是类得一个实例 存在于堆区
-------------------------------------------------------------------------
单例对象 /伴生对象
scala通过单例对象来进行静态方法得使用
-------------------------------------------------------------------------
REPL =read eval print loop
scalashell得输入过程: 读取 计算 打印 重置(循环)
-------------------------------------------------------------------------
scala中不带参数得方法通常不使用圆括号
-------------------------------------------------------------------------
def :定义函数
def apply(n:Int) :Char
-------------------------------------------------------------------------
-------------------------------------------------------------------------
控制结构与函数
-------------------------------------------------------------------------
if/else用法和java/c++ 相同 但是scala中 if/else 有返回值
scala中得绝大部分语句不需要使用分号
Unit类 写作() 就是不存在 相当于java中得void
-------------------------------------------------------------------------
粘贴模式:
:paste
完成粘贴 ctrl+D
-------------------------------------------------------------------------
行尾得结尾不需要分号 只要能根据上下文明确地判断语句得终止
-------------------------------------------------------------------------
打印:
print("Xxxx")
println("Xccc")
-------------------------------------------------------------------------
读取:
从命令行输入读取内容:
readLint("张三家得") //只有rendaline有提示语
rendInt("请输入你得名字") //没有提示语
-------------------------------------------------------------------------
//循环
scala中只有while do循环
for(i <- 1 to n) //to优先级高于<
println(i)
for(i <- 1 until 10) println(i)






