Scala学习1
Scala是一种静态语言、面向对象的函数式编程语言。它的程序代码以.scala结尾,编译时会编译成.class字节码在jvm上运行。
类和方法默认是public的,不必显式声明public。
return是可选的,方法调用会默认返回最后一行表达式;
不需要再每行代码后面写";",如果是多行代码在一行则需要写";"
scala建议优先使用val常量,而不是var。这样能提升不变性和函数式风格。
scala中对象引用和调用方法之间的“.”是可以不写的,例如java中int a = 1*1;等同于scala中val a = 1.*(1)/val a = 1 * 1
从技术层面上看scala是没有运算符的,+、-、*、/、%、!=、>、>=、<、<=运算符都是数值对象提供的方法。
程序执行入口main函数
object Test1 {
def main(args: Array[String]) {
println("hello scala")
}
}
忽略main函数的可执行类
object Test1 extends App {
println("hello scala")
}
常量与变量的声明方式(变量声明后必须初始化)
val a=1
var b=1
函数的声明
循环与增强循环
def main(args: Array[String]) {
//输出从1到3
for(i<-1 to 3){ // 实际上是调用1.to(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。to()方法返回的是一个Range类的实例)
print(i+",") // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
}
println() // 换行输出
//输出从1到2,until方法不包含最后一个值
for(i<-1 until 3){ // 实际上是调用1.until(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。until()方法返回的是一个Range类的实例)
print(i+",") // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
}
println() // 换行输出
//输出从1到3
(1 to 3).foreach(i=>print(i+",")) // 使用Range类的foreach()方法,foreach()方法接收的的参数是一个函数值,所以需要在括号中提供一段代码体
}
元组
def main(args: Array[String]) {
//元祖和多重赋值-1
val (name, age, mail) = getPersonInfo();
println("姓名:"+name+"\n年龄"+age+"\n邮箱"+mail)
//元祖和多重赋值-2
val info = getPersonInfo()
println("姓名:"+info._1+"\n年龄"+info._2+"\n邮箱"+info._3)
}
//返回多个值的函数(姓名、年龄、邮箱)。java中通过对象、String数组和list,scala中使用元祖和多重赋值表现
def getPersonInfo()={
//创建包含3个对象的元祖
("zhangsan", "123", "zhangsan@126.com") //元祖是一个不变的对象序列,使用,分隔的值进行创建。
}
Scala学习1的更多相关文章
- Scala学习资源
Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
- 【Scala】Scala学习资料
Scala学习资料 java 树形 分类器_百度搜索 决策树分类器-Java实现 - CSDN博客 KNN分类器-Java实现 - CSDN博客 学习:java设计模式—分类 - 飞翔荷兰人 - 博客 ...
- Scala学习网址
scala学习网址为:https://twitter.github.io/scala_school/zh_cn https://www.zhihu.com/question/26707124
- Spark之Scala学习
1. Scala集合学习: http://blog.csdn.net/lyrebing/article/details/20362227 2. scala实现kmeans算法 http://www.t ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Scala学习笔记及与Java不同之处总结-从Java开发者角度
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...
- Scala学习(一)
最近在学习Scala,总结了一下比较基础的知识. 一.Scala简介 1.Scalable Language,是一门多范式的编程语言,是一种纯面向对象的语言,每个值都是对象. 2.特点:①Scalab ...
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
随机推荐
- TinyXml快速入门(一)
对于xml文件,目前的工作只是集中在配置文件和作为简单的信息文件来用,因此我不太喜欢使用msxml这种重量级的xml解析器,特别是使用msxml解析xml涉及到复杂的com类型转换,更是令人感觉繁琐. ...
- c++ map与 qt QMap insert 区别
当插入相同key的字段时, c++ map 会保留原来的字段, QMap 则会取代原来的字段.
- Cookie Version in J2EE
Cookie Version in J2EE 原文章:http://villadora.me/2014/05/06/cookie-version/ 在处理Cookie的时候发现不能处理servlet ...
- jdbc02
分层实现新闻管理系统 1.创建新闻信息实体类,jdbc配置文件以及工具类 public class News { // 新闻信息的实体类 private Integer id; //编号 privat ...
- 小学生之深入C#
一.深入C#数据类型 值类型传递和引用类型传递 方法的参数是值类型和引用类型 注意:值传递和引用传递判定依据是有没有ref 01.如果方法的参数类型本身就是引用类型,那么对参数值的修改会永久保存 例如 ...
- (转)SVN教程总结
文章原地址:http://www.cnblogs.com/armyfai/p/3985660.html SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本, ...
- MVC接收以post形式传输的各种参数
近日研究用wcf框架接收同事Android端以post形式传输的各种类型的参数,来做处理.但研究过程中问题比较多,首先键值对的形式是实现了,传输int,string类型都不成问题,但是到传输文件的时候 ...
- C#基础学习第二天(.net菜鸟的成长之路-零基础到精通)
1.加号的使用 在我们c#当中,如果想要两个字符串相连接,那么我们可以使用+号连接. 加号两边如果有一边是字符串,那么此时字符串起到了一个连接的作用. 如果加号两遍都是数字,那么加号起到一个相加 ...
- oracle过滤名字中含有_的行
select * from emp where ename like '%\_%' escape '\'; escape 定义转义字符串,这样转义字符串后的字符就是普通字符.
- 【推荐】Java工程师如何从普通成为大神值得一读
本文源自 http://www.hollischuang.com/archives/489 一点感悟 java作为一门编程语言,在各类编程语言中作为弄潮儿始终排在前三的位置,这充分肯定了java语言的 ...