Kotlin有着非常非常智能化的声明变量方式。叫做类型推断

声明变量要使用关键字var和val。

var声明方式第一种(自动推断):

  1. var nub=1231//自动定义整数型 使用分号
  2.  
  3. var ch=“这是一个字符串” //自动定义字符串 不使用分号

同样,是Kotlin自己判断的数据类型。

当我们自动定义一个类型之后,这个类型就会固定下来这个类型。 正如我们下面的代码。 定义一个字符串之后在赋值一个数字就会报错

  1. fun main(agrs : Array<String>)
  2. {
  3. var name="ARM830"//自动定义一个字符串 Kotlin自动判断
  4. name=123 //此处会报错
  5. println(name) //输出
  6. }

正确的代码是

  1. fun main(agrs : Array<String>)
  2. {
  3. var name="ARM830"//自动定义一个字符串 Kotlin自动判断
  4. // name=123 //此处会报错
  5. name="重新再次赋值" //再次赋值
  6. println(name) //输出
  7. }

变量没有使用关键字的情况下,可以再次赋值。

观察上面的代码,我并有使用分号作为一个语句的结束。 当然使用分号也是可以的。

var第二种声明方式(指定类型):

同样也是使用var关键字进行声明.

看下面的代码:

  1. fun main(agrs : Array<String>)
  2. {
  3. var name:String="ARM830"//定义一个为String的变量
  4.  
  5. println(name) //输出
  6. }

解释: var name:String="ARM830"

定义一个变量,变量名是name,类型是String。

也就是一个变量要指定一个数据类型的时候,就要如此写。

格式是:

var Typename :Type

var 变量名字 : 数据类型

一定要有冒号

Val声明方式

val是只读。

也就是说使用val进行定义类型。这个变量是只读,不可以修改的。

  1. fun main(agrs : Array<String>)
  2. {
  3. var name:String ="ARM830"; //定义一个为String的变量
  4. val year:Int =16;
  5. year=17; //此处会报错,因为val是只读,不可以再次赋值
  6. println(name+"\t"+year) //输出
  7.  
  8. }

val声明方式和var一样是可以有两种,一种自动推断,一种指定类型。

******************************************************************************************************************************************************************************************************************

同样,Kotlin也是可以使用声明并赋值,声明再赋值的两种方式声明变量。

声明再赋值

  1. fun main(agrs : Array<String>)
  2. {
  3. var name:String //定义一个为String的变量
  4. name="ARM830";
  5. var year:Int
  6. year =16;
  7. println(name+"\t"+year) //输出
  8.  
  9. }

不过值得一说,能够使用声明再赋值这样的方式,只有指定数据类型才可以使用。

直接使用var第一种声明方式,是不可以的。 切记!

Kotlin 变量和常量的声明(var和val)的更多相关文章

  1. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  2. java笔记 -- java变量与常量的声明

    变量: 在Java中, 每一个变量属于一种类型. double salary int vacationDays; long earthPopulation; boolean done; 命名: 以字母 ...

  3. Golang Go Go Go part2:变量及常量声明

    三.关键字及内置预声明常量.类型.函数 1.关键字 Go有25个关键字,只能用在语法允许的地方,不能作为名称使用,它们是: break          default         func    ...

  4. kotlin变量基础

    kotlin变量与输出 这里看一下在Kotlin中的变量是如何定义的? 编译运行: 对比下我们常用的JAVA语言,定义上的区别: 1.Kotlin变量是统一以var开头,而不区分具体类型,而Java在 ...

  5. iOS开发Swift篇—(二)变量和常量

    iOS开发Swift篇—(二)变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3.9倍 ...

  6. 李洪强iOS开发Swift篇—02_变量和常量

    李洪强iOS开发Swift篇—02_变量和常量 一.语言的性能 (1)根据WWDC的展示 在进行复杂对象排序时Objective-C的性能是Python的2.8倍,Swift的性能是Python的3. ...

  7. Go语言-变量和常量

    我们在这里需要优先说明的是用于声明变量的关键字var,以及用于声明常量的关键字const.要知道,绝大多数的数据类型的值都可以被赋给一个变量,包括函数.而常量则不同,它只能被赋予基本数据类型的值本身. ...

  8. 在shell,R,python中用变量和常量创建文件名

    很多时候我们希望文件名的格式是:变量+常量的. 1.shell:变量"常量" [wangjq@mgmt multi_pcr]$ a="var" [wangjq@ ...

  9. kotlin 变量声明

    Kotlin 是强类型的语言,Kotlin 要求所有的变量必须先声明.后使用,声明变量时必须显示或隐式指定变量的类型(隐式的是指,声明的时候同时初始化,这样编译的时候就可以推断出该变量的类型了,Jav ...

随机推荐

  1. WebSocket --为什么引入WebSocket协议

    Browser已经支持http协议,为什么还要开发一种新的WebSocket协议呢?我们知道http协议是一种单向的网络协议,在建立连接后,它只允许Browser/UA(UserAgent)向WebS ...

  2. 为什么 Eclipse 里的 Classpath Variables M2_REPO 无法修改(non modifiable)

    本文转载自:http://uule.iteye.com/blog/2034097 解决方法: 在C:\Documents and Settings\Administrator\.m2中放入settin ...

  3. 断路器(CircuitBreaker)设计模式

    断路器是电器时代的一个重要组成部分,后面总是有保险丝熔断或跳闸的断路器是安全的重要保障. 微服务最近几年成为软件架构的热门话题,其益处多多.但需要知道的是,一旦开始将单块系统进行分解,就上了分布式系统 ...

  4. Git 之Windows环境下学习系列

    Git .SVN .TFS   相同点 不同点 Git     版本控制 优点: 分布式版本控制.无需联网就能版本提交 开源 缺点 入门学习难度高 SVN   优点: 集中式版本控制. 个人开源 缺点 ...

  5. 【转】rails中的时区问题

    http://eric-gao.iteye.com/blog/1058197 解释4个时区设置的不同: config.active_record.default_timezoneconfig.time ...

  6. CentOS7 线上环境的一些 配置

    上周服务器被攻击导致上面收回了我们服务器的IP,所以这周重新安装部署了服务器,使用centos7系统.为了防止服务器再次被攻击,所以建议以下几点: 1. root密码要复杂一点,尽量字母数字特殊字符都 ...

  7. “百度杯”CTF比赛 十一月场(Misc)

    签到题: 题目提示: 文件在i春秋的ctf2群里,加群下载文件 下载下来之后发现有压缩密码 题目提示有提示解压密码:key:ichunqiumemeda 打开文件,得到flag 签到题2: 点击下载附 ...

  8. webpack3.x看这个就够了

    本文介绍webpack3.x的使用 说明,本文前后连贯性很强,建议从头往后看 目录 开始 css文件打包 image文件打包 字体文件打包 json文件打包 csv文件和xml文件打包 多入口文件打包 ...

  9. scrapy-redis源码抛析

    #scrapy-redis--->queue.py-->class FifoQueue 队列 LifoQueue(lastinfirstout栈) #self.server父类Base中链 ...

  10. 获取Linux权限后安装rootkit

    1.首先获得远程服务器的root权限,当然这是基本的也是最难的. 2.然后下载rootkit程序,本文用到的是mafix. 3.开始安装 wget http://godpock.googlecode. ...