自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuhp的博客

好记性不如烂笔头啊。。。

  • 博客(21)
  • 收藏
  • 关注

原创 kotlin-typealias

typealias该关键字可以给任意类型指定别名typealias MyListener = (Boolean, Int) -> Unitclass A { private var myListener:MyListener? = null private fun addListener(listener:MyListener){ myListener = listener }}

2021-07-20 16:29:43 208

原创 Kotlin-泛型out,in:泛型协变和逆变——泛型高级功能2(第一行代码Kotlin学习笔记12)

目录1. 泛型的协变Kotlin中泛型还有一个高级功能,就是协变和逆变。假如我们有类A继承B,那么我们就可以让MyClass< A>作为MyClass< B>的子类使用,这叫做泛型的协变,我们在泛型前用out 关键字修饰就可以了,好比:class MyClass< out T>(val data: T)。相反的,如果我们想让MyClass< B>作为MyClass< A>的子类使用,就叫做泛型的逆变,需要在泛型前用in 关键字修饰。#merm

2021-01-07 10:46:36 287

原创 Kotlin-reified:泛型实化——泛型高级功能1(第一行代码Kotlin学习笔记11)

目录1. 泛型实化的原理2. 泛型实化的应用如果我们之前是Java程序员,那么我们对泛型就绝对不回陌生了,但是说到泛型的实化,一定就是陌生的了,它可以给我们带来一些新奇而又让你感到高级的功能。1. 泛型实化的原理在Java中,泛型是只存在于编译阶段的,这就要我们了解Java中泛型的擦除机制,就是说虽然我们在写代码的时候写了泛型,但是程序真正运行的时候,并不知道我们的具体类型是什么,泛型的约束只在编译时期存在。比如我们写了List< String>集合,在编译时期,我们是无法向该list中添

2021-01-05 16:20:10 866

原创 万事开头难,总要动动手吧

我为神马写博客。。。从学习Android至今已经两年有余,工作也将近两年,之所以现在才开始动手写博客,原因可能有一下几点(其实可能就是懒)1.对自己能力的怀疑。从学习Android至今,读过博客无数,水平也是良莠不齐,但是从数篇博客中找出一篇好的也属不易,因此生怕自己写出来不好的东西,让广大同行在查找好的文章时多花功夫。2.觉得自己没有时间去写,经常加班,即时不加班,下班回家也很累,只想休息...

2021-01-04 13:19:45 124

原创 Kotlin-扩展函数use,forEachLine(第一行代码Kotlin学习笔记番外)

目录1. use2. forEachLine1. useuse是Kotlin的一个内置的扩展函数,它能保证Lambda表达式中的代码全部执行完之后自动将外层的流关闭,这样我们就不需要再写一个finally语句,手动关闭流了。使用方法如下: fun save(inputText: String) { try { val output = openFileOutput("data", Context.MODE_PRIVATE) val wri

2021-01-04 13:17:36 1197

原创 Android p(9.0)网络请求问题(CLEARTEXT communication to * not permitted by network)

Android p(9.0)网络请求问题CLEARTEXT communication to * not permitted by networkAndroid 9.0 不允许明文请求,解决方法(亲测有效):在res目录下新建xml文件夹,文件夹里面创建network_security_config.xml 文件;文件内容<?xml version="1.0" encoding=...

2021-01-04 10:00:47 292

原创 年终总结

今天本来预计是忙碌的一天,结果不知道在查什么问题的时候,看了大佬的博客首页,然后就看到大佬写的年终总结,结果就一发不可收拾,看了大半天的年终总结。有的人各种不顺,觉得生活操蛋,有的人心向阳光,果实满满。看着看着就有了很多感触,就有了些小作文的冲动,是的,我又要写小作文了。。。今年是特殊的一年,今年的我虽然没有什么具体成果,但也算收获满满。过年在家的日子:及其安静的年,鞭炮声不缺但却少了熟悉的面孔和欢笑,没有聚会,什么都没有,只有家里炕上的懒觉。依稀记得不知道初几,刚睁开眼,拿起手机看到了老李发的微信,

2021-01-04 09:33:19 163

原创 Kotlin-infix函数,语法A to B(第一行代码Kotlin学习笔记10)

阿斯顿发

2020-12-30 16:46:27 1971

原创 Kotlin-by:类委托和委托属性,lazy函数(第一行代码Kotlin学习笔记9)

目录1. 类委托2. 委托属性3. lazy函数委托的基本理念是:操作对象将某段逻辑的处理工作,交给另外一个辅助对象去做。1. 类委托如果我们在代码中使用set,但set只是一个接口,我们需要借助它的实现类HashSet或者其它实现类。但是我们如果想要自己实现一个set接口的实现类,我们就需要set的方法都具体实现一遍,这样即麻烦又容易出现逻辑上的错误。但是借助委托模式,我们就可以这么写:class MySet<T>(val helperSet: HashSet<T>) :

2020-12-30 15:34:29 795 3

原创 Kotlin-泛型,Any(第一行代码Kotlin学习笔记8)

目录1. 泛型1.1 Any1. 泛型泛型对于有一定Java编程经验的同学,并不是什么陌生的东西,它允许我们在不指定具体类型的情况下,定义任何一个变量。这样我们写的代码会更具有灵活性和扩展性。泛型有泛型类和泛型方法两种定义方式。它们的语法结构都是,当然使用大些字母T只是我们使用泛型的潜规则,我们可以任意的使用其它字母甚至单词。泛型类:class MyClass<T> { fun method(param:T):T{ return param }}泛型方法:class M

2020-12-11 17:05:03 1676

原创 Kotlin-inline, noinline, crossinline关键字解析——高阶函数详解(第一行代码Kotlin学习笔记7)

目录1. 高阶函数定义2. 内联函数inline3. noinline与crossinline3.1 noinline3.2 crossinline1. 高阶函数定义高阶函数和Lambda的关系密不可分,不熟悉Lambda的同学请移步: Kotlin-集合与Lambda编程map,filter,any,all函数的使用(第一行代码Kotlin学习笔记2).我们学过的map,filter,apply等函数,都会要求传入一个Lambda表达式,这样的函数就可以称为具有函数式编程风格的API,如果想要定义自己

2020-12-09 17:24:08 742

原创 Kotlin-扩展函数和运算符重载(第一行代码Kotlin学习笔记6)

目录1. 扩展函数2. 运算符重载运算符重载对照表(复制于第一行代码随书ppt)1. 扩展函数如果我们之前是Java使用者,那么很遗憾的是,Java一直以来都不支持这个非常有用的功能。那么扩展函数是什么呢?其实扩展函数就是说在不修改某个类源码的情况下,仍然可以向该类添加新的函数。比如我们想要统计一个字符串中字母的数量,如果没有扩展函数,那么我们就要写一个Util类,然后写一个方法,来作统计,例如:object StringUtil{ fun lettersCount(str:String):

2020-12-09 17:22:36 245

原创 Kotlin-标准函数with,run和apply及静态方法companion object,@JvmStatic和顶层方法(第一行代码Kotlin学习笔记5)

目录1. 几个标准函数1.1 with1.2 run1.3 apply2. 静态方法2.1 单例类和伴生类实现类似静态方式调用2.2 静态方法注解顶层方法1. 几个标准函数Kotlin中标准函数指的是Standard.kt文件中定义的函数,任何Kotlin代码都可以任意的调用所有的标准函数。上一篇文章中我们学习了let函数配合?.操作符来避免空指针引发的问题,这篇文章中我们会继续学习几个标准函数。1.1 withwith函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambd

2020-12-09 17:19:15 535

原创 Kotlin-?, ?.,?:,!!操作符,lateinit,::xxx.isInitialized的使用,let函数——空指针相关特性(第一行代码Kotlin学习笔记4)

目录1. 空指针检查2. 操作符?. 操作符?: 操作符!! 非空断言操作符let函数1. 空指针检查空指针是一种不受编程语言检查的运行时异常,只能由程序员主动通过逻辑判断来避免,但即使是最出色的程序员,也不可能将所有潜在的空指针异常全部考虑到。在Java中,如果我们想要避免空指针引发的问题,我们可以这么写:public void doStudy(Study study) { if (study != null) { study.readBooks();

2020-12-09 17:17:51 4185 3

原创 Kotlin-类与对象:data数据类,object单例类,sealed密封类(第一行代码Kotlin学习笔记2)

目录类与对象1.类1.1定义类1.2 继承2.接口3.修饰符4.数据类与单例类4.1数据类4.2 单例类类与对象1.类1.1定义类可以使用如下代码定义一个类,以及声明它所拥有的字段和函数:class Person { var name = "" var age = 0 fun eat() { println(name + " is eating. He is " + age + " years old.") }}然后使用如下代码创建对象,并对

2020-12-09 17:14:15 407 3

原创 Kotlin-Lambda编程,集合map,filter,any,all函数的使用(第一行代码Kotlin学习笔记3)

目录1. 集合1.1 集合的创建和遍历1.2 集合函数式API使用2. Lambda编程2.1 Lambda详解2.2 集合常用的函数式APImap()filter()any() 和 all() 函数2.3 Java 常用的函数式API1. 集合1.1 集合的创建和遍历Kotlin中专门提供了内置函数来初始化集合使用如下代码可以初始化一个List集合:val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")但我们需要注意的

2020-12-09 17:10:28 2165

原创 Kotlin-vararg,变量var,val,${}和函数when,for-in(第一行代码Kotlin学习笔记1)

目录变量和函数1.变量2.函数3语法3.1 if 语句3.2 when 语句3.3 循环3.3.1区间变量和函数1.变量val:(value)简写,用来声明一个不可变的变量,赋值之后不可重新赋值,对应java中的final变量。var:(variable)简写,用来声明一个可变的变量。fun main(){ val a = 5 println(a = ${a})//a = 5 a = a * 10 // 报错,可改为 var a = 5;}Kotlin虽然拥有出色的类推导机制,但是有时

2020-12-09 17:09:04 2301

原创 Java设计模式——观察者模式

观察者模式是日常开发中较为常用的设计模式之一,大体来说可分为两类角色,一个是观察者,另一个是被观察者,被观察者通过一个注册的动作,持有某个观察者的引用,当被观察者自身发生改变时,通知观察者自己变了。。在实际运用中,会将每个角色进行抽象,用于定义角色之间规则,然后在具体实现中进行具体操作。我们暂且将被观察者命名为主题subject,抽象主题如下,主要定义了主题的功能:public interfa...

2019-04-02 21:38:47 116

原创 交换类排序——选择排序(SelectSort)Java实现

选择排序和冒泡排序颇为相似,也是不稳定的交换类排序,都运用两层循环进行排序,外层循环控制趟数,每一趟确定一个数据元素的位置,内层循环进行数据元素的交换,不同的是冒泡排序的每一趟比较是相邻的两个元素一次比较,交换位置,而选择排序是用第i(i为趟数)个元素和其后面的元素进行比较,交换位置简单选择排序public static void SelectSort(int[] arr){ /* * ...

2019-03-25 21:44:02 269

原创 交换类排序——冒泡排序(BubbleSort)Java实现

冒泡排序是通过相邻的数据元素进行交换,逐步将待排序的序列变为有序序列

2018-12-12 23:49:35 535

原创 Java设计模式——单例模式

Java设计模式——单例模式本人写的第一篇技术博客,从简单开始吧。最近一直在看设计模式相关的书,所以从最简单,最常用也是最基础的单例模式开始吧。定义确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例话不多说,开始撸码饿汉式类加载时,就进行对象的实例化public class SingletonEHan { //类加载时,就进行对象实例化 priv...

2018-11-21 00:32:50 118

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除