(一)scala方法/包/getter/setter

新建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
原文地址:https://www.cnblogs.com/apppointint/p/8885294.html