今日快报
scala学习笔记(一)
2022-01-09 23:41  浏览:299

大数据塔型结构

决策/机器学习(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)