Kotlin的重新学习---01简单的特性

1. Kotlin的基本类型

1.1 初步认识

举例

Java:
int a=2;
final String b ="Hello Java";

Kotlin:
var a:Int = 2;
val b:String = "Hello Java"

总结:

  • Kotlin 没有基本数据类型,所有皆对象;
  • Kotlin 声明之后.并且引入var 和val 对应 可变/不可变 类型;
  • 不需要使用分号 ;
  • :类型 不是必要的,可以类型推导,如:
var a = 2;
val b = "Hello Java"

1.1 特别的注意

1.1.2 举例

Java :
long c= 123l;
long d = 321L;

Kotlin :
val c = 123L

总结: Kotlin 只能够使用大写L,这样更清晰

1.1.3 举例

Java: 可行
int e=10;
long f = e;

Kotlin:
val e:Int =10;
val f:Long=e; // 不可行
val f:Long= e.toLong();// 正确方式

总结: Kotlin 不允许直接转化类型(哪怕是Int 变成Long),这样更加严谨

1.1.4 举例

符号类型 无符号类型
字节 Byte UByte
短整型 Short UShort
整型 Int UInt
长整型 Long ULong

因为Kotlin 可以与C++ 公用,所以增加了无符号的特性

2. 字符串

举例:字符串的模板"""

val j = "小明"
print("My Name is ${j}")

总结: 使用 或者{} 可以做字符串的的占位符

举例:字符串的三个"""

// Raw String: 未经加工的String
val n ="""
  大笨象
    ____-

"""

总结: 使用 三个 "可以输出代用空格和换行的字符串

举例:字符串的比较

java:
a==b 
a.equals(b)

kotlin
a===b
a==b

总结: === 比较地址, ==相当于equals . 辅助记忆: 等号越多相对更严格. 所以===是一模一样的东西

4. kotlin的数组

Kt Java
整型 IntArray int[]
整型装箱 Array<Int> Integer[]
字符 ChatArray char[]
字符装箱 Array<Char> Character[]
字符串 Array<String> String[]

XXArray: 某某数组, Array<T> 装箱类型的数组

举例: 数组的创建

Java
int[] arr= new int[]{1,2,3}

Kt
val c0 = intArrayOf(1,2,3)
val c1=IntArray(3){ it +1}

Tip: 数组的打印

    val c0 = intArrayOf(1, 2, 3, 4, 5)
    val c1 = IntArray(5) {
        it + 1
    }
    println(c0.contentToString())
    println(c1.contentToString())

举例:数组的读写

//Java
String[] d= new String[]{"A","B"};
d[1]="Java";
print(d[0]+","+d[1]);

//Kt
 // 注: 这里的类型  Array<String>
    val d = arrayOf("Hello", "Java")
    d[1] = "Kt"
    print("${d[0]},${d[1]}")


举例:数组的遍历

 val e = floatArrayOf(1f, 2f, 3f, 4f)
    val e2 = FloatArray(4) {
        it + 1f
    }
    for (element in e2) {
        print("$element")
    }
   e.forEach {
        print("${it}")
    }

     if (e.asList().contains(1f)) {
        print("1f exists in variable 'e' ")
    }

     for (i in e.indices) {
        print("${e[i]}")
    }

举例:区间的创建

    // 闭区间
    val intRange = 1..10
    val charRange = 'a'..'z'
    val longRang = 1L..100L

    // 开区间
    val intRangeExclude = 1 until 10
    val charRangeExclude = 'a' until 'z'
    val longRangeExclude = 1L until 100L


  val intRangeReverse = 10 downTo 1 step 2
   val charRangeRevese = 'z' downTo 'a'

  // 遍历的使用
   val IntArr = intArrayOf(1, 2, 3)

        for (item in 0..IntArr.size) {
            
        }

3. kotlin的集合框架的接口类型

Kotlin java
不可变List List<T> List
可变List MutableList<T> List
不可变Map Map<K,V> Map
可变Map MutableMap<K,V> Map
不可变Set Set<T> Set
可变Set MutableSet<T> Set

总结 : Kt 将常用的集合分为 不可变 和可变(MutableXXX)


   val list = listOf<Int>(1, 2, 3)
    val list2= mutableListOf<Int>(1,2,3)


// 注:  这里的to  中缀表达式 infix ; Any 等价于Object
    val map1 = mapOf<String, Any>("k" to "benny", "age" to 20)
    val map2 = mutableMapOf<String, Any>("k" to "benny", "age" to 20)

集合框架的创建

  val stringList = ArrayList<String>()

他是怎么做到的呢? 为啥能直接创建ArrayList()的呢?

答:类型别名; 其实就是Java 的类,起了一个Kotlin的别名

  typealias ArrayList<E> = java.util.ArrayList<E>
  typealias LinkedHashMap<K, V> = java.util.LinkedHashMap<K, V>
  typealias HashMap<K, V> = java.util.HashMap<K, V>
    typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>
    typealias HashSet<E> = java.util.HashSet<E>

集合框架的CRUD

  val stringList: MutableList<String> = mutableListOf();

    // 增加
    for (i in 0..10) {
        stringList.add("2")
        stringList += "1"
    }

    // 读取
    for (i in 0..10) {
        stringList.get(i)
        stringList[i]
    }

    
    //删除
    for (i in 0..10) {
        stringList.remove("2")
        stringList -= "1"
    }

     //迭代器遍历
    val iterator = stringList.iterator()
    while (iterator.hasNext()) {
        val next = iterator.next()
        if (next == "2") {
            iterator.remove()
        }
    }


    // 包含关系
    if (stringList.contains("2")) {

    }
    if ("2" in stringList) {
        
    }

// Map的使用
    val map = mutableMapOf<String, Int>()
    map.put("World", 20)
    map["hello"] = 10

    map.get("Hello")
    map["World"]

// Pair的使用
// 这里是中缀表达式
    val pair = "Hello" to "Kotlin"
    val pair2 = Pair("k", "v");
    val first = pair.first
    val second = pair.second
// 这个是解构, 内部是component
    val (x, y) = pair

kotlin的提示Tips

快捷键
Alt + Enter - 最常用的快捷提示
Ctrl + Shift + P - Type Info 查看当前的类型
双击Shift - 搜索

show Kotlin ByteCode
'双击Shift'--> 输入show Kotlin ByteCode-->点击Decompile:
可以看到Kotlin编译成的Java代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容