Scala学习笔记

Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的 静态类型编程语言。

Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有 的Java类库,实现两种语言的无缝对接。

一、java和scala对比

方法和函数

1)scala方法:def 方法名(参数名:类型):返回值类型={return "我是输出"} 2)java方法: 返回值类型 方法名(类型 参数名){}
//scala
def aaa(a:Int):Int={
   return 1}
//java
int aaa(int a){
   return 1;}

关键字

1)scala没有public,缺省就是公共的
2)没有startic,没有静态方法
3)没有void,有unit,表示没有返回值

重点!分号可写可不写

class和object说明

object实现类似静态方法static的功能(类名.方法名)
class关键字和Java中的class关键字作用相同

//java
public class student_java {
   
    private String name;
    private int age;
    private static String school = "汉江";

    public student_java(String name, int age) {
   
        this.name = name;
        this.age = age;
    }

    public  void printInfo(){
   
        System.out.println(this.name+""+this.age+""+student_java.school);
    }

    public static void main(String[] args) {
   
        student_java o1 = new student_java("江晓峰",18);
        student_java o2 = new student_java("猪猪侠",20);
        o1.printInfo();
        o2.printInfo();
    }
}
//scala,属性可以直接放在类名后面
class student(name:String,age:Int) {
   
  def prindt1():Unit={
   
    println("name="+name+"age="+age+"school="+student.school)
  }
}
object  student{
   
  val school="汉师"
  private val zhangsan = new student("张三", 20)
  private val zhaosi = new student("赵四", 20)

  def main(args: Array[String]): Unit = {
   
    zhangsan.prindt1()
    zhaosi.prindt1()
  }
}

二、变量和数据类型

快捷

1)shift+tab 整体向左移
2)ctrl + alt + L 来进行格式化

变量常量

1)var 修饰的变量可改变,val 修饰的变量不可改
java:
变量:int a = 10
常量:final int b = 20

scala:
变量:
var i:Int = 10
常量:
val j:Int = 20
        ***注意:能用常量的地方不用变量***

2)声明变量时,类型可以省略,编译器自动推导,即类型推导

var age = 18

3)类型确定后,就不能修改,说明 Scala 是强数据类型语言

var age = 30 // 对
age = "tom" // 错误

4)变量声明时,必须要有初始值

var name="江晓峰"// 对
var name //错误

5)val修饰的对象不可变,但对象的状态可以改变。(比如:从对象、、数组、集合改为常量)

val age = 30 
age = 20 // 错误

class _2month25(name:String,age:Int){
   
  def pr(): Unit ={
   
    print(this.name+","+this.age)
  }
}
object _2month25 {
   
  def main(args: Array[String]): Unit = {
   
   val jiang = new _2month25("江", 18)
    jiang=new _2month25("姜",20)//错误
    jiang.age=24
    jiang.pr()
  }
}

标识符规范

和java基本一致
不同点:
1)以操作符开头,且只包含操作符(+ - * / # !等)
因为在scala是纯粹的面向对象,±…都是对象
2)用反引号`…`包括的任意字符串,即使是 Scala 关键字(39 个)也可以

字符串输出(以下四种都可以用)

1)字符串,通过+号连接(java)
*号,重复输出多次

val name=
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值