当前位置: 首页 > news >正文

Kotlin基础——函数、变量、字符串模板、类

函数、变量、字符串模板、类

  • 函数
  • 变量
  • 字符串模板

函数

函数组成为 fun 函数名(参数名: 参数类型, …): 返回值{}

fun max(a: Int, b: Int): Int {return if (a > b) a else b
}

上面称为代码块函数体,当函数体由单个表达式构成时,可简化为表达式函数体(自动会推导出返回类型)

fun max(a: Int, b: Int) = if (a > b) a else b

变量

Kotlin和Java一样是静态语言,所有表达式类型在编译期已经确定

变量由 var/val+变量名[: 数据类型][?][ = 值] 组成,如

var a = 1var b: Int
b = 3var s: String? = nullval language = arrayListOf("java")
language.add("Kotlin")
  • 无需显示声明每个变量的类型,自动类型推导
  • 若变量未初始化则需要显示指定类型
  • ?标记变量可以为空,若无则不可为空
  • val为不可变变量,初始化后不能再次赋值,对应Java的final,但其指向的对象可以改变

字符串模板

可在字符串中通过$引用变量

fun main(args: Array<String>) {val name = if (args.size > 0) args[0] else "Kotlin"println("Hello,$name")
}

还可以用${}引用表达式

fun main(args: Array<String>) {if (args.size > 0) {println("Hello,${args[1]}")}
}fun main(args: Array<String>) {println("Hello,${if (args.size > 0) args[0] else "Kotlin"} ")
}

只有数据没有其他代码的对象通常叫做值对象,如JavaBean

public class Person {private String name;private final int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}
}

使用过程如下

Person person = new Person("java", 8);person.setName("kotlin");
System.out.println(person.getName());
System.out.println(person.getAge());

将上述Java复制到代码.kt文件,会触发自动转换(.kt不要求类名和文件名一致,可将多个类放到同一文件,且文件名随意

在这里插入图片描述

转换后的代码如下,name为var变量(默认带有getter和setter),而age为val变量(只有getter)

class Person(var name: String,val age: Int
) 

使用方法如下

val person = Person("java", 8);person.name = "kotlin"
println(person.name)
println(person.age)

如果一个属性可以根据其他属性计算,可使用自定义getter

class Rectangle(val height: Int, val width: Int) {val isSquare: Booleanget() {return height == width}
}
http://www.lryc.cn/news/207137.html

相关文章:

  • 联邦存款保险公司与银行失败和失败银行列表数据集
  • 【FPGA】IIC协议通用主机接口的设计与实现详解
  • 《红蓝攻防对抗实战》八.利用OpenSSL对反弹shell流量进行加密
  • 手机桌面待办事项APP推荐
  • 2023NOIP A层联测18 划分
  • pc与android设备进行通信
  • 【网安大模型专题10.19】论文6:Java漏洞自动修复+数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
  • const 和 volatile 在实例成员函数的应用
  • 比Nginx测试桩更方便,ShenYu网关的Mock插件
  • IDEA: 自用主题及字体搭配推荐
  • Qt中的枚举变量,Q_ENUM,Q_FLAG以及Qt中自定义结构体、枚举型做信号参数传递
  • 【C++】priority_queue仿函数
  • 如何驾驭ChatGPT:掌控有效对话!
  • LeetCode 面试题 16.03. 交点
  • 【码银送书第九期】《ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践》
  • Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)
  • 华为机试题:HJ3 明明的随机数
  • Python OpenCV将n×n的小图拼接成m×m的大图
  • wkhtmltoimage/wkhtmltopdf 使用实践
  • Rclone连接Onedrive
  • RK356X/RK3588构建Ubuntu20.04根文件系统
  • 本地新建项目如何推到码云上去
  • RSAUtil 前端 JavaScript JSEncrypt 实现 RSA (长文本)加密解密
  • uniapp map polygons 区域填充色(fillColor)在ios显示正常,但在安卓手机显示是黑色的,怎么解决?
  • OSCAR数据库上锁问题如何排查
  • FPGA与人工智能泛谈-01
  • 【VASP】POTCAR文件
  • 棒球俱乐部青少年成长体系·棒球1号位
  • 折叠式菜单怎么做编程,初学编程系统化教程初级1上线
  • 与AI对话,如何写好prompt?