文章目录
一 入门
1 hello scala world 代码解析
package com.hike.bigdata.scala.chapter01
/**
* scala语言是基于java开发的
*
* package:java中的包
*
* object:声明一个对象,在编译时,会编译为两个类文件
* 声明对象的类型为:当前对象+$
* java:
* User user = new User();
* user.setName();
* scala:
* Scala01_HelloWorld = new Scala01_HelloWorld$();
*
* Scala01_HelloWorld:对象名称
*
* def:声明方法的关键字
*
* main:scala程序的入口方法名,没有main,程序执行不了
*
* ():方法的参数列表
*
* args: Array[String]:参数
* java:
* String[] args,强类型语言,在运行之前就要确定变量是什么类型
* 在开发的过程中,变量名称比变量类型更重要
* 所以scala先写名称,在名称和类型之间加上冒号作为分隔符
* scala:
* args:Array[String]
* args:参数名
* Array[String]:参数类型
* : 分隔符
*
* Array[String]:Array是一个数组类型
* scala语言是一个完全面向对象的语言,所以万物皆对象
* 数组也是对象,也有自己的类型,类型为:Array,这里的[]表示泛型
*
* java中的数组:
* String[]:String表示数组中元素的类型,[]表示数组,
* 数组在java中没有类型
* : Unit => 在scala中:
* 名称:类型
* 参数名:参数类型
* 变量名:变量类型
* 方法名:方法的返回值类型
*
* Unit表示返回值类型,Unit是scala中新的类型,为了代替void关键字,表示没有返回值
* void关键字的问题:返回有值,加上变量的类型,如int String
* 返回无值,加上关键字,并不统一
* 等于将关键字与类型等同,并不合理,所以有了Unit类型
* =:赋值
*
* {}:方法体
*
* System.out.println("Hello Scala World"):java代码
* scala语言基于java语言开发,所以大部分的java代码可以直接在scala中使用
*
* 代码可以不需要分号结尾,scala推荐一行代码中只有一个逻辑,则分号可以省略
* 如果一行有多个逻辑那么需要加上分号
*/
object Scala01_HelloWorld {
def main(args: Array[String]): Unit = {
System.out.println("Hello Scala World")
}
}
2 反编译
如果只是通过代码来进行语法的解析,并不能了解其真正的实现原理。scala语言是基于Java语言开发的,所以也会编译为class文件,那么我们可以通过反编译指令javap -v 类名 或 反编译工具jd-gui.exe查看scala编译后的代码,通过对比和java语言之间的关系,来掌握具体代码的实现原理。
3 关联源码
在使用Scala过程中,为了搞清楚Scala底层的机制,需要查看源码,那么就需要关联和查看Scala的源码包。
将源码下载下来,选择路径。
二 变量和数据类型
1 变量
变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,可以在这些变量中存储整数,小数或者字母。
(1)变量声明
def main(args: Array[String]): Unit = {
// TODO 变量
// Java中变量声明: String name = "zhangsan";
// scala中变量声明(1):var 变量名 :变量类型 = 变量值
var name_var : String = "zhangsan"
// 某些变量在某些场景中,初始化完成之后不能重新赋值
// scala中变量声明(2):val 变量名 :变量类型 = 变量值
val name_fin : String =