咕咕咕的个人学习笔记——Android篇

该笔记基于《第一行代码Android》(第三版),代码在Android Studio (Bumblebee 2021.1.1 Patch3)上运行。

安卓App目录下常用内容

名称属性
AndroidTest编写AndroidTest测试用例,可对项目进行自动化测试
Java放置Java/Kotlin代码(自动生成MainActivity)
res资源目录(drawable - 图片;layout - 布局;values - 字符,mipmap - 图标)
AndroidManifest.xml配置文件,可以给程序添加权限声明
test编写Unit Test测试用例
.gitignore用于将app模块内指定的目录或文件排除在版本控制外
build.gradleapp模块的gradle构建脚本,指定多项目构建相关的配置
proguard-rules.pro用于制定项目代码的混淆

日志工具Log(android.util.Log)

名称属性
Log.v()打印最为琐碎,意义最小的日志信息。对应级别verbose, 是Android中级别最低的一种。
Log.d()打印一些调试信息(对调试程序和分析问题有益)。对应级别为debug,高于verbose。
Log.i()打印较为重要的数据(如可以帮助分析用户行为的数据)。对应级别info,高于debug。
Log.w()打印警告信息,提示程序可能会有的潜在风险。对应warn,高于info。
Log.e()打印程序中的错误信息,如程序进入了catch语句。对应级别为error。
class MainActivity: AppCompatActivity(){
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        Log.d("MainActivity","onCreate execute")
        //Log.d("tag:用于对打印信息进行过滤","msg:想要打印的内容")
    }
}

变量

关键字含义
val(value)声明不可变的变量
var(varialbe)声明可变的变量

P.S. 优先使用val来声明变量,当val无法满足需求时使用var

函数

/*基本写法
fun function(value1: value1_type,value2: value2_type):type{
    return return_value
}*/
//e.g.
fun largerNumber(num1:Int, num2:Int):Int{
    return max(num1,num2)
}

/*单行函数时
fun function(value1: value1_type,value2: value2_type):Type = return_value*/
//e.g.
fun largerNumber2(num1:Int,num2:Int,num3:Int): Int = max(max(num1,num2),num3)

条件语句(If,When)

If:

//写法1
fun largerNumber(num1:Int, num2:Int):Int{
    var value = 0 
    if (num1 >num2) {
        value = num1
    } else {
        value = num2
    }
    return value
}

//写法2
fun largerNumber(num1:Int, num2:Int):Int{
   val value = if (num1 >num2) {
         num1
    } else {
         num2
    }
    return value
}

//写法3
fun largerNumber(num1:Int, num2:Int):Int{
    return if(num1 > num2) {
        num1
    } else {
        num2
    }
}

//写法4
fun largerNumber(num1:Int, num2:Int) = if (num1>num2){
    num1
} else {
    num2
}

//写法5
fun largerNumber(num1:Int,num2:Int) = if(num1 >num2) num1 else num2

When:

//精确匹配
//带参数
fun getScore(name:String) = when (name) {
    //匹配值 -> {执行逻辑}
    "Tom" -> 86
    "Jim" -> 77
    "Jack" -> 99
    else -> 0
}

//不带参数
fun getScore(name:String) = when {
    name == "Tom" -> 86
    name =="Jim" -> 77
    name =="Jack" -> 99
    else -> 0
}

//以特定内容开头的均为某一值
fun getScore(name:String) = when{
    name.startsWith( "Tom") -> 86
    name =="Jim" -> 77
    name =="Jack" -> 99
    else -> 0
}

//类型匹配
fun getScore(number:Number) {
    when(number) {
        is Int -> println("number is Int")
        is Double -> println("number is double")
        else -> println("not support")
    }
}

循环 (区间,While)

区间

升序

//闭区间 var range = 0..10
fun main() {
    for(i in 1 until 10 step 2){
        println(i)
    }
}

//左闭又开 var range 0 until 10
fun main() {
    for(i in 1 until 10){
        println(i)
    }
}

//设置间隔
fun main() {
    for(i in 1 until 10 step 2){
        println(i)
    }
}

降序

fun main() {
    for(i in 10 downTo 1){
        println(i)
    }
}

While

fun main() {
    var i = 0
    while (i < 10) {
        println(i)
        i = i + 1
    }
}

面向对象

//Person.kt
class Person {
    var name=""
    var age = 0

    fun eat(){
        println(name + " is eating. He is " + age + "years old.")
    }
}

//Main.kt
fun main() {
    val p = Person()
    p.name = "Jack"
    p.age = 19
    p.eat()
}

继承

//Person.kt
open class Person (val name: String, val age: Int) {
    fun eat(){
        println(name + " is eating. He is " + age + "years old.")
    }
}

//Student.kt
class Student(val sno:String, val grade:Int,name:String,age:Int):
    Person(name,age) {

    init {
        println("Sno is " + sno)
        println("grade is " + grade)
    }
}

//Main.kt
fun main() {
    val student = Student("a123",5,"Jack",19)

    println(student.eat())
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值