可变长参数函数
java
public void vars(String... params){
for(String s:params){
System.out.println(s);
}
}
kotlin
fun vars(vararg v:String){
for(vt in v){
println(vt)
}
}
NULL检查机制
java
public void nullCheck(String params){
if(params!=null){
//TODO--do something
params.split(":");
}
//强制执行split操作,为空抛异常
params.split(":");
}
kotlin
public fun nullCheck(params:String?){
//TODO-do something, ?.就表示,如果params!=null 执行split操作,否则跳过
params?.split(":")
//TODO--如果强制执行split,则需要如下,会强制执行split操作,但是params为空时会抛出异常
params!!.split(":")
}
区间
java
//TODO java中基本上所有带区间范围的都是这种情况[a,b),即可以取到a,但是取不到b
kotlin
//输出1234
fun testIn(){
for(i in 1..4){
print(i)
}
}
//什么都不输出
fun testIn2(){
for(i in 4..1){
print(i)
}
}
//输出13,
fun testStep(){
for(i in 1..4 step 2){
print(i)
}
}
等价于java的如下函数
void testStepJava(){
for(int i=1;i<=4;i+=2){
System.out.print(i+"");
}
}
//输出42
fun testStep2(){
for(i in 4 downTo 1 step 2){
print(i)
}
}
等价于java的如下函数
void testStepJava2(){
for(int i=4;i>=1;i-=2){
System.out.print(i+"");
}
}
//取值区间[1,10)
fun testUntil(){
for(i in 1 until 10){
print(i)
}
}