Scala与Java代码对比

主程序入口:

/**
   * java中class里面即可以有static修饰的,也可以有普通的属性和方法
   * scala中没static关键字
   * java的main方法: public static void main(String[] args){...}
   * scala中分为class与object
   *   class里面的属性与方法都是类似java非static修饰的
   *   object里面的属性与方法都是类似java static修饰的
   * 所以main方法必须写在object中
   * scala中没有Public关键字,默认就是Public效果
   
   
   * scala中main方法: def main( args:Array[String]):Unit = {..}
   *     def: defined的缩写,def标识方法
   *     main: 方法名
   *     (..) : 方法的参数列表
   *       args: 参数名
   *       Array[String]: 参数类型
   *         Array就是数组,[String] 代表是Array中的元素类似是String
   *    Unit就是类似java的void,scala定义方法的时候返回值类型定义在参数列表的后面通过:分割
   *
   *  scala中如果一行只写一个语句,那么;可以省略,如果一行写多个语句则;不能省略
   */

注释:

/**
   * java注释:
   *     单行注释 //
   *     多行注释 /*...*/
   *     文档注释 /** .. */
   
   
   * scala的注释和java完全一样
   */

命名规范:

/**
   * java中变量命名规范: 必须是数字、字母、_组成,首字母不能是数字
   
   * scala中变量命名规范: 必须是数字、字母、_、特殊符号组成,首字母不能是数字
   
   * scala中特殊符号命名是scala内部使用,不推荐开发人员使用
   
   * scala实际开发中变量的命名采用与java一样的原则, 驼峰原则
   
   */

变量定义:

/**
   * java定义变量: 变量类型 变量名 = 值
   
   
   * scala定义变量的语法: val/var 变量名: 变量类型 = 值
 
   * val与var的区别:
   *   val修饰的变量不能被重新赋值,类似java final修饰
   *   var修饰的变量可以被重新赋值
   
   * scala中变量定义的时候必须初始化
   
   * scala在定义变量的时候,变量类型可以省略,省略之后scala会自动推断类型
   
   */

String:

/**
   * java中如何获得一个字符串:
   *     1、通过new关键字创建:new String(..)
   *     2、通过""包裹:".."
   *     3、通过一些方法: toString()、subString()
   *     4、字符串拼接: ".." + "..."
   
   
   * scala中获取字符串:
   *     1、通过new关键字创建:new String(..)
   *     2、通过""包裹: ""
   *     3、字符串拼接:
   *           1、".." + "..."
   *           2、插值表达式: s"${变量名/表达式}"
   *     4、一些方法: toString、subString、format
   *     5、三引号: """ ... """ [能够完整的保留字符串的输入格式]
   */

数据类型:

/**
 * java数据类型:
 *     1、基本数据类型:
 *           byte、short、char、int、long、float、double、boolean
 *     2、引用类型
 *          String,数组、集合、class
 
 
 * scala是完全面向对象的
 * 
 * Any: 所有类的父类,类似java的object
 *     AnyVal: 值类型
 *         Byte、Short、Char、Int、Long、Float、Double、Boolean
 *         Unit: 相当于java的void,有一个实例()
 *         StringOps: 对java 字符串的扩展
 *     AnyRef: 引用类型
 *         String,java集合、java数组、scala数组、scala集合、java/scala class
 *               Null: 是所有引用类型的子类, 有一个实例null,null一般用来给引用类型赋予初始值,在赋初始值的时候,变量的类型必须定义
 *
 *     Nothing: 所有类型的子类,没有具体的实例,是scala内部使用
 */

数据类型转换:

/**
 * 数字与数字的转换:
 *     低精度转高精度: 自动转换
 *     高精度转低精度:  通过toXXX方法转换
 * 数字和字符串的转换:
 *     数字转字符串: toString/字符串拼接
 *     字符串转数字: 通过toXXX方法转换
 */

读取数据:

/**
 * 从控制台获取数据: StdIn.readXXX
 * 从文件读取数据:  Source.fromFile(...)
 */

operator:

/**
    * java运算符:
    *     1、算术运算符: + - * / ++ -- %
    *     2、逻辑运算符: && || !
    *     3、位运算符: & | << >> >>>
    *     4、三元运算符: 布尔表达式 ? true的结果 : false的结果
    *     5、赋值运算符: = += -= *=
    *     6、比较运算符: == != >= <= > <
    
    
    * scala中没有三元运算符,可以用if-else实现三元运算符的作用
    * scala中没有++ --,后续通过+1 -1实现++ --的功能
    * scala运算符
    *     1、算术运算符: + - * /  %
    *     2、逻辑运算符: && || !
    *     3、位运算符: & | << >> >>> 【算法】
    *     4、赋值运算符: = += -= *=
    *     5、比较运算符: == != >= <= > <
    * java中运算符就是一个普通符号,但是在scala中运算符都是方法
    * scala中方法调用的两种形式:
    *       1、对象.方法(参数值,..)
    *       2、对象 方法 (参数值,..)  //如果方法只有一个参数,()可以省略
    */