1、字符串输出3种方式
方式一:格式化输出
代码具体实现:
package com.study.scala01
object Scala_01 {
def main(args: Array[String]): Unit = {
var str1:String="hello"
var str2:String="word!"
println(str1+str2)
var name:String="tom"
var age:Int=10
var sal:Float=10.34f
var height:Double=180.15
//格式化输出
printf("名字=%s 年龄是%d 薪水是.2f 高薪是.3f",name,age,sal,height)
}
}
启动程序,控制台输出打印的信息:
方式二:编译器会去解析输出
具体代码实现:
package com.study.scala01
object Scala_01 {
def main(args: Array[String]): Unit = {
var str1:String="hello"
var str2:String="word!"
println(str1+str2)
var name:String="tom"
var age:Int=10
var sal:Float=10.34f
var height:Double=180.15
//scala支持使用$输出的内容,编译器会去解析$对应的变量
println(s"\n个人信息列表如下: \n名字$name \n年龄$age \n薪水$sal")
}
}
启动程序,控制台输出打印的信息:
若想对属性的参数添加,可以对代码修改如下:
//如果在字符串中出现了类似{age+10},则表达{}是一个表达式
println(s"\n个人信息列2表如下: \n名字${name} \n年龄${age+10} \n薪水${sal*100}")
启动程序,控制台输出打印的信息:
小结:Scala输出的三种方式
(1)字符串通过+号连接(类似java)
(2)printf用法(类似C语言)字符串通过%传值
(3)字符串通过$引用(类似PHP)
2、关联Scala源码
代码实现:
package com.study.scala01
object Scala_02 {
def main(args: Array[String]): Unit = {
var arr=new Array[Int](10)
//对代码进行格式化的快捷键ctrl+alt+l
for (item <-arr){
println("item="+item)
}
}
}
启动程序,控制台输出打印的信息:
查看源码
弹出
拷贝源码包:scala-sources-2.12.4.tar,放在lib文件下
还需要对这个包进行解压,再进行源码关联,关联后:
3、文档注释
具体代码:
package com.study.scala01
object Scala_03 {
def main(args: Array[String]): Unit = {
println("HelloWord")
}
/**
* @deprecated 过期了
* @example
* 输入n1=10 n2=20 return 30
* @param n1
* @param n2
* @return 和
*/
def sum(n1:Int,n2:Int){
return n1+n2
}
}
保存(ctlrl+S)
cmd窗口执行:
弹出cmd窗口,输入:scaladoc
输入生成文档的类,执行命令:scaladoc -d d:/mydoc scala_03.scala
文件夹查看,已经超过生成了
4、基本变量的使用
代码实现
package com.study.scala01
object Scala_04 {
def main(args: Array[String]): Unit = {
//编译器,动态的(逃逸分析)
var age:Int=10
var name:String="tom"
var height:Double=10.9
var isPass:Boolean=true
var score:Float=70.9f
//在scala中,小数默认为Double,整数默认为:Int
println(s"${age} ${isPass}")
}
}
启动程序,控制台输出打印的信息:
类型转换、数据插入到转换位置
具体代码实现:
package com.study.scala01
object Scala_04 {
def main(args: Array[String]): Unit = {
var num1:Int=10
println(num1.toDouble + "\t" +num1.toString + 2020.toDouble)
}
}
启动程序,控制台输出打印的信息:
5、Scala整型
代码实现:
package com.study.scala01
object Scala_04 {
def main(args: Array[String]): Unit = {
println("long的最大值:"+Long.MaxValue+"~"+ Long.MinValue)
}
}
启动程序,控制台输出打印的信息:
6、for循环遍历
代码实现:
object Scala_04 {
def main(args: Array[String]): Unit = {
//for(i <- 表达式),表达式1 to 10返回一个Range(区间)
//每次循环将区间中的一个值赋给i
for (i <- 1 to 10)
println(i)
}
}
启动程序,控制台输出打印的信息:
7、数据循环
代码实现:
package com.study.scala01
object Scala_04 {
def main(args: Array[String]): Unit = {
//for(i <- 数组)
val arr = Array("a", "b", "c")
for (i <- arr)
println(i)
}
}
启动程序,控制台输出打印的信息:
高级循环,执行代码:
//高级for循环
//每个生成器都可以带一个条件,注意:if前面没有分号
for(i <- 1 to 3; j <- 1 to 3 if i != j)
print((10 * i + j) + " ")
println()
启动程序,控制台输出打印的信息:
for推导式
package com.study.scala01
object Scala_04 {
def main(args: Array[String]): Unit = {
//for推导式:如果for循环的循环体以yield开始,则该循环会构建出一个集合
//每次迭代生成集合中的一个值
val v = for (i <- 1 to 10) yield i * 10
println(v)
}
}
启动程序,控制台输出打印的信息:
8、定长数组和变长数组
代码实现:
package com.study.scala01
import scala.collection.mutable.ArrayBuffer
object Scala_04 {
def main(args: Array[String]): Unit = {
//初始化一个长度为8的定长数组,其所有元素均为0
val arr1 = new Array[Int](8)
//直接打印定长数组,内容为数组的hashcode值
println(arr1)
//将数组转换成数组缓冲,就可以看到原数组中的内容了
//toBuffer会将数组转换长数组缓冲
println(arr1.toBuffer)
//注意:如果new,相当于调用了数组的apply方法,直接为数组赋值
//初始化一个长度为1的定长数组
val arr2 = Array[Int](10)
println(arr2.toBuffer)
//定义一个长度为3的定长数组
val arr3 = Array("hadoop", "storm", "spark")
//使用()来访问元素
println(arr3(2))
//////////////////////////////////////////////////
//变长数组(数组缓冲)
//如果想使用数组缓冲,需要导入import scala.collection.mutable.ArrayBuffer包
val ab = ArrayBuffer[Int]()
//向数组缓冲的尾部追加一个元素
//+=尾部追加元素
ab += 1
//追加多个元素
ab += (2, 3, 4, 5)
//追加一个数组++=
ab ++= Array(6, 7)
//追加一个数组缓冲
ab ++= ArrayBuffer(8,9)
//打印数组缓冲ab
//在数组某个位置插入元素用insert
ab.insert(0, -1, 0)
//删除数组某个位置的元素用remove
ab.remove(8, 2)
println(ab)
}
}
启动程序,控制台输出打印的信息:
9、遍历数组
好用的until会生成脚标,0 until 10 包含0不包含10
代码实现:
package com.study.scala01
import scala.collection.mutable.ArrayBuffer
object Scala_04 {
def main(args: Array[String]): Unit = {
//初始化一个数组
val arr = Array(1,2,3,4,5,6,7,8)
//增强for循环
for(i <- arr)
println(i)
println()
//好用的until会生成一个Range
//reverse是将前面生成的Range反转
for(i <- (0 until arr.length).reverse)
println(arr(i))
}
}
启动程序,控制台输出打印的信息:
10、数组转换
yield关键字将原始的数组进行转换会产生一个新的数组,原始的数组不变
代码实现:
package com.study.scala01
import scala.collection.mutable.ArrayBuffer
object Scala_04 {
def main(args: Array[String]): Unit = {
//定义一个数组
val arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
//将偶数取出乘以10后再生成一个新的数组
val res = for (e <- arr if e % 2 == 0) yield e * 10
println(res.toBuffer)
//更高级的写法,用着更爽
//filter是过滤,接收一个返回值为boolean的函数
//map相当于将数组中的每一个元素取出来,应用传进去的函数
val r = arr.filter(_ % 2 == 0).map(_ * 10)
println(r.toBuffer)
}
}
启动程序,控制台输出打印的信息:
集合
序列
代码实现:
package com.study.scala01
import scala.collection.mutable.ArrayBuffer
object Scala_04 {
def main(args: Array[String]): Unit = {
//创建一个不可变的集合
val lst1 = List(1,2,3)
//将0插入到lst1的前面生成一个新的List
val lst2 = 0 :: lst1
val lst3 = lst1.::(0)
val lst4 = 0 +: lst1
val lst5 = lst1.+:(0)
//将一个元素添加到lst1的后面产生一个新的集合
val lst6 = lst1 :+ 3
val lst0 = List(4,5,6)
//将2个list合并成一个新的List
val lst7 = lst1 ++ lst0
//将lst1插入到lst0前面生成一个新的集合
val lst8 = lst1 ++ lst0
//将lst0插入到lst1前面生成一个新的集合
val lst9 = lst1.:::(lst0)
println(lst9)
}
}
启动程序,控制台输出打印的信息:
可变的序列
代码实现:
package com.study.scala01
import scala.collection.mutable.{ArrayBuffer, ListBuffer}
object Scala_04 extends App{
//构建一个可变列表,初始有3个元素1,2,3
val lst0 = ListBuffer[Int](1,2,3)
//创建一个空的可变列表
val lst1 = new ListBuffer[Int]
//向lst1中追加元素,注意:没有生成新的集合
lst1 += 4
lst1.append(5)
//将lst1中的元素最近到lst0中, 注意:没有生成新的集合
lst0 ++= lst1
//将lst0和lst1合并成一个新的ListBuffer 注意:生成了一个集合
val lst2= lst0 ++ lst1
//将元素追加到lst0的后面生成一个新的集合
val lst3 = lst0 :+ 5
println("一个可变lst0列表"+lst0)
println("一个可变lst1列表"+lst1)
println("一个可变lst2列表"+lst2)
println("一个可变lst3列表"+lst3)
}
不可变的Set
代码实现:
package com.study.scala01
import scala.collection.mutable
object Scala_04 extends App{
val set1 = new mutable.HashSet[Int]()
//将元素和set1合并生成一个新的set,原有set不变
val set2 = set1 + 4
//set中元素不能重复
val set3 = set1 ++ Set(5, 6, 7)
val set0 = Set(1,3,4) ++ set1
println(set0.getClass)
println()
println(set1.getClass)
println()
println(set2.getClass)
println()
println(set3.getClass)
}
启动程序,控制台输出打印的信息:
可变的Set
代码实现:
package com.study.scala01
import scala.collection.mutable
object Scala_04 extends App{
//创建一个可变的HashSet
val set1 = new mutable.HashSet[Int]()
//向HashSet中添加元素
set1 += 2
//add等价于+=
set1.add(4)
set1 ++= Set(1,3,5)
println(set1)
//删除一个元素
set1 -= 5
set1.remove(2)
println(set1)
}
启动程序,控制台输出打印的信息:
Map
代码实现:
package com.study.scala01
import scala.collection.mutable
object Scala_04 extends App{
val map1 = new mutable.HashMap[String, Int]()
//向map中添加数据
map1("spark") = 1
map1 += (("hadoop", 2))
map1.put("storm", 3)
println(map1)
//从map中移除元素
map1 -= "spark"
map1.remove("hadoop")
println(map1)
}
启动程序,控制台输出打印的信息: