Scala学习笔记(二):object、伴生对象和基本类
object
object 是只有一个实例的类。它的定义与Java中的class类似,如:
// 单例对象
object AppEntry {
def main(args: Array[String]): Unit = {
print("Hello World!")
}
}
其中有main方法,它与脚本运行方式不同,需要先编译(scalac),后运行,与java类似:

App
运行object,除了使用main方法,还可以直接继承trait(类似于Java中的接口)--App:
object AppEntry1 extends App {
print("Hello World, by extends App!")
}
伴生对象
与类同名的对象称为伴生对象。相反,该类是对象的伴生类。伴生类或对象可以访问其伴随的私有成员。将伴生对象用于方法和值,这些方法和值不是特定于伴生类的实例。
import scala.math._
case class Circle(radius: Double) {
import Circle._
def area: Double = calculateArea(radius)
}
object Circle extends App {
private def calculateArea(radius: Double): Double = Pi * pow(radius, 2.0)
val circle1 = new Circle(5.0)
print(circle1.area)
}
基本类
object BasicType extends App{
//1、基本类型
val int = 1
val short: Short = 2
val byte: Byte = 3
val long = 3L
val double = 3.23
val float = 3.23F
val boolean = false
val char = 'c'
//2、String类型
val string = "this is a string" //sequence of char
println(s"Hello, $string")
println(s"The answer is ${6 * 7}")
println(raw"No\\\\escape!") // No\\\\escape!
println(s"Has\\\\escape!") // Has\\escape!
println(f"${math.Pi}%.5f") //3.14159
val pi = "Pi"
println(f"$pi is approximately ${math.Pi}%.8f.")
//3、scala中的操作符(operator)和方法(method)
//scala中的基本类型提供了很多的操作符(比如1 + 2中的+),这些操作符实际上是方法
1 + 2
1.+(2)
1.+(2L) //方法 + 的重载
//4、方法的调用与操作符
val s = "Hello, world!"
s.indexOf('o') //这里的indexOf是方法
s indexOf 'o' //这里的indexOf是操作符
s indexOf ('o', 5)
//基本类型的部分操作符就是方法,在scala中,所有的方法都可以是操作符
//是方法还是操作符取决于你怎么用
//如果s.indexOf('o')这样用,那么indexOf是方法
//如果s indexOf 'o'这样用,那么indexOf是操作符
s.substring(1)
s substring (1,2)
//prefix操作符
-2.0
(2.0).unary_- //等于-2.0
//postfix操作符
s toLowerCase
//4、基本类型的其他的操作符
//4.1 数学运算 + - * / %
//4.2 关系运算 < > <= >= =
//4.3 逻辑运算 || && !
//4.4 位运算 & | ^ ~
}
Scala学习笔记(二):object、伴生对象和基本类的更多相关文章
- scala 学习笔记十 一 伴生对象
1.介绍 a.所谓伴生对象就是和某个class同名的object, 并且object 必须和class在同一个scala源文件中. b.在scala中,没有像java中的静态类,静态方法和静态成员等, ...
- [Scala]Scala学习笔记五 Object
1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 ...
- scala 学习笔记二 方法与函数
1.介绍 Scala 有方法与函数,二者在语义上的区别很小.Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量.换句话来说在类中定义的函数即是方法. Scala 中的方法跟 Java 的 ...
- [Scala]Scala学习笔记二 数组
1. 定长数组 如果你需要一个长度不变的数组,可以使用Scala中的Array. val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val str ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- AJax 学习笔记二(onreadystatechange的作用)
AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...
- Typescript 学习笔记二:数据类型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...
随机推荐
- docker测试时候命令无法补全的解决方法_docker
发现问题 在输入docker swarm 然后tab键不能像这样进行提示 和补全 tab 键也无法补全nginx容器名,下面是运行截图 解决方法: yum install -y bash-comple ...
- javascript中ajax的四大步骤
原生js中ajax写法一: function ajaxys(){ //1. 创建xhr对象 var xhr = new XMLHttpRequest();//XMLHttpRequest() // 2 ...
- index-document-shard
1.index.shard.document理解: a.每个index包含有多个document,index采用数据路由将document存放在shard中, b.算法(数据路由): shard = ...
- Spark MLlib 之 StringIndexer、IndexToString使用说明以及源码剖析
最近在用Spark MLlib进行特征处理时,对于StringIndexer和IndexToString遇到了点问题,查阅官方文档也没有解决疑惑.无奈之下翻看源码才明白其中一二...这就给大家娓娓道来 ...
- vim 语法着色完全配置
原文地址:http://blog.sina.com.cn/s/blog_878940b3010156ku.html 在终端输入:sudo vim /etc/vim/vimrc 打开配置文件.编辑命 ...
- Window Server 2008 R2 TFS2010 安装前的准备
前言 http://www.cnblogs.com/aehyok/p/3979707.html 这里简单介绍了安装windows Server 2008 R2系统,接下来就开始介绍安装Team Fou ...
- C# ConcurrentQueue实现
我们从C# Queue 和Stack的实现知道Queue是用数组来实现的,数组的元素不断的通过Array.Copy从一个数组移动到另一个数组,ConcurrentQueue我们需要关心2点:1线程安全 ...
- Centos或Windows中部署Zookeeper集群及其简单用法
一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件 ...
- 解决 Docker pull 出现的net/http: TLS handshake timeout 的一个办法
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"&q ...
- linux popen()与system()的区别
linux popen()与system()的区别 popen() 可以在调用程序和POSIX shell /usr/bin/sh 要执行的命令之间创建一个管道(请参阅sh-posix(1) ). p ...