IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 20220422-安卓基础学习(1) -> 正文阅读

[移动开发]20220422-安卓基础学习(1)

Android基础

Android四大组件

? Android四大组件分别是Activity、Service、BroadcastReceiver和ContentProvider。

? Activity:应用程序的门面。

? Service:后台运行

? BroadcastReceiver:允许应用接收来自各处的广播消息

? ContentProvider:为应用程序之间共享数据提供了可能

日志工具Log

? Android中的日志工具类是Log,一共提供了5个方法来供我们打印日志。

  • Log.v():打印琐碎的的日志信息,对应级别Verbos
  • Log.d():打印调试信息,对应Debug
  • Log.i():打印重要的数据,对应info
  • Log.w():打印警告信息,对应warn
  • Log.e():打印错误信息,对应error

Kotlin入门

变量和函数

变量

? kotlin定义变量只有两种关键字:val和var。

  • val:声明一个不可变的变量,在赋值后就不能再重新对其赋值
  • var:声明一个可变的变量
fun main(){
    val a = 10 //自动推导类型
    var b:Int = 3//显式告诉编译器其类型为Int
}

? kotlin基本变量类型包括Int、Long、Short、Float、Double、Boolean、Char和Byte。

函数

? kotlin允许自定义函数,语法规则如下:

fun methodName(param1:Type, param2:Type):Type{
    
}
//例如:
fun add(a:Int, b:Int):int{
    return a + b
}

程序逻辑控制

if条件语句

? kotlin中的条件语句主要有两种实现方式:if和when

fun largerNumber(a:Int, b:Int):Int{
    var value = 0
    if(a > b){
        value = a
    }else {
        value = b
    }
    return value
}
//在kotlin中if是可以有返回值的,其返回值是最后一行代码的返回值
fun largerNumber(a:Int, b:Int):Int{
    var value = 0
    value = if(a > b){
        a
    }else{
        b
    }
    return value
}

//在kotlin中可进一步简化
fun largerNumber(a:Int, b:Int) = if(a > b) a else b

when条件语句

? 其作用与switch类似

fun getScore(name:String) = if(name == 'Tom'){
    90
} else if(name == 'Jim'){
    80
} else if(name == 'Jack'){
    85
} else{
    0
}

fun getScore(name:String) = when(name){
    "Tom" -> 90
    "Jim" -> 80
    "Jack" -> 85
    else -> 0
}

//除此之位还可以通过类型匹配
fun checkNumber(num : Number){
    when(num){
        is Int -> println("Int")
        is Double -> println("Double")
        else println("Error")
    }
}

循环语句

? 在kotlin中,使用…表示一个闭区间,可以使用until创建一个左开右闭的区间,然后可以通过for-in循环遍历区间

fun main(){
    for(i in 0..10){
        println(i)
        //输出0、1、2、3、4、5、6、7、8、9、10
    }
}

fun main(){
    for(i in 0 until 10 step 2){
        println(i)
        //输出0、2、4、8
    }
}
//使用downTo创建一个降序的区间
fun main(){
    for(i in 10 downTo 1){
        println(i)
        //输出10、9、8、7、6、5、4、3、2、1
    }
}

面向对象编程

? 面向对象有三大特性:封装、继承和多态

? 通过对类的封装,我们可以在适当的时候创建类的对象,然后调用对象中的字段和函数来满足实际编程的需求。

类与对象

? kotlin中使用class关键字声明类。

class Person{
    var name = ""
    var age = 0
    fun eat(){
        //Todo()
    }
}

fun main(){
    val p = Person()
    p.name = "jack"
    p.age = 10
    p.eat()
}

继承和构造函数

? 和C++继承的概念基本类似

open class Person{
    var name = ""
    var age = 0
    fun eat(){
        //Todo()
    }
}
//kotlin中默认无法继承,如果想要被继承需要在class前加上open关键字
class student:Person(){
    var sno = ""
    var grade = 0
}

? kotlin中构造函数分为主构造函数和次构造函数,主构造函数没有函数体,直接定义在类名的后面就行了。在实例化时,需要加入全部的参数。如果想在主构造函数中添加运行逻辑的话,可以使用init结构体

class Student(val sno:String, val grade:Int):Person(){
    init{
        //todo
    }
}
val student = Student("ada", 15)

? 次构造函数通过consturctor关键字来定义。类似于C++中的重载构造函数

class Student(val sno:String, val grade:Int, name:String, age:Int):Person(name, age){
    constructor(name:String, age:Int):this("", 0, name, age){}
    constructor():this("", 0){}
}

接口

? 接口用于定义一些抽象行为,简单来说就是实现多态。使用interface关键字来实现

interface Study{
    fun readBooks()
    fun doHomework()
}

class Person:Study{
    override fun readBooks(){
        todo
    }
    override fun doHomework(){
        todo
    }
}

数据类与单例类

数据类

? 数据类通常需要重写equals()、hashCode()、toString()方法。在kotlin中,class前加上data关键字,表明此类是一个数据类。

data class Cellphone(val brand:String, val:price:Double)
//kotlin会自动生成上述几个函数

单例类

? 在kotlin中创建单例类,只需要将class关键字改成object关键字即可。

object Singleton{
    fun singletonTest(){
        todo
    }
}

Lambda编程

集合的创建和遍历

? 传统中集合主要包含了List、Set和Map等

val list = ArrayList<String>()
list.add("apple")
list.add("Banana")
//或者使用listof,不过listof表示一个不可变的集合,即不能添加、修改和删除
val list1 = listof("Apple", "Banana")
//如果想要可变的,可以使用mutableListOf()
val list2 = mutableListof("Apple", "Banana")
for(fruit in list){
    println(fruit)
}

//set map和C++中的set、map无太大区别

集合的函数式API

val list = listof("Apple", "Banana", "Orange")
var maxLengthFruit = ""
for(fruit in list){
    if(fruit.length > maxLengthFruit.length){
        maxLengthFruit = fruit
    }
}

//如果使用函数式API的话则很简单
val maxLengthFruit1 = list.maxBy{it.length}

Lambda表达式语法结构如下:{参数名1:参数类型,参数名2:参数类型 -> 函数体}

val lambda = {fruit:String->fruit.length}
val maxLengthFruit = list.maxBy(lambda)

空指针检查

? Kotlin默认所有的参数和变量都不可为空。如果想要其可为空,需要在其后面加上?

fun doStudy(study:Study?){
    if(study != null){
        
    }else{
        
    }
}

判空辅助工具

? 首先是?.操作符,即当对象不为空时正常调用相应的方法,当为空时什么也不做。

a?.doSomething()

? 其次是?:操作符,左右两边都接收一个表达式,如果左边表达式的结果不为空就返回左边表达式的结果,否则返回右边表达式的结果。

val c = if(a != null){
    a
}else{
    b
}

//可简化为
val c = a?:b

? 还可以使用let标准函数

fun doStudy(study : Study?){
    study?.let{stu->
         study.doSomething()      
    }   
}
//如果只有一个参数时,可以省略且用it代替
fun doStudy(study:Study?){
    study?.let{
        it.doSomething()
    }
}

参考书籍

郭霖-第一行代码第三版

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:58:30  更:2022-04-23 11:00:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:38:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码