Scala(二)

第2章 变量和数据类型

2.1 注释

Scala注释使用和Java完全一样。
注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
1)基本语法
(1)单行注释://
(2)多行注释:/* /
(3)文档注释:/
*
*
*/
2)代码规范
(1)使用一次tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移。
(2)或者使用ctrl + alt + L来进行格式化。
(3)运算符两边习惯性各加一个空格。比如:2 + 4 * 5。
(4)一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅。

2.2 变量和常量(重点)

常量:在程序执行的过程中,其值不会被改变的变量。
0)回顾:Java变量和常量语法
变量类型 变量名称 = 初始值 int a = 10
final常量类型 常量名称 = 初始值 final int b = 20
注意:java中的final如果加static才会被存放在常量池中,否则作为不可修改的变量存在堆栈中。
1)基本语法
var 变量名 [: 变量类型] = 初始值 var i:Int = 10
val 常量名 [: 常量类型] = 初始值 val j:Int = 20
注意:能用常量的地方不用变量。
2)案例实操
(1)声明变量时,类型可以省略,编译器自动推导,即类型推导。
(2)类型确定后,就不能修改,说明Scala是强数据类型语言。
(3)变量声明时,必须要有初始值。
(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。
(5)var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)。

package com.aa.chapter02

object Test01_Var {
  def main(args: Array[String]): Unit = {

    // 声明变量和常量
    val a: Int = 10
    var b: Int = 20


    // 常量值无法修改
    //    a = 20
    b = 30
    //    (1)声明变量时,类型可以省略,编译器自动推导,即类型推导
    val c = 30


    //    (2)类型确定后,就不能修改,说明Scala是强数据类型语言。

    //    b = "30"

    //    (3)变量声明时,必须要有初始值
    val d: Int = 0

//    var d1:Int = _
	
    val test02_Var = new Test02_Var()
    println(test02_Var.i)
    
    //    (4)var修饰的对象引用可以改变,val修饰的对象则不可改变,
    //    但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)
    val person0 = new Person02()
    var person1 = new Person02()

    // 引用数据类型的常量和变量能否替换成别的对象
    // var 可以修改引用数据类型的地址值  val不行
    person1 = new Person02()

    // 引用数据类型中的属性值能否发生变化  取决于内部的属性在定义的时候是var还是val
    //    person0.name = "lisi"
    person0.age = 11

  }
}

class Test01_Var {

  // scala中类的属性 如果是var变量也能使用默认值  但是必须要有等号
  var i: Int = _
}

class Person01 {
  val name: String = "zhangsan"
  var age: Int = 10
}

2.3 标识符的命名规范

Scala对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符。
1)命名规则
Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下三种规则:
(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以操作符开头,且只包含操作符(+ - * / # !等)
(3)用反引号....包括的任意字符串,即使是Scala关键字(39个)也可以
• package, import, class, object, trait, extends, with, type, for
• private, protected, abstract, sealed, final, implicit, lazy, override
• try, catch, finally, throw
• if, else, match, case, do, while, for, return, yield
• def, val, var
• this, super
• new
• true, false, null
注意:正常使用不能只遵守规则,必须按照规范来写,即使用大小驼峰命名法。

2.4 字符串输出(重点)

1)基本语法
(1)字符串,通过+号连接。
(2)重复字符串拼接。
(3)printf用法:字符串,通过%传值。
(4)字符串模板(插值字符串):通过$获取变量值。
2)案例实操

package com.aa.chapter02

object Test02_Str {
  def main(args: Array[String]): Unit = {

    //    (1)字符串,通过+号连接
    System.out.println()
    println("hello" + "world")

    //    (2)重复字符串拼接
    println("linhailinhai" * 200)

    //    (3)printf用法:字符串,通过%传值。
    printf("name: %s age: %d\n", "linhai", 8)

    //    (4)字符串模板(插值字符串):通过$获取变量值
    val name = "linhai"
    val age = 8

    val s1 = s"name: $name,age:${age}"
    println(s1)

    val s2 = s"name: ${name + 1},age:${age + 2}"
    println(s2)


    //    (5)长字符串  原始字符串
    println("我" +
      "是" +
      "一首" +
      "诗")

    //多行字符串,在Scala中,利用三个双引号包围多行字符串就可以实现。
    // 输入的内容,带有空格、\t之类,导致每一行的开始位置不能整洁对齐。
    //应用scala的stripMargin方法,在scala中stripMargin默认是“|”作为连接符,
    // 在多行换行的行头前面加一个“|”符号即可。
    println(
      """我
        |是
        |一首
        |诗
        |""".stripMargin)

    """
      |select id,
      |       age
      |from  user_info
      |""".stripMargin


    s"""
       |${name}
       |${age}
       |""".stripMargin
  }
}

2.5 数据类型(重点)

在这里插入图片描述

object Test03_Type {
  def main(args: Array[String]): Unit = {	
	// 所有的代码都是代码块
    // 表示运行一段代码  同时将最后一行的结果作为返回值
    // 千万不要写return
    val i: Int = {
      println("我是代码块")
      10 + 10
    }

    // 代码块为1行的时候  大括号可以省略
    val i1: Int = 10 + 10

    // 如果代码块没有计算结果  返回类型是unit
    val unit: Unit = {
      println("hello")
      println("我是代码块")
    }


    // 当代码块没办法完成计算的时候  返回值类型为nothing
    //    val value: Nothing = {
    //      println("hello")
    //      throw new RuntimeException
//    }
}
}

2.7 整数类型(Byte、Short、Int、Long)

Scala的整数类型就是用于存放整数值的,比如12,30,3456等等。
1)整型分类
在这里插入图片描述
2)案例实操
(1)Scala各整数类型有固定的表示范围和字段长度,不受具体操作的影响,以保证Scala程序的可移植性。

object Test03_Type {
  def main(args: Array[String]): Unit = {

    // 整数类型
    val i1 = 1

    val l = 1L

    // (1)Scala各整数类型有固定的表示范围和字段长度,不受具体操作的影响,以保证Scala程序的可移植性。
    val b1: Byte = 2
//    val b0: Byte = 128
    
    val b2: Byte = 1 + 1
    println(b2)

    val i2 = 1

    //(2)编译器对于常量值的计算 能够直接使用结果进行编译
    // 但是如果是变量值 编译器是不知道变量的值的 所以判断不能将大类型的值赋值给小的类型
    //    val b3: Byte = i2 + 1
    //    println(b3)

    // (3)Scala程序中变量常声明为Int型,除非不足以表示大数,才使用Long
    val l1 = 2200000000L
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划——删除并获得点数

题目链接 leetcode在线oj题——删除并获得点数 题目描述 给你一个整数数组 nums ,你可以对它进行一些操作。 每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除 所有 等于 nums[i] - 1 和 nums…

spring5源码篇(10)——spring-aop代理过程

spring-framework 版本:v5.3.19 文章目录 1、ProxyFactory1.1、createAopProxy() 创建AopProxy1.2、getProxy() 创建代理对象1.3、JdkDynamicAopProxy#invoke 代理逻辑1.3.1、advised.getInterceptorsAndDynamicInterceptionAdvice() 匹配添加的advisor并转化成所需…

【FAQ】API6低代码开发问题汇总

参考文档: 低代码开发参考文档: 文档中心:使用低代码进行开发 基于景区模板开发元服务: 文档中心:模板简介 使用API6低代码开发遇到的问题汇总情况如下: 1、低代码环境下,如何实现box-shadow阴影效果的配置&#…

K8s核心概念 Controller

K8s核心概念 Controller Kubernetes核心概念 Controller一、pod控制器controller1.1 Controller作用及分类1.2 Deployment1.2.1 Replicaset控制器的功能1.2.2 Deployment控制器的功能1.2.3 Deployment用于部署无状态应用1.2.4 创建deployment类型应用1.2.5 访问deployment1.2.6…

优思学院|六西格玛管理:依据事实的质量管理方式

一个企业的质量管理制度是否规范,也就是质量管理体系是否很完备的问题,要考察管理体系是否还有哪里不尽完美?各部门之间的连系、调整是否能够顺利进行?各自是否达成在质量保证上的任务等,进行质量管理体系的审核&#…

通用文字识别OCR 之实现自动化办公

摘要 随着技术的发展,通用文字识别(OCR)已经成为现代办公环境中不可或缺的工具之一。OCR技术可以将印刷或手写文本转换为可编辑或可搜索的数字文本,极大地提高了办公效率并实现了自动化办公。本文将深入探讨OCR技术在实现自动化办…

关于你欠缺的NoSQL中的redis和mongoDB

文章目录 前言一、在string list hash结构中,每个至少完成5个命令,包含插入 修改 删除 查询,list 和hash还需要增加遍历的操作命令1、STRING类型2、List类型数据的命令操作:3、举例说明list和hash的应用场景,每个至少一…

经济和行政手段使双高企业降低能耗总量和能耗强度,提高能源利用效率-安科瑞黄安南

摘要 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》(工信部联节〔2022〕76号,以下简称《行动计划》),主要目的是为了提高工业领域能源利用效率&…

黄皮书-线接触热弹流润滑 Fortran+Matlab转译代码

原Fortran代码有错误,进行了修改,数值上差别不大。根据Fortran代码转的Matlab,可以完美运行,但是因为精度问题有差异,只能说趋势是一致的。 需要私我-资源里只是Fortran运行结果

Rdkit|分子3D构象生成与优化

github; 地址 文章目录 Rdkit|分子3D构象生成与优化构象生成算法概述基于距离(distance-based)代码示例 距离几何算法生成3D结构距离几何ETKDG生成3D构象距离几何ETKDG生成多构象将Conformer类转为Mol类手动对齐 距离几何ETKDGMMFF生成3D构象距离几何ETK…

4.日志分布式-ELK

文章目录 日志分布式-ELK概念可以添加的其它组件filebeat 结合 logstash 带来好处为什么要使用 ELK缓存和Fluentd完整日志系统基本特征ELK 的工作原理 部署Elasticsearchjdk环境和防火墙配置安装Elasticsearch修改配置文件优化内存参数启动程序并测试效果安装 Elasticsearch-he…

ThunderScope开源示波器

简介 4CH,1GSa/S 开源示波器。前端很简洁,BUF802LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。 设计日志:h…

AR气象博物馆模拟体验提升青少年认知

国际气象节主要目的是唤起人们对气象工作的重视和热爱。近年来,极端天气频发,人们需要提高警惕,AR气象远程普利用ar技术特有的沉浸式的体感互动,通过模拟演练提升体验者的安全防范意识和求生技巧。 系统结合VR虚拟现实、AR增强现实…

VSCode下载安装(保姆级--一步到胃)

前言 Visual Studio Code(简称“VSCode” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且…

机械臂的雅克比矩阵推导

1. 线速度和角速度的递推通式推导 p i p i − 1 R i − 1 r i − 1 , i i − 1 \mathbf{p}_{i}\mathbf{p}_{i-1}\mathbf{R}_{i-1} \mathbf{r}_{i-1, i}^{i-1} pi​pi−1​Ri−1​ri−1,ii−1​ p i − 1 \mathbf{p}_{i-1} pi−1​是 { i − 1 } \{i-1\} {i−1}坐标系的原点的…

[PHP]解决exec执行unzip出现中文文件名乱码的问题

查看Linux编码,如下图可看出Linux编码是zh_CN.UTF-8 问题截图: 以下代码都会产生乱码 exex(unzip -d /xxx /x/test.zip); exex(unzip -O zh_CN.UTF-8 -d /xxx /x/test.zip); exex(unzip -I zh_CN.UTF-8 -d /xxx /x/test.zip); 解决方法: e…

大模型开发(五):实现Jupyter本地调用OpenAI API

全文共3000余字,预计阅读时间约15分钟 | 满满干货,建议收藏! 大模型开发(五):实现Jupyter本地调用OpenAI API OpenAI作为本轮大语言模型技术进步的先驱,其系列大型模型在效果上一直保持着领先。其推出的各类模型如文本…

Ubuntu搭建docker+laradock

使用Ubuntu搭建dockerlaradock windows 下载Ubuntu工具二选一 链接:https://pan.baidu.com/s/154K6MKdFZxWqaTn2q-6MSQ 提取码:06lc https://www.jianshu.com/p/b7e11d0dbe8c借鉴地址:https://zhuanlan.zhihu.com/p/547169542 备注&#x…

JS-27 前端数据请求方式;HTTP协议的解析;JavaScript XHR、Fetch的数据请求与响应函数;前端文件上传XHR、Fetch;安装浏览器插件FeHelper

目录 1_前端数据请求方式1.1_前后端分离的优势1.2_网页的渲染过程 – 服务器端渲染1.3_网页的渲染过程 – 前后端分离 2_HTTP协议的解析2.1_HTTP概念2.2_网页中资源的获取2.3_HTTP的组成2.4_HTTP的版本2.5_HTTP的请求方式2.6_HTTP Request Header2.7_HTTP Response响应状态码 3…

成为机器人工程师需要学习那些技术

机器人工程师是未来比较吃香的工作岗位,要成为机器人工程师,ChatGPT的回答是,建议你需要学习以下技术: 1、机械工程:了解机械结构、运动学和动力学,以及机械设计和制造方面的知识。 2、电子工程&#xff1…