scala的小知识点

一、标识符命名规则
      1、以字母或下划线开头,后接字母、数字、下划线
      2、以操作符开头,且只包含操作符(+ - * / # !等)
      3、用` `反引号包括任意字符,及时scala的39个关键字也可以

二、变量与常量
      1.变量  var。声明变量时,需要赋初值。
      2.常量  val。常量声明后,其值不可变。类似java的final。
      3.var  修饰的对象,其对象地址可变,对象中的属性值可变。
      4.val  修饰的对象,其对象地址不可变,对象中的属性值可变。
      5.scala中没有java中static关键字。由于scala属于完全面向对象的函数,所以没有静态语法。为了能模拟静态语法,采用伴生对象单例方式调用方法。

注意:伴生对象与伴生类
        伴生对象利用单例模式模拟静态语法,所以scala中需要用到静态语法的地方都在伴生对象中执行

三、单例模式
     1.懒汉式

//  懒汉式,线程不安全
//  懒加载的方式
public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
  
    public static Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}


//  懒汉式,线程安全
//  懒加载的方式
public class Singleton {  
    private static Singleton instance;  
    private Singleton (){}  
    public static synchronized Singleton getInstance() {  
    if (instance == null) {  
        instance = new Singleton();  
    }  
    return instance;  
    }  
}

    2.懒汉式,线程安全

//   饿汉式
//   类加载时就初始化
public class Singleton {  
    private static Singleton instance = new Singleton();  
    private Singleton (){}  
    public static Singleton getInstance() {  
    return instance;  
    }  
}

四、scala中Unit类型、Null类型、Nothing类型
       Unit类型:表示无值,和java中的void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
       Null类型:null,Null类型只有一个实例值null。Null可以赋值给任意引用类型(AnyRef),但不能赋值给值类型(AnyVal)。
       Nothing类型:Nothing类型在scala中的类最底层;他是任何其他类型的子类型。当一个函数,我们确定没有正常返回值,可以用Nothing来指定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋给其他的函数或者变量(兼容性)

五、scala中数值类型转换
       基本原则:自动提升(隐式转换)   强制类型转换
       自动提升:Byte/Short/Char 可以运算。逻辑是都转换为Int
       强制类型转换:高精度到低精度。需要使用.toInt/.toDouble等方法

六、Scala的运算符
       1.除法。整数除和小数除有区别。整数除,及时返回值的小数类型,结果仍是整数除的取整部分。小数除,会把小数部分显示
       2.==和equals。   
               java: == 表示变量本身值,表示两个对象在内存中的首地址;equals表示两个对象中的内容是否一致
               scala:   ==  类似java中的equals,比较对象内容;eq类似java中的==,比较地址

七、scala中的For循环
       1.To    for(i <- 1 To 3){}  左右闭合
       2.Until                            左闭右开
       3.循环守卫

for(i <- 1 to 3 if i != 4){
    println("i=",i)
}

//  等价于
for(i <- 1 to 3){
  if(1 != 4){
   println("i=",i) 
 }
}

   4.By  循环步长  for(i <- 1 to 10 by 2)
   5.嵌套循环  for(i <- 1 to 3;j <- 2 to 6){}

八、循环中断
    1.采用异常的方式退出循环
    2.采用scala自带的函数退出循环

import scala.util.control.Breaks

def main(args:Array[String]):Unit = {
    Breaks.breakable(
      for(elem <- 1 to 10){
         println(elem)
         if(elem == 5) Breaks.break()
     }
    )
    println("正常结束循环")
}

    3.对break进行省略(静态导入)

import scala.util.control.Breaks._

object TestBreak {
    def main(args:Array[Sting]):Unit = {

        breakable {
            for(elem <- 1 to 10){
               println(elem)
               if (elem == 5) break
            }
        }
        println("正常循环结束")
    }
}

  九、函数和方法的区别
    1.为完成某一功能的程序语句的集合,称为函数
    2.类中的函数称之为方法
    3.函数没有重写和重载的概念;方法可以进行重载和重写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值