一、注释及代码规范

  1. Scala的注释和Java中完全相同:单行注释:// 、多行注释:/* */ 以及文档注释:/**   */;
  2. 使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移 。或是ctrl + alt + L来进行格式化;
  3. 运算符两边习惯性各加一个空格;
  4. 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅 ;
  5. Scala与Java的命名规范基本一致,Scala还允许纯操作符的命名形式(操作符(+ - * / # !等),如:var +*-/#! : String = ""。以及反引号包含39个关键字的形式,如:var `if` : String = ""。

二、变量和常量

Java中

  变量类型 变量名称 = 初始值 int a = 10

  final常量类型 常量名称 = 初始值 final int b = 20

Scala中

  var 变量名 [: 变量类型] = 初始值 var i:Int = 10

  val 常量名 [: 常量类型] = 初始值 val j:Int = 20

  1、声明变量类型可以省略,编译器会自动推导;

  2、Scala中类型确定后就不能改变了,Scala是强类型语言;

  3、变量声明时必须要有初始值;

  4、var修饰的对象引用可以改变,val则不可以改变,但对象的状态可以改变(比如;自定义对象、数组、集合等)

object VarTest {
def main(args: Array[String]): Unit = {
//var 修饰的对象属性可变,p1对象本身也可变
var p1 = new Person();
p1.name ="zhangsan"
p1 = null //val 修饰的对象不可变,但属性可变
val p2 = new Person()
p2.name = "lisi"
//p2=null 程序错误
}
}
class Person{
var name:String = "";
}

三、字符串操作

1、字符串拼接与java相同,使用“+”连接;

2、println的输出中,通过“%”进行传值;

3、在字符串模板中,通过${}获取变量值。

4、在多行字符串中,应用Scala中的stripMargin方法,使用三个双引号包围以.stripMargin结尾,中间换行使用“|”。

示例代码:

object CharTypeTest {
def main(args: Array[String]): Unit = {
var name : String = "zhangsan"
var age : Int = 18 //字符串拼接
println("name=" + name +","+"age" + age)
println("name=%s,age=%d",name,age) //多行字符串输出
val s =
"""
|I
|love
|China
|""".stripMargin
println(s)
//通过$传值
val s1 =
s"""
|select *
|from person
|where name="$name" and age=${age+2}
|""".stripMargin
println(s1)
}
}

四、键盘输入

java中:

  Scanner input = new Scanner(System.in);
System.out.println("输入姓名:");
String name = input.next();
System.out.println("输入年龄:");
int age = input.nextInt();

Scala中:

object InputTest {
def main(args: Array[String]): Unit = {
println("输入姓名:")
var name:String = StdIn.readLine()
println("输入年龄:")
var age:Int = StdIn.readInt()
}
}

五、数据类型

Java中:

基本类型:byte、short、int、long、float、double、char、boolean;

引用类型:对象类型。

Scala中:

  1. Scala中一切数据都是对象,都是Any的子类;
  2. 数据类型分为两大类,数值类型(AnyVal)、引用类型(AnyRef);
  3. Scala依旧遵守低精度类型向高精度类型自动转换(隐式);
  4. Scala中的StringOps是对Java中String的增强;
  5. Scala中的Unit无返回类型等价于Java中的void,但void只是关键字,而Unit依旧是数据类型且包含一个对象();
  6. Null也是一个类型,只包含一个对象null;
  7. Noting是一切数据类型的子类,主要用于一个函数没有明确返回值时使用。
  8. Scala中的整数类型有:Byte、Short、Int、Long;
  9. 浮点类型:Float、Double;
  10. 字符型:Char;(单个字符使用单引号'');
  11. 布尔型:Boolean;

六、类型转换

6.1 隐式转换

当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:

6.2 强制转换

Java:

double a = 2.2;
int b = (int) a;

Scala:

 def main(args: Array[String]): Unit = {
//注意:toInt只针对最近的操作数有效,所以往往要配合小括号使用
var a:Int = 2.7.toInt
}

String类型转基本类型:s1.toInt、s1.toFloat、s1.toDouble、s1.toByte、s1.toLong、s1.toShort。

最新文章

  1. HTML中的SVG
  2. MyBatis学习总结(一)——MyBatis快速入门(转载)
  3. ASP.NET MVC 提示there was error getting the type的解决方法
  4. 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
  5. Tomcat访问日志详细配置
  6. 【freemaker】之获取xml的值
  7. MySQL一些常用的时间函数
  8. Python 第六篇(中):面向对象编程中级篇
  9. 设计模式Adapter模式的五分钟
  10. C# group 子句
  11. <转>SQL Server CROSS APPLY and OUTER APPLY
  12. PHP正则表达式修饰符的种类及介绍
  13. html中hr的各种样式使用
  14. 20165321实验一 Java开发环境的熟悉
  15. HFTP Guide
  16. ubuntu下交叉编译mono
  17. thymeleaf 标签使用方法
  18. 【DUBBO】dobbo的application的配置项
  19. Java常用开发组件介绍
  20. FIS的安装

热门文章

  1. 抛弃go-micro,使用极简微服务框架Bull
  2. centos6.5-搭建Apache-地址限制和用户访问
  3. 手写RPC-简陋版
  4. dos 之 for循环(小“病毒”)
  5. 关于vue部署到nginx服务下,非根目录,刷新页面404的问题
  6. Nginx日志配置及日志分析脚本案例
  7. 网络协议学习笔记(七)流媒体协议和P2P协议
  8. leetcode 986. 区间列表的交集
  9. Javascript——ES6( ECMAScript 6.0)语法
  10. golang中的tcp编程