文章目录

1.什么是Scala1.1 为什么要学习Scala?1.2 Scala特点

2.伴生类和伴生对象2.1 用Scala写一个HelloWorld程序scala文件在编译后会生成.class字节码文件,因为scala是通过伴生对象object来实现静态的,所以在编译后会生成两个文件。HelloScala$.class用于存放静态代码,而HelloScala.class存放的是伴生类中的代码。

3.Scala中的变量和注释3.1 注释3.2 变量和常量var和val的区别变量使用规则:

4.Scala字符串输出5.Scala标准输入5.1 键盘输入

6.Scala的数据类型6.1 要点6.2 自动类型转换6.3 强制类型转换原码 补码 反码

1.什么是Scala

Scala将面向对象和函数式编程结合成一种简洁的高级语言。Scala的静态类型有助于避免复杂应用程序中的错误。

1.1 为什么要学习Scala?

Spark基于内存的大数据计算框架,而Spark就是Scala开发的。所以为了学习好Spark需要掌握Scala语言。

1.2 Scala特点

Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程 Scala源代码会被编译成java字节码.class,然后运行在JVM上,并且可以调用现有的java类库,实现两种语言的无缝对接 Scala单作为一门编程语言来看,非常简洁高效 Scala参照了java的设计思想

2.伴生类和伴生对象

在scala中没有static关键字,使用object关键字来实现静态方法的功能。 class用来定义一个类。

2.1 用Scala写一个HelloWorld程序

Scala使用伴生对象来表示静态的属性和方法,object中的所有属性和方法默认都是静态的。 在scala中伴生类和伴生对象加起来等于java的一个类 伴生对象也可以单独存在,如果伴生对象单独存在的话,就叫做单例对象。

scala文件在编译后会生成.class字节码文件,因为scala是通过伴生对象object来实现静态的,所以在编译后会生成两个文件。HelloScala$.class用于存放静态代码,而HelloScala.class存放的是伴生类中的代码。

如果Scala代码中只依赖Java中的库,在cmd中可以通过java来直接运行scala的字节码文件,否则java要添加scala的类库。

3.Scala中的变量和注释

3.1 注释

单行注释: 多行注释: 文档注释: 和java中注释用法一致

3.2 变量和常量

常量:在程序执行的过程中,其值不会被改变的变量 java中的final如果加static才会被放入到常量池中,否则会作为不可修改的变量存储在堆栈中。 写在object伴生对象中才是常量,写在main方法中不属于常量

var和val的区别

val是不可变的,var修饰的变量的值是可以修改改变的

变量使用规则:

//1.声明变量的时候,类型是可以进行省略的,编译器自动推导

//只能推断固定的类型

val c=30;//此处的c为int类型,使用类型推断

//2.类型确定之后,就不能修改,scala是强类型语言

//3.声明变量的时候,必须要有初始值

//4.在定义或者声明一个变量的时候,可以使用var或val来修饰,var修饰的变量可以改变,而val修饰的变量是不能进行修改的

//5.var修饰的对象引用可以改变,val修饰的对象不可以改变,但是对象的状态(值)却是可以进行改变的。

4.Scala字符串输出

//重复字符串拼接,将字符串输出多次

println("mao".*(100))

//字符串模板(插值字符串):通过$获取变量的值

s"${}"

var age = 11;

var name = "feidamao"

val value = s"${age+11}岁的" + s"${name}"

printf("%s",value)

//原始字符串 """"""

val value1=

"""

|select

| id,

| name,

| age

|from user

|""".stripMargin

printf("%s",value1)

5.Scala标准输入

5.1 键盘输入

object Stdin{

def main(args: Array[String]): Unit = {

println("欢迎来到。。。")

println("请输入您的名称:")

val name:String=StdIn.readLine()

println("请输入您的年龄")

val age:Int=StdIn.readInt()

println(s"欢迎${age}岁的${name}")

}

}

6.Scala的数据类型

6.1 要点

Scala中一切数据都是对象,都是Any的子类 Scala中的数据类型分为两大类:数值类型和引用类型,不管是值类型还是引用类型都是对象 Scala数据类型依然遵守低精度类型向高精度类型,自动转换(隐式转换)。 Scala中的StringOps是对java中的String增强 Unit:对应java中的void,用于方法返回值的位置,表示方法没有返回值。Unit是一个数据类型,只有一个对象(),Void不是数据类型,只是一个关键字。 Null是一个类型,只有一个对象为null,它是所有引用类型的子类 Nothing,是所有数据类型的子类,主要用在一个函数没有明确的返回值(比如出现异常)的时候使用,因为这样可以把抛出的返回值,返回给任何的变量或者函数。 代码本质:任何代码都会被当做代码块执行,最终将最后一行代码的返回值 返回。

6.2 自动类型转换

a.自动提升原则:有多种类型的数据进行混合运算的时候,系统会首先自动将所有数据的类型转换成精度大的那种数据类型,然后再进行计算。 b.把精度大的数值类型赋值给精度小的数值类型的时候,就会报错,反之就会进行数据类型转换。 c.(byte,short)和char之间不能相互自动转换 d.byte,short,char它们三者可以计算,在计算的时候首先转换为int类型。

6.3 强制类型转换

自动转换的逆过程,将精度大的数值类型转换为小的数值类型,使用时要加上强制类型转换函数,但是可能会造成精度降低或者溢出,格外要注意。 数值类型向字符串类型转换的时候,直接.toString即可。

//强制类型转换

val l1:Long =150

var l2:Int=l1.toInt

var l3:String=l1.toString

println(l2)

println(l3)

有的时候要转换两步:如

var int1:Int="12.0".toDouble.toInt

否则会报错

原码 补码 反码

符号位为正时,原码=补码=反码 符号位为负时, 反码=原码符号位不变,其他位取反 补码=原码符号位不变,其他位取反再加1

精彩内容

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