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 = ...
随机推荐
- netty相关
https://my.oschina.net/jamaly/blog/272385两个客户端之间的交互 http://blog.csdn.net/a953713428/article/details/ ...
- memcache bug
用memcached有时会报错 the lowest two bytes of the flags array is reserved for pecl/memcache 将以前的 $mc-> ...
- oracle 变量
插入 日期时间 循环插入 declare total date:) ; begin .. LOOP insert into DQ_DATE(date_time) values ( total ); t ...
- Qt 4.8.2.+VS2008静态编译
一.下载Qt 4.8.2-opensource. 二.解压到C:\Qt\4.8.2_static 修改C:\Qt\4.8.2_static\projects.pro文件,删除demos,doc,exa ...
- [CGAL]带岛多边形三角化
CGAL带岛多边形三角化,并输出(*.ply)格式的模型 模型输出的关键是节点和索引 #include <CGAL/Triangulation_vertex_base_with_id_2.h&g ...
- 【.NET线程--进阶(一)】--线程方法详解
上篇博客从线程的基本概况开始着重讨论了线程,进程,程序之间的区别,然后讨论了线程操作的几个类,并通过实例来说明了线程的创建方法.本篇博客将会带大家更深入的了解线程,介绍线程的基本方法,并通过一个Dem ...
- wcstombs_s 宽字节转多字节
// crt_wcstombs_s.c // This example converts a wide character // string to a multibyte character str ...
- Shell获取某目录下所有文件夹的名称
查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/ba ...
- Java 基础【17】 异常与自定义异常
1.异常的分类 Throwable 是所有异常类的基类,它包括两个子类:Exception 和 Error. a. 错误 (Error) 错误是无法难通过程序来解决的,所以程序不应该抛出这种类型的对象 ...
- pandas基础用法——索引
# -*- coding: utf-8 -*- # Time : 2016/11/28 15:14 # Author : XiaoDeng # version : python3.5 # Softwa ...