欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scala基础

程序员文章站 2022-06-14 17:02:18
...

声明变量

Scala中声明变量的格式:

var 变量名=初始值                val 变量名 = 初始值
var 变量名:数据类型=初始值        val变量名:数据类型 = 初始值
scala> val user:String="jdfs"
user: String = jdfs

scala> val name="kkk"  ##声明未指定类型时,scala会自己判断数据类型
name: String = kkk

scala> var money=1000
money: Int = 1000

scala> money=10003
money: Int = 10003

scala> name="dfs"
<console>:12: error: reassignment to val
       name="dfs"
           ^

scala> 

小结: val和var的区别
使用var关键字声明的变量,可以对该变量的值进行修改
使用val关键字声明的变量(相当于常量),不可以对该变量的值进行修改

scala> val a = 10.asInstanceOf[Double]	## 转换数据类型 
a: Double = 10.0

scala> val b = 10.isInstanceOf[Double] ## 判断数据类型
b: Boolean = false

常用数据类型

Byte Char Short Int Long Float Double Boolean String

函数、方法

函数的定义格式:

 def 函数名(参数1:类型 , 参数2:类型 , …) : 返回值类型 ={
   函数体代码实现
}

函数用法:
注意:函数中参数默认是使用val定义,不能对参数的值进行修改

###有参函数
def sum(x:Int,y:Int):Int={
    x+y # 最后一行代码的执行结果作为返回值
  }
###简化写法 ,不写明返回值类型时,程序会自行判断
def sum(x:Int,y:Int)={
    x+y
  }
 ### 简化写法,当函数体只有一行代码时,可以这么写。
  def sum(x:Int,y:Int)=x+y
### 
###无参函数
def sayhello():Unit={
    println("ddd")
  }
  ###同样可以简化
  def sayhello=println("ddd")
  

循环表达式

to:
左闭右臂

scala> 1 to 10
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

也可写成
1.to(10)
range:

左闭右开

scala> Range(1,10,1) #第三个参数为步长
res2: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

until:
等同range
也可写成1.until(10)

scala> 1 until 10
res0: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)

for语句:
for语句循环结构:for( i <- 表达式/数组/集合)

for(i <- 1 to 10){}
for(i <-1 to 10 if i%2==0){}

对象

类的简单定义:

class people(val name:String,val age:Int){
	var name:String = _ // name肯定是一个字符串类型
	val city=""
	def sleep()={
	name + "zzzzz"
}

构造器
scala中的每个类都有一个主构造器,主构造器的参数直接放置类名后面,与类交织在一起。
注意:主构造器会执行类中定义的所有语句

class Student(val n:String,var a :Int){
	val name:String = n
	var age : Int = a
	println("执行主构造器")
	var sex: String =_ //表示占位符,只有在var声明时才可以使用,声明时一定要写上数据类型,编译器会赋予相应的初始值
	def this(n:String,a:Int,sex:String){
		this(n,a)//第一行必须写调用主构造器的代码
		println("执行辅构造器")
		this.sex=sex
}
}