欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kotlin入门-基础类型及定义变量

程序员文章站 2022-05-28 13:26:28
...

一,前言

每一项伟大的开始都有一个目的,嗯,我学习kotlin就是想做一个合金弹头,所以必需看懂app的主程序代码:


class MainActivity : AppCompatActivity() {
    private lateinit var appBarConfiguration: AppBarConfiguration    //这篇主要讲这句

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val toolbar: Toolbar = findViewById(R.id.toolbar)
        setSupportActionBar(toolbar)

        val fab: FloatingActionButton = findViewById(R.id.fab)
        fab.setOnClickListener { view ->
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show()
        }
        val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
        val navView: NavigationView = findViewById(R.id.nav_view)
        val navController = findNavController(R.id.nav_host_fragment)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
                R.id.nav_tools, R.id.nav_share, R.id.nav_send
            ), drawerLayout
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)
        return true
    }

    override fun onSupportNavigateUp(): Boolean {
        val navController = findNavController(R.id.nav_host_fragment)
        return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
    }
}

二,入门

唉唉唉,先别关,交个朋友,先目标分解,看懂一句

// private appBarConfiguration: AppBarConfiguration这局话在类里面报错
//加上lateinit 不报错,什么用,在我看看可以装B 
private lateinit   var appBarConfiguration: AppBarConfiguration`
先看下菜鸡教程怎么定义常量与变量


>可变变量定义:var 关键字
>var <标识符> : <类型> = <初始化值>
不可变变量定义:val 关键字,只能赋值一次的变量(类似Java中final修饰的变量)
val <标识符> : <类型> = <初始化值>
常量与变量都可以没有初始化值,但是在引用前必须初始化
编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。
val a: Int = 1
val b = 1       // 系统自动推断变量类型为Int
val c: Int      // 如果不在声明时初始化则必须提供变量类型
c = 1           // 明确赋值
var x = 5        // 系统自动推断变量类型为Int
x += 1           // 变量可修改

对比下这句

var <标识符> : <类型> = <初始化值>
var appBarConfiguration: AppBarConfiguration

说到这里我们可以先了解kotlin里面的类型了

1,Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。
2,布尔用 Boolean 类型表示,它有两个值:true 和 false
3,数组用类 Array 实现
4,String 是不可变的,不可变,不可变,是一个独立的数据类型。
比较一下,AppBarConfiguration都不在,只剩下函数和类,自己写个小程序测试下
kotlin入门-基础类型及定义变量
可以看出,确实是类(把Hero变成函数会报错,这点上python是可以指向的)