输入输出、文件读写、数据类型

news/2024/4/29 0:38:55/文章来源:https://blog.csdn.net/catcat2003/article/details/127501305
package chapter01
/*
object:关键字,声明一个单例对象(伴生对象)*/
object HelloWorld {/*main方法:从外部可以直接调用执行的方法def 方法名称(参数名称:参数数据类型):方法返回值类型 = { 方法体 }Scala中的泛型是用[]表示的void用Unit代替*/def main(args: Array[String]): Unit = {println("hello world")}
}

Scala中的object声明的是单例对象,也叫伴生对象,意思是跟另外一个类相伴相生。
在java中,若是要声明一个静态变量,可以在A类中用public static String s=" ";则使用该对象时: A.s 这样引用的是类而非对象。所以在Scala中删去了关键字static,而是直接用object声明一个单例对象。
在java中将静态变量声明在类中,引用:类名.变量名
而在Scala中,将该变量声明在类的伴生对象中,引用:对象名.变量名
这样就做到了面向对象。
java和Scala代码对比:

//java
public class test01 {public static String s="123";public static void main(String[] args) {System.out.println(test01.s);}
}//Scala
package chapter01class Student(name:String,age:Int){def printlnfo():Unit={println(name+" "+age+" "+Student.school)}
}
//定义一个Student类的伴生对象
object Student{val school:String="atguigu"def main(args: Array[String]): Unit = {var alice=new Student("allic",20)var bob=new Student("bob",15)alice.printlnfo();bob.printlnfo();}
}

控制台标准输入

导入包import scala.io.StdIn
在这里插入图片描述

读写文件

import java.io.{File, PrintWriter}
import scala.io.Sourceobject Student{def main(args: Array[String]): Unit = {//读取文件数据Source.fromFile("src/main/resources/test.txt").foreach(print);//写入数据val writer=new PrintWriter(new File("src/main/resources/test1.txt"))writer.write("helloaaaa")writer.close()}
}

变量和数据类型

能使用val常量的地方就不要用变量var

//声明变量,值可以修改 variable
var i:Int=10   
//声明常量,值不可修改 value
val i:Int=10//1.声明变量时,类型可省略,编译器自动推导,也就是类型推导
var a1=10
val a2=100//2.类型确定后不可修改 说明Scala是强数据类型语言
var a1=10
a1="ggg"//报错//3.声明变量时必须要有初始值
var a:Int //报错

注意,当用val声明了一个对象时,该常量的值也就是对象不能直接赋值成其他对象。但该对象的属性值可以改变(当然这里也要看属性值是变量还是常量)
在这里插入图片描述
字符串

object Student{def main(args: Array[String]): Unit = {//1.字符串通过+拼接val name:String="alice"val age:Int=10println(age+"岁的"+name+"在学校")//10岁的alice在学校//2.用*将字符串拼接多次println(name*3)//alicealicealice//3.printf:格式化输出 跟c语言用法一样printf("%d岁的%s在学校",age,name)//4.字符串模板(插值字符串):通过$获取变量值println(s"${age}岁的${name}在学校")//s""表示后面引号中是一串字符串模板,${变量名}}
}

另外还有个格式化模板字符串,当我们想要输出一个高精度小数,但又需要四舍五入时
在这里插入图片描述
此时输出:The num is 2.35
将s " "改成f " ",在变量${ }后面加上%2.2f。小数点前面那个2表示输出的值总长度为2(包括小数点),不够则整数部分前面补空格。小数点后面那个2表示输出的值精确到小数点后两位(四舍五入)。

若是println(raw" ")表示按双引号的内容直接输出,不做精确处理

//raw表示未加工的
val num:Double =2.3456
println(raw"The num is ${num}%2.2f")
//输出:The num is ${num}%2.2f

整数类型
在这里插入图片描述
注意:定义Long型变量的时候,要在数据后面加个L。否则系统默认是将一个Int类型的数据赋值给一个Long型的变量。这样会报错。

//整数默认类型为Int 所以数据后面要加上L
val a:Long=123456789566L

在这里插入图片描述

//float和double
//定义小数时,默认是double类型,所以如果想要定义成float,在数据后面加f
val f1 : Float=1.235f
val d1=25.36 //double类型

字符类型
在这里插入图片描述
字符类型底层存储的是数字,因为是对应字符的ascll码值。

布尔类型

var flag1:Boolean=true
var flag2:Boolean=false

Unit类型、Null类型、和Nothing类型
在这里插入图片描述
当程序出现异常,不返回任何值时,就用Nothing接收,因为异常不返回值,所以不能用null。

值类型不能赋值为null

var n=15
n=null //报错var n:Int=null //报错//空引用null
var student : Student = new Student("alice",20)
student = null 

类型转换

Java中自动类型转换

public static void main(String[] args){byte b=10;test(b);
}
public static void test(short b){System.out.print(b);
}
public static void test(char b){System.out.print(b);
}
public static void test(int b){System.out.print(b);
}

byte是一个字节,short两个,int四个。因为方法中没有byte类型,只能将b自动转换成short类型,要是没有short类型就转换成int类型。而char是字符型,跟字节不属于一个类别,所以byte不会转换成char。如果只剩下char那个方法了,则会报错。

scala中自动类型转换
和java中大致相同
在这里插入图片描述
基本规则说明:
在这里插入图片描述

val a : Byte = 1
val b : Long = 2355
val c : Int= a + b  //报错,因为b是Long型,高精度赋值给低精度会报错
val c : Long = a + b //低精度a转高精度,可以
val c : Int = (a + b).toInt //强转,可以val a:Byte=1
val b:Char='b'
val c:Byte=b //报错,(byte,short)和char之间不会互相自动转换
val c:Byte=b.toByte //强转,可以
var d:Int=a+b //可以,byte,short,char之间计算时先转换为int类型
println(a)

scala强制类型转换
1.高精度转低精度时要用到强制类型转换。可能会导致部分数据的丢失,直接截断而不是向上向下取整、四舍五入取整等。

var a=2.63
var b=a.toInt //b=1

2.强转符号只针对最近的操作数有效

    var a=1.63var c=5.3var b=c+a.toInt //b=6.3//也可以用括号将要强制转换的部分括起来var b=(a+c).toInt //b=6

3.数值与String类型转换
在这里插入图片描述
在这里插入图片描述
12.3要转换成Int类型得先转为double型

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

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

相关文章

2.8 标准输入与格式化输出

文章目录1. Input 标准输入1.1 标准输入1.2 阻塞状态1.3 输入提示1.4 获取输入字符串1.5 输入版本差异1. Python3 输入数据类型2. Python2 输入数据类型2. Print 格式化输出2.1 输入2.2 sep 参数2.3 end 参数2.4 快捷写法2.5 格式化输出1. 语法格式2. 字典形式传值3. 元组形式传…

什么是GPT

什么是GPT 参考资料: https://zhuanlan.zhihu.com/p/350017443 https://zhuanlan.zhihu.com/p/106462515 https://www.cnblogs.com/yifanrensheng/p/13167796.html https://blog.csdn.net/weixin_45577864/article/details/119651372 Generative Pre-trained T…

这可能是你需要的vue考点梳理

对 React 和 Vue 的理解,它们的异同 相似之处: 都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库;都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板;都使用了Virt…

Golang学习之路3-基础认识(下)

文章目录前言一、数组1.定长数组2.不定长数组二、map1.使用关键字 map 来声明2.使用 make 来声明3.添加元素4.检索key的value是否存在5.删除元素6.遍历map7.map的注意点在这里插入图片描述三、指针1.使用指针& 及 *2.空指针四、循环与条件判断1.循环2.条件判断前言 学习一…

Go语言函数

什么是函数 func main() {fmt.Println("hello,world")//调用函数fmt.Println(add(1, 2)) }// func 函数名(参数,参数。。。),函数调用返回值类型() func add(a, b int) int {c : a breturn c }函…

Ray tracing 光线追踪 之 embree ,从入门到精通 02 从源码编译与安装

1. 下载预编译的ispc,安装 网址: https://ispc.github.io resources -> github page 进入ispc 的github的release页:Releases ispc/ispc GitHub 找到一个预编译好了的ispc,其中在windows平台上是:https://github…

Redis缓存穿透、击穿、雪崩介绍

面试高频,工作常用 缓存穿透(查不到) 概念 用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败,当用户很多的…

GO实现跳跃表

GO实现跳跃表 文章目录GO实现跳跃表跳跃表介绍跳跃表的实现跳跃表的结构创建跳跃表跳跃表的插入和删除跳跃表的排名操作跳跃表的区间操作完整实现跳跃表介绍 跳跃表(skiplist)是一种有序的数据结构,它通过建立多层"索引"&#xff…

世界城市日|数字城市里看不见的“保安”,真面目竟是…

2022年10月31日,是第8个世界城市日。在数字化浪潮席卷全球的当下,城市发展亦进入新的阶段。建造数字城市,全面推进城市数字化转型成为当前城市建设的热议话题。数字城市、万物互联,与网络空间的融合必不可少。然而系统的复杂度越高…

简单使用gige千兆网口工业相机,国产崛起(二,c#)

发现海康的sdk不错,可以用海康,basler,大华工业相机,估计其他的也可以,有机会试一试!国产厉害,崛起了!赞一个,热情爆棚!且随窃喜! 首先下载海康工…

网站SEO标题撰写技巧,做到这些可以提高点击率

搜索引擎认为,一个网站的点击率越高,那么这个网站就越受欢迎,因此就会提高网站的关键词排名。网站的点击率越高,就会获得更多流量。网站标题和点击率息息相关,一个好的网站标题,能够轻松获得流量。那么&…

[carla入门教程]-2 pythonAPI的使用

本专栏教程将记录我从安装carla到调用carla的pythonAPI进行车辆操控的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第二节 pythonAPI的使用 本小节主要学习使用 pythonAPI来与carla服务器进行交互.包括获取信息,发送信息.…

IDEA热部署插件JRebel使用

JRebel安装与激活 JRebel 使用 此时已经安装好并已激活,我们使用 JRebel debug的时候,修改代码,不能实现热部署,因此还需要设置其他地方 1.项目自动编译 设置 compiler.automake.allow.when.app.running ctrlshiftA 或者 help->…

vue相关原理

vue 原理 面试为什么要考察原理 知其然知其所以然,各行各业通用的道理了解原理才能用的很好,专业性考察,技术的追求竞争激烈,则优录取大厂造轮子(业务定制:有些框架不能满足需求) 面试中如何…

【Spark NLP】第 19 章:生产化 NLP 应用程序

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

docker下快速部署openldap与PHPLdapAdmin

在一个组织中,为了简化各种内部系统的账号和密码的管理,往往就需要ldap来进行管理了。 对于ldap的实现方式也非常多,但在免费的开源系统中,openldap是ldap的首选系统。 同时,在这一切讲究快速的时代,采用d…

大数据ClickHouse进阶(二十二):ClickHouse优化

文章目录 ClickHouse优化 一、表优化 1、日期字段避免使用String存储 2、Nullable值处理 <

计算机毕业设计(附源码)python音蕾心动

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

云IDE的简单使用、体验与学习

云IDE的简单使用、体验与学习一、简单尝试二、官网展示的特点三、视频用例3.1、用Cloud IDE快速启动开源项目3.2、用Cloud IDE 在线提交PR云IDE产品介绍 云IDE使用教程 免费使用地址&#xff1a;点击【云IDE】&#xff0c;即可开始创建工作空间。 一、简单尝试 快速创建工作空…

学习用Python实现PPT的自动化

前言 在日常工作中&#xff0c;我们总是需要创建或修改PPT。但你也可以用Python来创建或修改PPT文件。本文将告诉你如何使用Python-pptx模块自动或用PPT模板生成ppt&#xff0c;以及如何通过实例修改现有的PPT。 &#xff08;文末送福利&#xff09; 1.Python模块python-ppt…