新建scala项目
1 没有原生类型,只有引用类型
2 没有操作符,所有操作都是方法调用
没有返回值的打印是(),java的syso没有返回值的打印会报错。
object Hello {
def main(args: Array[String]): Unit = {
// var i = 8
var i : Int = 0
var k = i .+(4) //.+是调用的方法
var j = i + 4 //‘+’实际上是调用的上面的方法
new Range(1,5,1) //new 对象能new Range有三个参数的,而只有两个参数的不能new
println(Range(1,10))
//折两个等效,to方法返回的是Range类型的。
println(1 to 10)
for(i <- 1 to 10){
println(i)
}
for(i <- Range(1,10)){
println(i)
}
func
println(func()) //没有返回值的返回(),java中没有返回是System.out.println会报错,不能打印
func()
println(func3())
func1(3,4)
println(func2(5,6))
var res = if(j<2) ("小于2") // else ()
println(res) //返回(),相当于else ()
}
def func3() ={
println("func3")
}
def func(): Unit ={
println("func")
}
def func1(x:Int,y:Int): Unit ={
println(x+y)
}
def func2(x:Int,y:Int): Int ={
// return x+y
x+y
}
}
scala可以包中嵌套包
package com.it18zhang{
package my{
class Cat{
val color = "yellow"
}
}
package myscala{
class Dog{
}
}
}
Getter和Setter方法
定义变量自带getter和setter方法,常量(val)只有get方法
import scala.beans.BeanProperty
object Getter_Setter {
def main(args: Array[String]): Unit = {
val p1 = new People
p1.name_=("Wang")
p1.name = "Zhang"
println(p1.name)
p1.setName("Hoow")
println(p1.getName)
}
}
class People{
// @BeanProperty var name : String = null
var name : String = null
//为方法设别名
def getName = name
def setName(x:String) = name_=(x:String)
}
编译生成class文件
scalac Getter_Setter.scala
使用java命令反编译文件
javap Getter_Setter.class
另一个class文件带有$
javap Getter_Setter$.class
也可使用@BeanProperty注解来生成getter/setter方法
@BeanProperty var name : String = null