scala php,scala学习之scala与java的一些区别(一)

关键字:

abstract   case       catch      class      def

do         else       extends    false      final

finally    for        if         implicit   import

match      new        null       object        override

package    private    protected requires   return

sealedsuper      this       throw      trait

try        true       type       val        var

while      with       yield

_      :      =      =>     :     #      @

黄色是scala增加的 ,yield与java不同

Scala调用Java的方法时,会碰到有Scala的保存字,如Thread.yield()

这在Scala中是非法的,专门有个解决办法,写成:Thread.`yield`()

变量定义:

这些标识在Java中是非法的,在Scala中是合法的,可以当作函数名使用,使接口更加DSL:

val empty_? = true

val + = "hello"

val `yield` = 10

val ** = "power"

注意:可用但可读性不好

赋值:

和Python1样方便的赋值方式:

val x,y = 0 //赋同1初始值

val (x,y) = (10, "hello") //同时定义多个变量,注意:val x,y=10,"hello"是毛病的

更花:

val x::y = List(1,2,3,4)  // x = 1, y = List(2,3,4)

val List(a,b,c) = List(1,2,3) // a = 1, b = 2, c = 3

进1步花样:

val Array(a, b, _, _, c @ _*)

= Array(1, 2, 3, 4, 5, 6, 7)

//也能够用List,Seq

a // 1

b // 2

c // Array(5, 6, 7), _*匹配0个到多个

基本类型:

Int, Long, Double, Byte, Short, Char, Float, Double, Boolean

编译时Scala自动对应到Java原始类型,提高运行效力。Unit对应java的void

用asInstanseOf[T]方法来强迫转换类型:

def i = 10.asInstanceOf[Double] // i: Double = 10.0

List('A','B','C').map(c=>(c+32).asInstanceOf[Char]) // List('a','b','c')

用isInstanceOf[T]方法来判断类型:

val b = 10.isInstanceOf[Int] // true

注意:

无++,--操作,但可以+=, -=,以下:

var i = 0

i++  //报错,无此操作

i+=1 // 1

i--  //报错,无此操作

i-=1 // 0

类型转换:

101".toInt // 101,无需Integer.parseInt("101");

"3.14".toFloat // 3.14f

101.toString

3.14.toString

转换全部列表:

List("1","2","3") map (_.toInt) // List(1,2,3)

List("1","2","3") map Integer.parseInt // List(1,2,3)

格式化:

"my

name is %s, age is %d."format("james",

30)// my name is james, age is 30.

注意:format还可以这么用

"%s-%d:%1$s

is %2$d." format ("james", 30) // james⑶0:james

is 30.

"%2$d age's man %1$s: %2$d" format ("james",

30) // 30 age's man james: 30

==和eq

Scala的==很智能,他知道对数值类型要调用Java中的==,ref类型要调用Java的equals()

在java中为false,在scala中为true

参考:http://blog.csdn.net/lyrebing/article/details/19835461

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值