Scala语言初学
Posted LongRangerTing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala语言初学相关的知识,希望对你有一定的参考价值。
一. 软件配置
工具:IDEA
要先安装scala插件
注:scala程序反编译----- jd-gui.exe
1. file-->new project---- Maven
2. 新建scala文件夹 main---右键,new directory
3. 将scala标记为 source root:scala,右键 Mark Directory as--->Sources Root
4. 默认情况下不能写scala程序,需要加入scala框架。
工程名scala_study 右键 Add Frameworks Support,选中scala
5. 选择创建scala的object
二. scala语言
1. windows安装scala ,添加环境变量(SCALA_HOME和Path),创建文本文件 Test.scala ,cmd编译
# scalac Test.scala //会产生出两个.class文件 Test.class 和Test$.class
# scala Test //运行scala程序
//object 关键字理解 相当于java的单例对象
public class TestScala{
public static void main(String[] paramArrayOfString){
TestScala$.MODULE$.main(paramArrayOfString);
}
}
final class TestScala${
public static final TestScala$ MODULE$;
static{
MODULE$ = new TestScala$();
}
public void main(String[] args){
System.out.println("hello scala");
}
}
//对应的scala程序
object Test{
def main(args:Array[String]):Unit={
println("hello world")
}
}
2. scala执行流程
1).scala文件---(scalac编译)---字节码文件---(scala运行)---结果
2).scala文件---(scala编译 运行)---结果
3. scala开发注意事项
1)区分大小写。
2)scala源文件以 .scala为扩展名
3)程序执行入口是main()函数
4)每条语句结束无需加分号;若同一行有多条语句 除了最后一条语句不需要加分号,其他语句需要加分号
3. 字符串输出的三种方式
1)字符串通过 + 号连接(类似于java)
2)printf用法 (类似于C语言)字符串通过 % 传值
3)字符串通过 $ 引用 (类似于php)
val name = "Herry"
val age = 20
val url = "www.baidu.com"
println("name = "+ name + "age = " + age + "url = " + url)
printf("name=%s, age=%d, url=%s \n",name,age,url)
println(s"name = $name, age = $age, url = $url");
println(s"name = ${name}, age = ${age + 10}, url = ${url}");//可以运算
4. scala 源码的查看和关联
1)查看源码,选择要查看的方法或类,输入 ctrl+b
2)关联源码:将源码包拷贝到scala的lib目录下,解压两次,然后关联
5. 文档注释
//在代码的路径下(show in explorer查看代码路径)cmd执行如下命令:
scaladoc -d d:/software LookSource.scala // 生成对应的文档说明
6. scala的类库(sdk):1)scala特有的库 2)对java的类进行包装
java的类库(jdk):java设计者给程序员提供的类库
三. 变量
1. 数据类型
Byte、Char、Short、Int、Long、Float、Double、Boolean、Unit(相当于java中的void)
var score:Float = 70.9f //小数默认是Double,整数默认是Int
2. 变量声明
1)格式:val/var 变量名[:变量类型] = 变量值
注:变量类型可以不写(编译器自动推导)
var num =10 // num是Int类型
println(num.isInstanceOf[Int])
2)类型确定后,就不能修改(举例:num被赋值为10后,不能再被赋值为10.3),说明scala是强数据类型语言。
3)在声明/定义变量时,可以使用var或val修饰,var修饰的变量可以改变,val修饰的变量不可改变。变量声明时需要初始值。
val修饰的变量在编译后,等同于加上final。val没有线程安全问题,因此效率高
var num = 10
num = 30 //可行
val age = 30
age = 20 //编译出错
4)程序中 + 号的使用
当左右两边都是数值型时,则做加法运算;当左右两边有一方是字符串,则做拼接运算。
3. scala数据类型介绍
1)scala与java有着相同的数据类型,在scala中数据类型都是对象,scala没有java中的原生类型。
2)scala中一切皆对象。scala数据类型分为两大类 AnyVal(值类型)和AnyRef(引用类型)。
Any类型相当于java中的object,是所有类的父类。
var num:Int = 10
// 在scala中,若一个方法没有形参,则方法调用时可以省略()
println(num.toDouble + "\t" + num.toString + "\t" + 100.toString)
3)Null类型是scala的特别类型,它只有一个值null,它是bottom class,是所有AnyRef类型的子类。
4)Nothing类型也是bottom class(底层类),它是所有类的子类,在开发中通常可以将Nothing类型的值返回给任意变量或函数。在抛出异常时使用很多。
object TestDemo {
def main(args: Array[String]): Unit = {
println(sayHello)
}
//Nothing做返回值,就是明确说明该方法没有正常返回值
def sayHello:Nothing = {
throw new Exception("抛出异常")
}
}
5)scala中仍然遵守低精度值向高精度的值自动转换。
scala各整数类型有固定的表数范围和字段长度,不受OS的影响,以保证scala程序的可移植性。
scala的常量/字面量默认为Int型,声明Long型常量/字面量须加‘l’或‘L’
以上是关于Scala语言初学的主要内容,如果未能解决你的问题,请参考以下文章