Scala第一天

1、 Scala 学习

在bg中创建Scala模块,导入3个org.scala-lang依赖 和 1个Java Compiler(Java 编译的插件) 、1个Scala Compiler(Scala 编译的插件)

(1) java类是class定义的,scala是object定义的

def : 定义方法的关键字

Unit : 无返回值,相当于java中的void

main方法需要放在object中才能运行 -- main名字不可以改,scala是根据名字识别main的

Array[String] : 参数类型(String类型的数组)

\] : 在scala代表泛型 {} 中是代码体 object Demo01HelloWorld { def main(args: Array\[String\]): Unit = { //java的方式 System.out.println("java") //scala的方式 // scala中很多代码都可以简写,底层和java是完全一样的 println("HelloWorld") } } (2) 一个scala文件经过编译后会出现两个class文件 : xx$.class 、 xx.class xx.class代码会调用xx$.class代码,其实scala代码本质上还是java代码,只是在java代码上做了一个封装。 两者底层是一模一样的,只是代码语法不一样。 java代码的.class文件可以反编译回.java代码, 而scala代码的.class文件只能反编译回.java代码。 ## 2、变量 val : 常量 -- 不能再指向其它的对象 var : 变量 如果后面不会对变量进行修改则使用val 在java中使用final实现常量val (1) scala 变量的类型可以自动推断,根据 "=" 右边的值,自动推断变量的类型 val str = "scala" // 可以自动推断出str是String类型 -- 可读性差 //也可以手动加上类型 val str: String = "scala" (2) 类型转换 : 想转什么类型直接 .toxx 即可 (toInt、toDouble、toString ...) 注意转换的类型是否正确 ## 3、方法(函数): java 中只能在类中定义方法 scala 可以在任何位置定义方法 方法 : 需要通过类的对象来调用的 函数 : 在任何地方都能定义,且直接调用的 (1) 函数简写 : 1、方法无参数 -- 可以省略括号 () 2、返回值类型可以自动推断, 根据返回值自动推断返回值类型 3、方法体中只有一行代码时 -- 可以省略大括号 {} 4、最后一行可以省略 return , 默认最后一行作为返回值 (2) 可变参数 : i: Int\* ## 4、数组 -- 快速创建 val arr: Array\[Int\] = Array(1, 2, 3, 4, 5, 6, 7, 8) ## 5、遍历 (1)增强for for (a \<- array) { println(a) } (2)通过下标索引 var i = 0 while (i \< arr.length) { // scala通过 () 取下标获取元素 val value: Int = arr(i) println(value) i += 1 // i++ // scala没有i++ } (3) foreach --- scala 特有的方法 arr.foreach(println) ## 6、 IO流 // 底层还是java的io流 val bs: BufferedSource = Source.fromFile("data/students.txt") // 读取所有行,得到一个迭代器 val lines: Iterator\[String\] = bs.getLines() // 增强for 遍历 for (line \<- lines) { println(line) } // scala特有的遍历方法 lines.foreach(println) ## 7、异常 -- scala语言默认将异常已经抛出去了,不需要管 try { 异常代码 } catch { // 匹配异常 case e : 异常类 =\> 异常处理 } finally { println("都会执行") } ## 8、 JDBC (1) 需要导入依赖 : \

相关推荐
byte轻骑兵1 小时前
【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
开发语言·c++
黑听人1 小时前
【力扣 简单 C】141. 环形链表
c语言·开发语言·数据结构·算法·leetcode
Blossom.1182 小时前
基于深度学习的智能图像分类系统:从零开始构建
开发语言·人工智能·python·深度学习·神经网络·机器学习·分类
缘友一世2 小时前
java设计模式[2]之创建型模式
java·开发语言·设计模式
cyc&阿灿3 小时前
Java中extends与implements深度解析:继承与接口实现的本质区别
java·开发语言
liujing102329295 小时前
Day13_C语言基础&项目实战
c语言·开发语言
周振超的5 小时前
c++编译第三方项目报错# pragma warning( disable: 4273)
开发语言·c++
JH30736 小时前
Java Stream API 在企业开发中的实战心得:高效、优雅的数据处理
java·开发语言·oracle
呆呆的小草9 小时前
Cesium距离测量、角度测量、面积测量
开发语言·前端·javascript
uyeonashi9 小时前
【QT系统相关】QT文件
开发语言·c++·qt·学习