Scala

目录

1.scala字符串操作

1.1 字符的操作

1.2 从控制台读取输入并输出

1.3 从文件读取并输出字符串

1.4 将数据写入文件

1.5 判断字符串是否为空

Scala数据类型

1.1 整型分类

1.2 类型转换

 函数式编程

1.1 函数基本语法        

完成的代码如下:

1.2 函数和方法的区别


 


1.scala字符串操作

1.1 字符的操作

package day3

/**
 * @className: day3.StringTest
 * @author: Star
 * @create: 2022-07-17 14:42
 */
object StringTest {
  def main(args: Array[String]): Unit = {
    val name = "祖冲之"
    val age = 28

    //字符串通过%传值d代表INT,s代表String类型;
    printf("%d岁的%s在上学",age,name)
    println()

    //模板字符串:通过$获取变量的值;
    println(s"${age}岁的${name}结婚了")

    val num = 3.1415926f
    println(s"${num}是圆周率,最早是${name}算出来的。")
    //f格式化模板字符串
    println(f"${num}%3.2f是圆周率,最早是${name}算出来的。")

    //三引号表示字符串,保持多行字符串原格式输出;
    val sql = s"""
       |select *
       |from
       |  student where name="${name}"
       |and
       |  age >${age}
       |""".stripMargin //stripMargin表示边界,输出的时候不打印空格
    println(sql)

  }

}

1.2 从控制台读取输入并输出

package day3

import scala.io.StdIn

/**
 * @className: day3.StringTest2
 * @author: Star
 * @create: 2022-07-17 15:21
 */
object StringTest2 {
  def main(args: Array[String]): Unit = {
    //输出您的姓名
    println("请输出您的姓名:")
    val name = StdIn.readLine()

    println("请输入您的年龄:")
    val num = StdIn.readInt()

    //控制台输出;
    println(s"欢迎${name}访问方仪科技,您当前的等级是${num}vip")

  }
}

1.3 从文件读取并输出字符串

scala使用source.fromFile从文件读取内容。然后使用foreach(print(_)遍历并输出。

Source.fromFile("G:\\MyWoekSpease\\hadoop-test\\dream.txt").foreach(print(_))

1.4 将数据写入文件

PrintWritero()方法是写入文件,那么要写入,往哪里写,那就是要new一个写的地方,使用new File创建一个文件,以方便写入。

写入的时候,调用writer()方法。

因为是IO操作,因此最后需要关闭IO流操作。

//将数据写入文件
val writerIO = new PrintWriter(new File("datas/4.txt"))
    writerIO.write("this is a scala,I like scala")
    writerIO.close()

1.5 判断字符串是否为空

package day3

/**
 * @className: day3.IsNOEmpty
 * @author: Star
 * @create: 2022-07-17 18:34
 */
object IsNOEmpty {
  def main(args: Array[String]): Unit = {

    //判断字符串是否为空;
    def isEmpty(str: String): Boolean = {
      //trim()去除空格
      return str != null && !("".equals(str.trim))
    }

    println(isEmpty("有一个字符串在这里"))
  }
}

运行结果为:

 

Scala数据类型

scala中一切的数据都是对象,都是Aay的子类。分为两类,数值类(AnyVal)型和引用类型(AnyRef),当然他们也是对象。

scala也支持自动数据类型转换。StringOps是对Java中Sting的优化,String本来是引用数据类型,但是又传递的是值,因此scala对它进行了优化,成为StringOps。

Unit,对应Java的void,用于方法返回值的位置,表示这个方法没有返回值。Unit也是一个数据类型,它有一个对象(),而Java的void不是数据类型,只是一个关键字。

Null是一个类型,只有一个对象null,它是所有引用类型(Any)的子类。

1.1 整型分类

整型分类
数据类型详细描述数值区间(表示的范围)
Byte8位有符号补码整数-128~127
Short16位有符号补码整数-32768~32767
Int32位有符号补码整数-2147483648~2147483647
Long64位有符号补码整数-9223372036854775808~9223372036854775807

注意:“有符号补码整数”,八个零表示一个零,1开头为负,0开头为正。 

1.2 类型转换

scala也支持自动数据类型转换。从小转大直接转化,从大转小需要强制转化,但是会对手精度。


 函数式编程

提起函数式编程就不得不回顾一下面向对象编程。

面向对象,万物皆对象。怎末理解面向对象呢。

我们要解决一个问题,分解对像,行为、属性,然后通过对象的关系以及行为的调用来解决问题。那么,这里的对象就是用户,行为就是用户进行的登录等行为,属性就是用户名,密码等。

面向对象就是对属性和行为进行包装。万物皆对象,都可以包装。

举个例子:

把编程语言看成做饭,面像过程是一个蛋炒饭,面像对象是一个盖浇饭。

蛋炒饭做法就是把所有的菜和米饭混在一起做。你想吃啥炒饭就要提前和老板说好。

盖浇饭做饭时米饭和菜单独做,最后把菜盖在米饭上。那么改一个土豆丝,就是土豆丝盖浇饭,盖一个回锅肉就是回锅肉盖浇饭,我可以自由的盖。

回到编程领域,盖浇饭就比较好维护,可拓展性强。同一份米饭,盖上不同的菜就是不同午饭了。这一点炒饭做不到。

但是,炒饭比较入味,过程比较简单,一次到位。

函数式编程

函数式编程不关注计算机底层的具体执行,关注函数映射,也就是数学意义上的函数(函数映射)。

在Java中,int a = 1并不是数学意义上的a = 1,因为数学上的等就是不可改变的,而Java里是可以改变的。

在scala里面,声明变量推荐val声明,也就是不可改的常量。比如 val a:Int = 1。

以上总结一下,Scala既是面向对象的编程,也是函数式编程


1.1 函数基本语法        

关键字 函数名 (参数名:参数类型,参数名:参数类型) :函数的返回值类型 = {

                函数体

}

 代码如下:

def sum ( x : Int , y : Int ) : Int = {
    x + y
}

 函数的调用:

函数名(参数)

sum(3,10)

完整的代码如下:

def sum(x: Int, y: Int): Int = {
       x + y
    }

    val results = sum(3,10)

    println(results)

1.2 函数和方法的区别

函数:为完成某一功能的程序语句的集合。

方法:在scala中,类中的函数称为方法。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值