1.scala之HelloWorld

本文介绍了Scala语言的基础知识点,包括val的重要性、Scala的面向对象特性、apply方法的应用、object关键字的作用及Unit类型的含义等。此外还提供了Scala Hello World示例代码。

        现在跟大伙一起分享下scalahelloword级别的学习要点:

1.val的重要性:scala使用val来修饰常量,有点类似于java中的final,在分布式系统中这个val意义非凡,在分布式系统中,一般要求值不可变,val声明的内容是不可变的,所以不用担心。在机器之间传递数据的时候内容被修改,这为分布式编程打下了非常好的基础。spark中的核心抽象RDD也是不可改变的。

2.scala是一门完全面向对象的语言,在scala中一切皆对象,scala中的所有类型是class,没有基本类型和包装类的说法。

3.scala中所有的类都继承于Any.这跟java的Object有点相似

4.scala的apply方法:是scala的对象构造的工厂方法,用于控制Scala类对象的生成。(类似于java中的工厂方法)。实际使用的时候直接用类名并在类名后面传入参数

           即可调用该类的apply方法,通过工厂模式的方式生成该类的对象。

5.object 作为scala中的一个关键字,类似于java中的public static class即静态类,object中的成员都是静态的,所以object类中的方法不需要实例化就可以被JVM调用

6.Unit:相当于java中的void类型,若返回Unit类型,在方法编写时可以省略(:Unit= ).其他非Unit类型时不可去掉

7.scala中有很多方法是直接调用java的,例如println是借助于Java IO功能,还有很多比如:DB,NOSQL,Hbase都是借用java的API,还有就是Scala中的线程操作往往

           借助于Java中的Thread.

8.Scala是基于JVM的编程语言。Java是运行在jvm上的编程语言,java源代码通过jvm被编译成class文件,然后在os上运行class文件。Scala是运行在jvm上的编程语言,scala源代码通过jvm被编译成class文件,然后在os上运行class文件。


9.scala hello world 示例代码:

object HelloScala {
  
  def main(args: Array[String]): Unit = {
    println("Hello Scala")
    println(args.length)
  }
  
}

scalac: Error: C:\Users\��Ϊ\AppData\Roaming\JetBrains\IdeaIC2022.2\plugins\Scala\lib\jps\compiler-interface-sources-2.11.jar (系统找不到指定的路径。) java.io.FileNotFoundException: C:\Users\��Ϊ\AppData\Roaming\JetBrains\IdeaIC2022.2\plugins\Scala\lib\jps\compiler-interface-sources-2.11.jar (系统找不到指定的路径。) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(FileInputStream.java:195) at java.io.FileInputStream.<init>(FileInputStream.java:138) at sbt.io.Using$.$anonfun$fileInputStream$1(Using.scala:98) at sbt.io.Using$$anon$3.openImpl(Using.scala:86) at sbt.io.OpenFile.open(Using.scala:53) at sbt.io.OpenFile.open$(Using.scala:47) at sbt.io.Using$$anon$3.open(Using.scala:85) at sbt.io.Using$$anon$3.open(Using.scala:85) at sbt.io.Using.apply(Using.scala:25) at sbt.io.IO$.unzip(IO.scala:375) at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$3(AnalyzingCompiler.scala:444) at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169) at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165) at scala.collection.immutable.List.foldLeft(List.scala:79) at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$2(AnalyzingCompiler.scala:443) at sbt.internal.inc.AnalyzingCompiler$.$anonfun$compileSources$2$adapted(AnalyzingCompiler.scala:440) at sbt.io.IO$.withTemporaryDirectory(IO.scala:490) at sbt.io.IO$.withTemporaryDirectory(IO.scala:500) at sbt.internal.inc.AnalyzingCompiler$.compileSources(AnalyzingCompiler.scala:440) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl$.org$jetbrains$jps$incremental$scala$local$CompilerFactoryImpl$$getOrCompileInterfaceJar(CompilerFactoryImpl.scala:163) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.$anonfun$getScalac$1(CompilerFactoryImpl.scala:61) at scala.Option.map(Option.scala:242) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.getScalac(CompilerFactoryImpl.scala:54) at org.jetbrains.jps.incremental.scala.local.CompilerFactoryImpl.createCompiler(CompilerFactoryImpl.scala:23) at org.jetbrains.jps.incremental.scala.local.CachingFactory.$anonfun$createCompiler$3(CachingFactory.scala:24) at org.jetbrains.jps.incremental.scala.local.Cache.$anonfun$getOrUpdate$2(Cache.scala:20) at scala.Option.getOrElse(Option.scala:201) at org.jetbrains.jps.incremental.scala.local.Cache.getOrUpdate(Cache.scala:19) at org.jetbrains.jps.incremental.scala.local.CachingFactory.createCompiler(CachingFactory.scala:24) at org.jetbrains.jps.incremental.scala.local.LocalServer.doCompile(LocalServer.scala:43) at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:30) at org.jetbrains.jps.incremental.scala.remote.Main$.compileLogic(Main.scala:209) at org.jetbrains.jps.incremental.scala.remote.Main$.$anonfun$handleCommand$1(Main.scala:192) at org.jetbrains.jps.incremental.scala.remote.Main$.decorated$1(Main.scala:182) at org.jetbrains.jps.incremental.scala.remote.Main$.handleCommand(Main.scala:189) at org.jetbrains.jps.incremental.scala.remote.Main$.serverLogic(Main.scala:165) at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:105) at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.facebook.nailgun.NGSession.runImpl(NGSession.java:312) at com.facebook.nailgun.NGSession.run(NGSession.java:198)
最新发布
10-15
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值