上图是Kotlin和Java基本类型的比较图,比较简单,可以看出Kotlin是没有包装类型的。
类型声明
Java
int a = 5;
final String b = "Hello";
Kotlin
var a: Int = 5;
val b: String = "Hello"
Kotlin具有类型自动推导功能,所以代码可以写成下面这样,也是官方推荐的写法,更加简洁:
var a = 5;
val b = "Hello"
- var关键字修饰的变量是可读写的
- val关键字修饰的变量是只读的
易混淆的Long类型标记
Java
long c = 12345678l;
long d = 12345678L;
Kotlin
val c = 12345678L;
- Java中长整型用小写的l或者大写的L标记都行。
- Kotlin中只能用大写的L标记。
数值类型转换
Java
int e = 10;
long f = e;
Kotlin
val e: Int = 10;
val f: Long = e.toLong()
- Java中的整型是可以直接赋值给长整型的。
- Kotlin中是不允许的,会编译报错。所以必须调用toLong()方法进行转换,同理Double也是无法直接赋值给Float类型的。
字符串拼接
Java
String s = "Hello World";
System.out.println("Value of String 's' is: " + s);
System.out.println("Length of String 's' is: " + s.length());
Kotlin
val s = "Hello World"
println("Value of String 's' is: $s")
println("Length of String 's' is: ${s.length}")
- Kotlin中的字符串拼接是可以使用字符串模板的,通过 $+变量名 或者 $+{} 的方式,使用方式也比较简单,就不再过多解释了。
字符串比较
Java
String s1 = "Hello World";
String s2 = new String("Hello World");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
Kotlin
val s1 = "Hello World";
val s2 = String("Hello World".toCharArray())
println(s1 == s2)
println(s1 === s2)
- Java中的字符串内容比较是使用 equals() 方法,== 是用来比较引用的(应该说java这一点是绝大多数语言都不一样的地方)。
- Kotlin中 == 是用来比较字符串内容的,=== 是用来比较引用的。
Kotlin中 """ """ 的妙用
Java
String n = "<!doctype html>\n" +
"<html>\n" +
"<head>\n" +
" <meta charset=\"UTF-8\"/>\n" +
" <title>Hello World</title>\n" +
"</head>\n" +
"<body>\n" +
" <div id=\"container\">\n" +
" <H1>Hello World</H1>\n" +
" <p>This is a demo page.</p>\n" +
" </div>\n" +
"</body>\n" +
"</html>";
System.out.println(n);
Kotlin
val n = """
<!doctype html>
<html>
<head>
<meta charset="UTF-8"/>
<title>Hello World</title>
</head>
<body>
<div id="container">
<H1>Hello World</H1>
<p>This is a demo page.</p>
</div>
</body>
</html>
""".trimIndent()
println(n)
- Java中打印这种带换行的字符串非常麻烦
- Kotlin中提供一种简便的方式,就是使用 """ """ ,这里的trimIndent()的作用是去除字符串里面的公共空白。