Kotlin学习快速入门(1)——基本数据类型以及String常用方法使用
Kotlin学习快速入门(1)——基本数据类型以及String常用方法使用
作者:@stars-one
本文为作者原创,转载请注明出处:https://www.cnblogs.com/kexing/p/11249014.html
本文适合有Java基础的人
Kotlin语法特点
相比java,省略括号,可以自动判断类型,省略new关键字,空指针捕获
主函数
kotlin文件(kt文件)中,只有要下列的方法,就可以运行,无需像之前的java那般,还要定义个类,写上main方法
复制
fun main(args: Array) {
println("hello world")
}
基本数据类型
这是说是基本数据类型,其实下面的这些都是kotlin封装好的类,就是相当于Java中的Integer,FLoat等包装类,数值会自动包装。
这样的好处就是,数值是一个对象,可以保证不会出现空指针。
类型 位宽度
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
注意,kotlin中的字符类型Char不属于基本数据类型
由于是对象,所以比较得比较内容,kotlin中封装了==和===两个运算符供我们比较不同的内容和对象地址
=== 表示比较对象地址,两个 == 表示比较两个值(内容)大小
类型转换:
上面的基本数据类型都有下面的方法,负责类型转换
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
复制
//显示转换
val num: Byte =1
val num1 = num.toInt
变量声明
两个关键字:
val 声明一个只读常量
var 声明一个变量
val相当于使用了java中的final关键字修饰变量(声明常量)
var就是和之前声明
复制
//声明一个整型常量num,数值为12,之后无法对num进行赋值操作
val num: Int = 12
//kotlin的自动判断类型特性,上面的式子也可以这样写
val num = 12
//声明一个常量,赋值过一次之后,无法再次对常量进行赋值
val num: Int
num = 12
复制
//kotlin的基本数据类型变量,还可以加上“_”来便于阅读,不影响数值
//下面的num还是一个Int类型的数据
val num = 1_000_000
//小数也可以加上“_”
val num = 1.02_120
字符串String
普通用法
复制
//和java一样,字符串里可以包含转义字符
val str = "hello worldn"
println(str)
特殊用法
复制
//里面的n也会打印出来
val str = """hello worldn"""
println(str)
复制
//去除前面的“|”
val text = """
|Tell me and I forget. |Teach me and I remember. |Involve me and I learn. |(Benjamin Franklin) """.trimMargin()
//去除前面的“>”
val text = """
>Tell me and I forget. >Teach me and I remember. >Involve me and I learn. >(Benjamin Franklin) """.trimMargin(">")
字符串模板:
$开头,后面可接一个变量,或者是用花括号,里面写一个表达式
复制
val num = 5
val text = "i = $num"//输出“i=5”
val text = "the length = ${arrays.length}"
//显示$,$不支持转义
val price = "${'$'}9.99"
println(price)
属性
lastIndex(最后的下标值),length
常用方法
以下加粗的方法都是kotlin中String新增加的方法
方法 描述
String [index] 取String的指定下标的元素
String first() 取第一个元素
String last() 取最后一个元素
indexOf
indexLastOf
String plus(text) 和“+”效果一样,连接字符串
Boolean equals(text[,ignoreCase]) 第二个参数不写,相当于之前说的“==”比较内容,第二个参数为true,则忽略内容大小写就行比较
String substring(startIndex[,endIndex])
String substringBefore() 截取第一个出现的字符串前面的字符串内容
String substringAfter() 截取第一个出现的字符串后面的字符串内容
String substringBeforeLast() 截取最后一个出现的字符串前面面的字符串内容
String substringAfterLast() 截取最后一个出现的字符串后面的字符串内容
replace() 替换
replaceFirst() 见下面例子
replaceBefore() 见下面例子
replaceAfter() 见下面例子
replaceBeforeLast() 见下面例子
replaceAfterLast() 见下面例子
spilt()
Boolean isBlank() 字符串是否全是空格
Boolean isEmpty() 字符串长度是否为0,为0返回true
String reversed() 字符串反转
String startsWith()
String endsWith()
String trim() 清除空格
String drop(int) 删除头部的几个元素并返回
String dropLast(int) 删除末尾的几个元素并返回
replaceFirst()等:
复制
val text = "kotlin is kotlin"
//第一个kotlin替换为java
println(text.replaceFirst("kotlin", "java"))
//在kotlin之前加上java,替换第一个kotlin
println(text.replaceBefore("kotlin", "java"))
//获取出现kotlin最后一次的下标,截取该下标到末尾的字符串,并在字符串之前添加java
println(text.replaceBeforeLast("kotlin", "java"))
//与上面相反
println(text.replaceAfter("kotlin", "java"))
println(text.replaceAfterLast("kotlin", "java"))
isBlank和isEmpty:
复制
val text = " "
println(text.isBlank())//输出为true
println(text.isEmpty())//输出为fasle
drop和dropLast:
复制
val text = "hello"
println(text.drop(2))//输出为llo
println(text.dropLast(2))//输出为hel
substringBefore等:
复制
val text = "this is starsone"
//截取第一个is之前的内容
println(text.substringBefore("is"))
//截取最后一个is之前的内容
println(text.substringBeforeLast("is"))//注意,这里还包括空格
//截取第一个出现的is后面的内容
println(text.substringAfter("is"))
//截取最后一个出现的is后面的内容
println(text.substringAfterLast("is"))
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java之JDBC 通过加载properties配置文件连接数据库
Java之JDBC 通过加载properties配置文件连接数据库通常情况下,我们通过JDBC连接数据库的时候,不会将数据库相关配置写死,因为到时候数据库一有改动,就要重新打包部署到服务器或者替换相关的.class文件,这样非常不灵活。因此,咱们一般会通过读取配置文件的方式来加载数据库相关配置,这样到时候只改动配置文件就可以啦,非常的方便。 直接上代码,下面是java文件: 复制代码 1 public class SyncDataFn { 2 3 private static String driver; 4 private static String url; 5 private static String username; 6 private static String password; 7 8 static { 9 try {10 // 1.通过当前类获取类加载器11 ClassLoader classLoader = SyncDataFn.class.getClassLoader();12 // 2.通过类加载器的方法获得一个输入流13 InputStream in = ...
- 下一篇
Java的几种创建实例方法的性能对比
Java的几种创建实例方法的性能对比近来打算自己封装一个比较方便读写的Office Excel 工具类,前面已经写了一些,比较粗糙本就计划重构一下,刚好公司的电商APP后台原有的导出Excel实现出现了可怕的性能问题,600行的数据生成Excel工作簿居然需要50秒以上,客户端连接都被熔断了还没导出来,挺巧,那就一起解决吧。 在上一个版本里呢,我认为比较巧妙的地方在于用函数式编程的方式代替反射,很早以前了解了反射的一些底层后我就知道反射的性能很差,但一直没实际测试过各种调用场景的性能差距。 至于底层字节码、CPU指令这些我就不深究了,我还没到那个级别,那这次就来个简单的测试吧。 目标:创建Man对象。 方式: ① 直接引用 new Man(); ② 使用反射 ③ 使用内部类 ④ 使用Lombda表达式 ⑤ 使用Method Reference 在学习Java8新特性的时候,我所了解到的是Lombda表达式是内部类的一种简化书写方式,也就是语法糖,但两者间在运行时居然有比较明显的性能差距,让我不得不怀疑它底层到底是啥东西,时间精力有限先记着,有必要的时候再去啃openJDK吧。 还有就是...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音