1.plugin中安装scala插件
2.项目设置
-
project structure
-
Global Libraies --> + --> Download 2.11.xx版本
-
右键、Copy to Project Libraies
-
Libraies目录中会出现
3.创建基本项目
-
scala -> IDEA
-
object和classs区别
-
object相当于java中的静态
-
main方法要运行只能写到object中
-
-
输出语句print既可以写方法内,也可以写方法外
-
$a可以取变量值
-
$a 3
-
${a+4} 7
-
-
运行顺序
package com.xiaoke.scala object TestScalaObject04 { private val xo:TestScalaObject05 = new TestScalaObject05() println ("ooxx>>>>>>>up") def main(args: Array[String]): Unit = { println("hello from TestScalaObject04... ") xo.printMsg() } println("ooxx 。。。。 down.......") } class TestScalaObject05 { var a:Int = 3; println(s"aa ...... up ....$a....") def printMsg(): Unit= { println("hello from msg") } println(s"aa ...... down${a+4}") } 运行结果: aa ...... up ....3.... aa ...... down7 ooxx>>>>>>>up ooxx 。。。。 down....... hello from TestScalaObject04... hello from msg 运行顺序: 方法外的常量都是静态,类似静态
- 类型
Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 Long 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 Float 32 位, IEEE 754 标准的单精度浮点数 Double 64 位 IEEE 754 标准的双精度浮点数 Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF String 字符序列 Boolean true或false Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。 Null null 或空引用 Nothing Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。 Any Any是所有其他类的超类 AnyRef AnyRef类是Scala里所有引用类(reference class)的基类
- var和val
- var是变量
- val是常量,类似java中final
- 重写构造方法必须重写原来的构造
var address = "xiaoke" def this(xaddress: String){ this() address = xaddress }
- 修改常量
- 只有在类名构造中的参数可以设置成var,其他地方函数中的参数都是val类型的,且不允许设置成var类型
- 类名调用的是常量
class ooxx(){ val name = "wang"; def message(): Unit ={ println(s"a---- ${ooxx.name}") } } object ooxx{ val name = "ke"; val ox:ooxx = new ooxx(); def main(args: Array[String]): Unit = { ox.message() } } 结果: a---- ke
为什么学scala?
有同学问: 学习scala就是为了多学一门语言吧?感觉不如python,不仅学习了语言,也学了工具,理解有哪些偏差? 编译型 C < 贼快 解释型 python < 贼慢 Java: 其实不值钱,最值钱的是JVM JAVA: 既是解释型、又是编译型, 所以比python快 java为什么值钱? 是C写的, 【字节码(二进制) > JVM(堆/堆外(二进制)) < kernel(mmap,sendfile)】 更快!