- 博客(13)
- 收藏
- 关注
原创 20260321第七章 集合类
集合类存放的都是对象的引用,而非对象本身,我们通常说的集合中的对象指的是集合中对象的引用(reference)。Kotlin的集合类分为:可变集合类(Mutable)与不可变集合类(Immutable)。
2026-03-24 11:02:59
344
原创 20260320 第六章 扩展函数与属性
在使用Java的时候,我们经常使用诸如StringUtil、DateUtil等工具类,代码写起来比较冗长。举个例子,获取一个字符串的第一个字符值、最后一个字符值。我们可以看到StringUtil.firstChar(str)这样的调用方式不够简单直接。能不能直接这样调用呢?非常遗憾的是,在Java中我们无法给String类添加一个自定义方法。因为String类是JDK中内置的基础类,而且为final,不能修改。
2026-03-20 11:25:30
347
原创 20260320-前五章的一些个人补充知识
/ 1. 静态内部类(嵌套内部类)- 不持有外部类引用// 2. 非静态内部类(普通内部类)- 持有外部类引用// 3. 匿名内部类 - 持有外部类引用@Override静态内部类:不持有外部类引用非静态内部类:持有外部类引用匿名内部类:持有外部类引用原理:当编译器编译非静态内部类时,会自动添加一个指向外部类的引用字段。编译后的字节码(简化):// 编译器自动添加的外部类引用字段// 构造函数接收外部类引用// 通过this$0访问外部类成员自动添加字段。
2026-03-20 11:08:12
201
原创 20260228 第五章 函数与函数式编程
函数式编程是关于不变性和函数组合的编程范式。函数式编程有如下特征。一等函数支持(first-class function):函数也是一种数据类型,可以作为参数传入另一个函数中,同时函数也可以返回一个函数。纯函数(pure function)和不变性(immutable):纯函数指的是没有副作用的函数(函数不去改变外部的数据状态)。例如,一个编译器就是一个广义上的纯函数。在函数式编程中,倾向于使用纯函数编程。
2026-02-28 17:59:58
837
原创 20260227 第四章 类与面向对象编程
在前面的章节中,我们学习了Kotlin的语言基础知识、类型系统等相关的知识。本章及第5章将一起学习Kotlin面向对象编程和函数式编程的支持。本章主要介绍Kotlin面向对象编程的知识。
2026-02-28 10:00:50
891
原创 20260227 第三章 类型系统与可空类型
与Java、C和C ++语言一样,Kotlin语言也是“静态类型的编程语言”。通常,编程语言中的类型系统中定义了:如何将数值和表达式归为不同的类型;如何操作这些类型;这些类型之间如何互相作用。我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配多少空间。类型系统在各种语言之间有非常大的差异,主要的差异表现在编译时期的语法及运行时期的操作实现方式上。在每一种编程语言中,都有一个特定的类型系统。静态类型在编译时期就能可靠地发现类型错误,因此通常能增进最终程序的可靠性。
2026-02-27 16:53:28
702
原创 20260227 第二章 Kotlin语法基础
虽然在Scala和Groovy类语言中,函数的返回值可以不需要显示用return语句来指定,但是我们仍然认为使用return语句的编码风格更容易阅读理解(尤其是在分支流代码块中)。我们在Lambda表达式开头处添加了标签here@,可以这么理解:该标签相当于记录了Lambda表达式的指令执行入口地址,然后在表达式内部使用return@here跳转至Lambda表达式中的该地址处。像if语句一样,when语句的每一个分支也可以是一个代码块,它的值是块中最后的表达式的值。我们使用()运算符来调用函数。
2026-02-27 09:43:28
762
原创 Android知识归纳--多线程中的锁 20240929
在大多数实际的多线程应用中,经常会出现。如果两个线程同时存取相同的对象,并且每一个线程都调用了一个修改该对象状态的方法,那么将会发生对数据的错误操作。为了防止这个现象,必须学习如何同步存取数据。举个例子:张三去银行操作自己的账户,每次存100进去,然后再取100出来,按理说余额应该是不变的。但是,如果开了多个线程,每个线程的run方法里都是先将余额加100,然后再将余额减100,那么最终你会发现,在统计余额的时候,每次都不一样,这就是线程共享数据带来的问题。
2024-09-29 20:28:05
999
原创 Android知识归纳--线程
主线程是指进程拥有的线程,或叫UI线程,Java中默认情况下一个进程只有一个线程,这个线程就是主线程。主线程不能执行耗时的任务,所以在一些耗时处理时,就得使用子线程。Android沿用了Java的线程模型,从Android3.0开始系统要求网络访问也必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException异常。在Android里如果主线程被执行耗时任务导致阻塞后还会造成ANR的发生。
2024-09-26 22:33:16
1390
原创 Android知识归纳--Dalvik VM 、JVM、ART 20240919
JVM是Java Virtual Machine,而DVM就是 Dalvik Virtual Machine,是安卓中使用的虚拟机,所有安卓程序都运行在安卓系统进程里,每个进程对应着一个Dalvik虚拟机实例。他们都提供了对象生命周期管理、堆栈管理、线程管理、安全和异常管理以及垃圾回收等重要功能,各自拥有一套完整的指令系统,以下简要对比两种虚拟机的不同。①JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码。
2024-09-19 21:28:48
1266
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅