基本数据类型
Kotlin | Java |
---|---|
Int | int/Integer |
Double | double/Double |
Float | float/Float |
Long | long/Long |
Short | short/Short |
Byte | byte/Byte |
Boolean | boolean/Boolean |
字面常量
这个kotlin和java基本是一样的
123L,1.2f,
比较两个数字
kotlin不存在自动拆箱、装箱,所以所有的变量都自动封装了对象,所以两个数字比较的时候,就有数据大小比较和对象内存地址比较两种。
java
public static void main(String[] args){
//基本数据类型的equals和==其实一样,都是比较数值大小
Integer a = 1000;
int b = 2000;
int c =1000;
System.out.println(a==b);
System.out.println(a.equals(c)+","+(a==c));
//输出结果:false true,true
}
kotlin
//kotlin 略有不同,==比较数值大小,===是比较内存地址
val a: Int = 10000
println(a === a) // true,值相等,对象地址相等
//经过了装箱,创建了两个不同的对象
val boxedA: Int? = a
val anotherBoxedA: Int? = a
//虽然经过了装箱,但是值是相等的,都是10000
println(boxedA === anotherBoxedA) // false,值相等,对象地址不一样
println(boxedA == anotherBoxedA) // true,值相等
类型转换
java
//java中类型转换基本
int a = 100;
float b = (float) a;
double c = (double) a;
long d = (long) a;
kotlin
//kotlin数据类型则是提供了api
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char
位操作符
对于Int和Long类型,还有一系列的位操作符可以使用,分别是:
shl(bits) – 左移位 (Java’s <<)
shr(bits) – 右移位 (Java’s >>)
ushr(bits) – 无符号右移位 (Java’s >>>)
and(bits) – 与
or(bits) – 或
xor(bits) – 异或
inv() – 反向
||,&&,!--跟java是一样的
字符串
java
//java遍历字符串
String content ="123456sdghh";
for(char c : content.toCharArray()){
System.out.println(c);
}
kotlin
val content = "123456sdghh"
for(s in content){
println(s)
}
换行
java直接换行符\n
String content ="abc\ndef\nxyz";
System.out.println(content);
//输出
abc
def
xyz
kotlin也可以用\n换行,效果是一样的,但是kotlin另外扩充了"""这个符号,支持多行字符串
val content = "abc\ndef\nxyz"
println(content)
//输出
abc
def
xyz
val multi = """
多行字符串,
abc,
123
"""
println(multi)
//输出,""",所见即所得式多行,即写成什么样的多行格式,就会输出什么样的多行格式,如果不是顶格写,输出的字符串前面就会有空格
多行字符串,
abc,
123
//""" 所见即所得式多行,去空格
val multi = """
|多行字符串,
|abc,
|123
"""
println(multi)
println("去空格")
println(multi.trimMargin())
//输出,默认 | 用作边界前缀,String 可以通过 trimMargin() 方法来删除多余的空白,但你可以选择其他字符并作为参数传入,比如 trimMargin(">")。
|多行字符串,
|abc,
|123
去空格
多行字符串,
abc,
123
字符串模板
java
String s = "java %s,%d,%f";
System.out.println(String.format(s, "hello world",120,0.4));
//输出
java hello world,120,0.400000
//对比kotlin
String s = "runoob";
System.out.println(s+".length is "+s.length());
//输出
runoob.length is 6
kotlin
//kotlin可以仿照java直接这样写,完全没问题
val s = "java %s,%d,%f"
println(String.format(s, "hello world", 120, 0.4))
//也可以kotlin式书写
val h ="hello world"
val n = 120
val f = 0.4f
println("java ${h},${n},${f}")
//输出
java hello world,120,0.4
//对比java
val s = "runoob"
val str = "$s.length is ${s.length}" // 求值结果为 "runoob.length is 6"
println(str)
//输出
runoob.length is 6