Scala---数据基础

一、数据类型

二、变量和常量的声明

  • 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int = 10
  • 常量不可再赋值
1./**
2.  * 定义变量和常量
3.  * 变量 :用 var 定义 ,可修改 
4.  * 常量 :用 val 定义,不可修改
5.  */
6.  var name = "zhangsan"
7.  println(name)
8.  name ="lisi"
9.  println(name)
10.  val gender = "m"
11.  // gender = "m"//错误,不能给常量再赋值

三、类和对象

  • 创建类
1.class Person{
2.  val name = "zhangsan"
3.  val age = 18
4.  def sayName() = {
5.    "my name is "+ name
6.  }
7.}
  • 创建对象
1.	object Lesson_Class {
2.  def main(args: Array[String]): Unit = {
3.    val person = new Person()
4.    println(person.age);
5.    println(person.sayName())
6.  }
7.}

  • 对象中的apply方法

object中不可以传参,当创建一个object时,如果传入参数,那么会自动寻找object中的相应参数个数的apply方法。

1./**
2.* Object 相当于单例对象,不能传参
3.* 如果在创建Object时传入参数,那么运行代码时会自动寻找Object中相应参数个数的apply方法
4.*/
5.object LessonObj {
6.  def apply(name:String) = {
7.    println(s"name is $name")
8.  }
9.  def apply(name:String,age:Int) = {
10.    println(s"name is $name,age is $age")
11.  }
12.  def main(args: Array[String]): Unit = {
13.     LessonObj("zhangsan")
14.     LessonObj("zhangsan",18)
15.  }
16.}
  • 伴生类和伴生对象
1.class Person(xname :String , xage :Int){
2.  var name = Person.name
3.  val age = xage
4.  var gender = "m"
5.  def this(name:String,age:Int,g:String){
6.    this(name,age)
7.    gender = g
8.  }
9.
10.  def sayName() = {
11.     "my name is "+ name
12.  }
13.
14.}
15.
16.object Person {
17.  val name = "zhangsanfeng"
18.
19.  def main(args: Array[String]): Unit = {
20.    val person = new Person("wagnwu",10,"f")
21.    println(person.age);
22.    println(person.sayName())
23.    println(person.gender)
24.  }
25.}

注意点:

  1. 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。
  2. scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
  3. scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。

重写构造函数的时候,必须要调用默认的构造函数。

  1. class 类属性自带getter ,setter方法。
  2. 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
  3. 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。

四、if else

1./**
2.* if else 
3.*/
4.val age =18 
5.if (age < 18 ){
6.println("no allow")
7.}else if (18<=age&&age<=20){
8.println("allow with other")
9.}else{
10.println("allow self")
11.}

五、for ,while,do…while

1、to和until 的用法(不带步长,带步长区别)

1./**
2.* to和until
3.* 例:
4.* 1 to 10 返回1到10的Range数组,包含10
5.* 1 until 10 返回1到10 Range数组 ,不包含10
6.*/
7.
8.println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
9.println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
10.
11.println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9
12.println(1.to(10, 2)) 
13.
14.println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9
15.println(1.until(10))//与上面等价
16.
17.println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7

创建for循环

1./**
2.* for 循环
3.* 
4.*/
5.for( i <- 1 to 10 ){
6. println(i)
7.}

  1. 创建多层for循环

1.//可以分号隔开,写入多个list赋值的变量,构成多层for循环
2.//scala中 不能写count++ count-- 只能写count+
3.var count = 0;
4.for(i <- 1 to 10; j <- 1 until 10){
5.  println("i="+ i +", j="+j)
6.  count += 1
7.}
8.println(count);
9.
10.//例子: 打印小九九
11.for(i <- 1 until 10 ;j <- 1 until 10){
12.  if(i>=j){
13.    print(i +" * " + j + " = "+ i*j+" ")
14.  }
15.  if(i==j ){
16.    println()
17.  }
18.
19.}
  1. for循环中可以加条件判断,可以使用分号隔开,也可以不使用分号

1.//可以在for循环中加入条件判断
2.for(i<- 1 to 10 ;if (i%2) == 0 ;if (i == 4) ){
3.  println(i)
4.}
  1. scala中不能使用count++,count—只能使用count = count+1 ,count += 1

  2. for循环用yield 关键字返回一个集合

  3. while循环,while(){},do {}while()

1.//将for中的符合条件的元素通过yield关键字返回成一个集合
2.val list = for(i <- 1 to 10 ; if(i > 5 )) yield i 
3.for( w <- list ){
4.  println(w)
5.}
6.
7./**
8.* while 循环
9.*/
10.var index = 0 
11.while(index < 100 ){
12.  println("第"+index+"次while 循环")
13.  index += 1 
14.}
15.index = 0 
16.do{
17.  index +=1 
18.  println("第"+index+"次do while 循环")
19.}while(index <100 )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/194074.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于IGT-DSER实现工业触摸屏与PLC设备之间WIFI无线通讯

本文是基于IGT-DSER系列智能网关设备实现工业触摸屏与PLC设备之间WIFI无线通讯的案例。PLC之间无线通讯的案例 网络结构如下图&#xff0c;触摸屏通过网线连接IGT-DSERWIFI智能网关&#xff0c;实现WIFI的AP功能&#xff1b;一台串口型PLC和一台网口型PLC分别通过IGT-WSER智能网…

数据同步工具调研选型:SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比

产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品&#xff0c;支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据&#xff0c;已应用于数百家企业生产&#xff0c;也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主…

2023数维杯国际赛数学建模竞赛选题建议及B题思路讲解

大家好呀&#xff0c;2023年第九届数维杯国际大学生数学建模挑战赛今天早上开赛啦&#xff0c;在这里先带来初步的选题建议及思路。 目前团队正在写B题和D题完整论文&#xff0c;后续还会持续更新哈&#xff0c;大家三连关注一下防止迷路。 注意&#xff0c;本文只是比较简略…

【Linux系统化学习】探索进程的奥秘 | 第一个系统调用

个人主页点击直达&#xff1a;小白不是程序媛 Linux系列专栏&#xff1a;系统化学习Linux 目录 进程的概念 进程的管理 描述进程——pcb 组织进程 进程在排队 Linux下的进程 Linux组织进程 查看进程 查看可执行程序的进程 第一个系统调用 "杀掉进程" 进程…

租赁小程序|租赁系统一种新型的商业模式

租赁市场是一个庞大的市场&#xff0c;它由出租人和承租人组成&#xff0c;以及相关的中介机构和供应商等。随着经济的发展和人们对灵活性的需求增加&#xff0c;租赁市场也在不断发展和壮大。特别是在共享经济时代&#xff0c;租赁市场得到了进一步的推动和发展。租赁系统是一…

2023年9月 少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(选择题)

2023年9月scratch编程等级考试一级真题 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、下列哪项内容是不可以修改的 A、角色名称 B、造型名称 C、背景名称 D、舞台名称 答案&#xff1a;D 考点分析&#xff1a;考查scratch相关知识&am…

03-关系和非关系型数据库对比

关系和非关系型数据库对比 关系型数据库(RDBMS)&#xff1a;MySQL、Oracl、DB2、SQLServer 非关系型数据库(NoSql)&#xff1a;Redis、Mongo DB、MemCached 插入数据结构的区别 传统关系型数据库是结构化数据,向表中插入数据时都需要严格的约束信息(如字段名,字段数据类型,字…

【装包拆包----泛型】

文章目录 装箱和拆箱泛型创建一个泛型数组泛型的上界泛型方法 装箱和拆箱 装箱&#xff1a; 把基本数据类型给到引用数据类型 public static void main(String[] args) {//自动装包//第一种装包Integer c 12;//第二种装包int a 7;Integer b a;//显示装包Integer aa Intege…

课程32:.Net Core Web API部署IIS

这里写目录标题 &#x1f680;前言前言一、服务器环境配置1.1 安装 ASP.NET Core模块/托管捆绑包1.2 检查是否安装成功 二、项目发布2.1 选择发布方式2.2 发布配置2.3 发布 三、服务器部署3.1 IIS添加网站3.2 数据库链接配置3.3 让IIS支持.NET Web Api3.4 验证 四、最后 &#…

idea中git 移除对某个文件的跟踪

应用场景如下 某个log 文件&#xff0c;被同事用git 提交到了服务器&#xff0c;本地拉去之后我们的跟踪也会受影响 取消跟踪的方法如下&#xff1a; 删除本地缓存 git rm --cached "logs/test.log" 提交无效的log git commit -m "ignore log" 再将lo…

Postman接口Mock Servier服务器

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 应用场景&#xff1a;后端的接口还没有开发完成&#xff0c;前端的业务需要调用后端的接口&#xff0c;可以使用mock模拟。 一…

Linux_虚拟机常用目录汇总

根目录&#xff08;cd /&#xff09;&#xff1a;/ 表示根目录&#xff0c;cd和 / 之间有个空格&#xff01; 用户目录&#xff08;cd ~&#xff09;&#xff1a;~ 表示用户目录&#xff0c;也称为家目录。cd 和 ~ 之间有个空格&#xff01; 当前路径&#xff1a;执行 pwd 指令…

微信加好友操作频繁了,怎么办?

近来&#xff0c;微信的风控是越来越严重&#xff0c;因为本身微信是作为一个社交软件&#xff0c;但流量大适合用来做私域营销。在日常使用微信中&#xff0c;我们也要了解下微信加好友的规则。 目前微信加人的规则是&#xff1a; 1、通过附近人功能加人上限15人/天&#xf…

【Linux系统编程十八】:(基础IO5)--动静态库共享/动静态加载问题(涉及地址空间)

【Linux系统编程十八】&#xff1a;动静态库共享/动静态加载问题(涉及地址空间&#xff09; 一.可执行程序如何被加载的1.加载之前2.加载之后①如何执行第一条命令②缺页中断/与地址空间建立联系 二.动态库如何加载的三.动态库如何实现多进程间共享的 一.可执行程序如何被加载的…

dewarp:数据变换

一. 效果 输入图片&#xff1a;test.jpg 前向场:test.npy 输出图片&#xff1a;dewarp_img.jpg 二. 代码 import os import cv2 import numpy as npdef align_flow(image, flow):"""flow: -1~1, 非文本区域是nanbm_flow: 对齐的bm&#xff0c;可以直接对图…

突发!奥特曼宣布暂停ChatGPT Plus新用户注册!

大新闻&#xff01;就在刚刚&#xff01; OpenAI的CEO Sam Altman宣布暂停ChatGPT Plus 新用户注册&#xff01; Sam Altman对此解释道&#xff1a; 由于OpenAI开发日后ChatGPT使用量的激增超出了我们的承受能力&#xff0c;我们希望确保每个人都有良好的体验。 您仍然可以在a…

HTML易忽略的角落【目录】

目前已有文章 **** 篇 本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 …

好用且强大——JNPF永远的神

一款开源且强大的工具 风流数年&#xff0c;只看今朝&#xff0c;Linux 让我们看到了开源驱动下的生产力&#xff0c;其实低代码和它一样&#xff0c;都是提高效率、降低成本的工具。 近 10 年间&#xff0c;JNPF 低代码平台如火如荼的发展起来&#xff0c;堪称黑马也不为过。这…

CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]

文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…

京东数据挖掘(京东运营数据分析):2023年宠物行业数据分析报告

随着社会经济的发展&#xff0c;人均收入水平逐渐提高&#xff0c;使得宠物成为越来越多家庭的成员&#xff0c;宠物数量不断增长。伴随养宠人群的增多&#xff0c;宠物相关产业的发展也不断升温&#xff0c;宠物经济规模持续增长。 根据鲸参谋平台的数据显示&#xff0c;在宠物…