Scala学习2——idea配置scala环境,scala初步学习

摘要:
了解Scala如何使用Java反编译程序将字节码反编译为类源文件显示了引入Scala库的逻辑。HelloScala$有一个主实例方法。HelloScala类的静态方法通过这个单例对象传递这个实例方法。这表明Scala比Java更面向对象。
了解Scala

使用Java Decompiler反编译字节码到.class源文件可以看到引入Scala库的逻辑。并且:

  • scala源文件中的HelloScala对象编译后成为了一个类,但对象本身编译后就是生成的另一个类HelloScala$类的单例对象HelloScala$.MODULE$,称之为伴生对象。
  • HelloScala$有一个main实例方法,HelloScala类的静态方法通过这个单例对象转调这个实例方法。完成打印。
  • 说明Scala比Java更面向对象。
使用idea编写Scala项目

1.新建maven项目

Scala学习2——idea配置scala环境,scala初步学习第1张

 Scala学习2——idea配置scala环境,scala初步学习第2张

 2.安装Scala插件

Scala学习2——idea配置scala环境,scala初步学习第3张

 3.右键单击项目添加scala支持

Scala学习2——idea配置scala环境,scala初步学习第4张

 Scala学习2——idea配置scala环境,scala初步学习第5张

 4.创建scala类

Scala学习2——idea配置scala环境,scala初步学习第6张

 5.运行(idea有代码补全会舒服很多)

Scala学习2——idea配置scala环境,scala初步学习第7张

 Scala学习2——idea配置scala环境,scala初步学习第8张

 Scala学习2——idea配置scala环境,scala初步学习第9张

尝试调用java类库
System.out.println("hello scala from java")

Scala学习2——idea配置scala环境,scala初步学习第10张

scala删除了static关键字更好的实现了面向对象,体现:

java中,static关键字的使用的一个举例

public class Student{
    private static String school = "std";

     public void printInfo(){
        System.out.println(Student.school)
    }   
}
    

但是这并不完全的”面向对象“,因为static关键字的存在,调用时,使用的是School这个类而不是一个对象

而在scala中,使用伴生对象与伴生类的关系,解决了这个问题,使得Scala更加得“面向对象”

class Student(name:String,age:Int) {
  def printInfo() : Unit = {
    println(name + "" + age + "" + Student.school)

  }
}

//引入伴生对象
object Student{
  val school : String = "std"
}

class Student是object Student的伴生类;object Student是class Student伴生对象。彼此相伴相生,互相之间可以访问彼此的私有成员

测试一下

class Student(name:String,age:Int) {
  def printInfo() : Unit = {
    println(name + " " + age + " " + Student.school)

  }
}

//引入伴生对象
object Student{
  val school : String = "std"

  def main(args: Array[String]): Unit = {
    val alice = new Student("alice",20)
    alice.printInfo()
  }
}

Scala学习2——idea配置scala环境,scala初步学习第11张

明天学习scala中的数据类型

免责声明:文章转载自《Scala学习2——idea配置scala环境,scala初步学习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue 基础篇一《大话设计模式》--模板模式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IDEA必备插件

工欲善其事,必先利其器。 文章目录 `translation` `Alibaba Java Coding Guidelines` `CodeGlance` `Maven-Helper` `JRebel for Intellij` `Lombok plugin` `MyBatis Log Plugin` `Grep console` `CamelCas...

Python编程软件的安装与使用——Windows、Linux和Mac

Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ        最近,有读者透露:Python软件如何安装?为什么自己安装的软件会有各种“奇怪”的问题?据此,本篇随笔将具体讲述如何安装Python 3.x版本的软件。特别地,篇中所述的不是安装文本编辑器(比如Notepad++,Sublimetext,PyCharm.......

防止表单重复提交

1.方法一 在servlet中模拟网络延迟造成表单重复提交 //解决表单重复提交方法 //接收数据 String username = req.getParameter("username"); System.out.println("接收的数据为:"+username);...

idea常用快捷键汇总

自动导入或补全 Ctrl+空格,代码提示自动提示待输入项Ctrl+Shift+空格,自动补全代码语句Ctrl+Alt+空格,类名自动完成Ctrl+Shift + Enter,语句完成(完成当前语句,以“;”结束)Ctrl+J,自动代码提示(例如:serr、sout)Ctrl+Alt+O,优化导入的类和包Alt+Enter,导入包,自动修正Tab,代码标签输...

Consul--客户端访问Consul服务

根据上一篇Consul服务的注册和发现,那么客户端如何去访问我们的Consul服务?其实客户端访问Consul实际上是访问Consul的服务实例。客户端自己可以实现对Consul服务实例的轮训,每次刷新端口都会发生改变,由于客户端访问Consul采用的轮训策略,所以每次刷新Consul的服务实例都会发生改变。 下面就直接上客户端访问Consul服务实例的代...

Kafka — 高吞吐量的分布式发布订阅消息系统【转】

1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic、发送消息、消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件?6.producer是否直接将数据发送到broker的leader(主节点)?7.Kafa consumer是否可以消费指定分区消息?8.Kafka消息是采...