目录

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~127Short16位有符号补码整数-32768~32767Int32位有符号补码整数-2147483648~2147483647Long64位有符号补码整数-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中,类中的函数称为方法。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: