用 Java 的思路快速学习 Scala

引言

Scala 是一种结合了面向对象和函数式编程的现代编程语言,广泛应用于大数据处理框架如 Apache Spark 和 Apache Flink。对于熟悉 Java 的开发者来说,Scala 的学习曲线相对平缓。本文将通过类比 Java 中的概念,帮助 Java 开发者快速上手 Scala。

1. 基本语法

1.1. 数据类型

以下是 Scala 和 Java 数据类型的汇总表格:

Scala 数据类型 Java 数据类型 说明
Int int 32 位整数
Long long 64 位整数
Double double 64 位浮点数
Float float 32 位浮点数
Char char 单个字符
Byte byte 8 位整数
Short short 16 位整数
Boolean boolean 布尔值
String String 字符串类型,Scala 的 String 是不可变的,与 Java 的 String 类似。
List[T] List<T> 不可变的列表
ArrayList[T] ArrayList<T> 可变的列表
Set[T] Set<T> 不可变的集合
HashSet[T] HashSet<T> 可变的集合
Map[K, V] Map<K, V> 不可变的映射
HashMap[K, V] HashMap<K, V> 可变的映射
Option[T] Optional<T> 表示可能存在或不存在的值,Scala 的 Option 更加简洁和易用。
(T1, T2) Pair<T1, T2> (自定义类) 元组,Scala 支持多达 22 个元素的元组。
trait interface 特质可以包含方法的实现,而接口只能包含方法的声明。
case class POJO case class 自动生成 equalshashCodetoString 方法。
Any Object 所有类型的超类,Scala 中的所有类型都继承自 Any
AnyVal primitive types 所有值类型的超类,Scala 中的基本数据类型都继承自 AnyVal
AnyRef Object 所有引用类型的超类,Scala 中的引用类型都继承自 AnyRef

这个表格总结了 Scala 和 Java 中的基本数据类型及其对应关系。

1.2 变量

在 Java 中,我们使用 int, String 等类型来声明变量。在 Scala 中,变量的声明也很简单,但使用 valvar 来区分不可变和可变变量。

  • 不可变变量(类似于 Java 中的 final):

    // Java
    final int x = 10;
    final String name = "Alice";
    
    // Scala
    val x: Int = 10  // 不可变变量
    val name: String = "Alice"  // 不可变变量
    
  • 可变变量

    // Java
    int y = 20;
    String mutableName = "Bob";
    
    // Scala
    var y: Int = 20  // 可变变量
    var mutableName: String = "Bob"  // 可变变量
    

1.3 控制结构

Scala 的控制结构与 Java 类似,但语法更简洁。例如,if 语句和 for 循环。

  • if 语句

    // Java
    if (x > 0) {
         
         
        System.out.println("Positive");
    } else {
         
         
        System.out.println("Non-positive");
    }
    
    // Scala
    if (x > 0) println("Positive") else println("Non-positive")
    
  • for 循环

    // Java
    for (int i = 0; i < 5; i++) {
         
         
        System.out.println(i);
    }
    
    // Scala
    for (i <- 0 until 5) println(i)
    

1.4 函数定义

Scala 中的函数定义与 Java 方法类似,但更为简洁。Scala 支持高阶函数和匿名函数。

  • 函数定义

    // Java
    public int add(int a, int b) {
         
         
        return a + b;
    }
    
    // Scala
    def add(a: Int, b: Int): Int = a + b
    
  • 匿名函数

    // Java
    Function<Integer, Integer> square = x -> x * x;
    
    // Scala
    val square: Int => Int = x => x * x
    

1.5 类和对象

Scala 的类定义与 Java 类似,但构造函数的定义更为简洁。

  • 类定义

    // Java
    public class Person {
         
         
        private String name;
        public Person(String name) {
         
         
            this.name = name;
        }
    }
    
    // Scala
    class Person(val name: String)  // 主构造函数
    
  • 伴生对象(类似于 Java 的静态方法):

转载请说明出处内容投诉
CSS教程网 » 用 Java 的思路快速学习 Scala

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买