Kotlin与Java基本语法对比(三)

基本数据类型

KotlinJava
Intint/Integer
Doubledouble/Double
Floatfloat/Float
Longlong/Long
Shortshort/Short
Bytebyte/Byte
Booleanboolean/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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值