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=