scala安装、与java、jvm关系、源文件解析、伴生对象扩展说明

本文介绍了scala的安装步骤,包括环境变量配置和验证,同时详细解析了scala与java、jvm的关系。scala语言特点聚焦其多范式编程、与Java集成以及源文件编译流程。此外,还展示了如何在IntelliJ IDEA中使用scala并演示了伴生对象的概念。
摘要由CSDN通过智能技术生成

scala安装

1、安装scala-2.11.8.msi 设置安装路径为D:\ProgramFile\scala
2、环境变量
SCALA_HOME
D:\ProgramFile\scala
Path
%SCALA_HOME%\bin
3、验证
在这里插入图片描述

scala、java、jvm关系图

在这里插入图片描述

scala语言特点

scala是一门以java虚拟机(jvm)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。
1、scala是一门多范式的编程语言,支持面向对象和函数式编程
2、scala源代码(.scala)会被编译成java字节码文件(.class),然后运行于jvm之上,并可以调用现有的java类库,实现两种语言的无缝对接
3、scala作为一门语言,非常的简洁高效

scala源文件和运行

HelloScala.scala
object HelloScala{
def main(args:Array[String]): Unit ={
println(“HelloScala”)
}
}
在这里插入图片描述

反编译工具

HelloScala.class–伴生类
程序执行的入口

public final class HelloScala
{
  public static void main(String[] paramArrayOfString)
  {
    HelloScala..MODULE$.main(paramArrayOfString);
  }
}

HelloScala$.class—单例模式饿汉式
伴生对象的所属类
实现java的static功能

import scala.Predef.;

public final class HelloScala$
{
  public static final  MODULE$;

  static
  {
    new ();
  }

  public void main(String[] args)
  {
    Predef..MODULE$.println("HelloScala");
  }
  private HelloScala$() { MODULE$ = this; }

}

scala在idea中编写

idea离线安装插件
1、准备安装包scala-intellij-bin-2018.2.3.zip
2、file–>settings–>plugins–>Install plugin from disk 选中文件 ok

编写代码

object First {
  def main(args: Array[String]): Unit ={
      println("hello scala")
      System.out.println("hello")
  }
}

在这里插入图片描述

语法说明

object关键字,声明一个单例对象(伴生对象)
main方法:从外部可以直接调用执行的方法
def 方法名称(参数名称:参数类型): 返回值类型 ={方法体}

伴生对象的扩展说明

public class Student {
    private String name;
    private Integer age;
    private static String school="atguigu";

    public Student(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    //school不够面向对象
    public void printInfo(){
        System.out.println(this.name+" "+this.age+" "
        +Student.school);
    }

    public static void main(String[] args) {
        Student alice = new Student("alice", 20);
        Student tom = new Student("tom", 18);
        alice.printInfo();
        tom.printInfo();
    }
}
class Student(name:String,age:Int) {
  def printInfo():Unit ={
    println(name+" "+age+" "+Student.school)
  }
}
//引入伴生对象 取消static同时还要实现static的功能
//伴生对象 伴生类里面的私有成员是可以相互访问
object Student{
  val school:String="atguigu"

  def main(args: Array[String]): Unit = {
    val alice = new Student("alice",20)
    val tom = new Student("tom",19)
    alice.printInfo()
    tom.printInfo()
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值