kotlin
梦想不只是梦与想
这个作者很懒,什么都没留下…
展开
-
时间转换 2021-08-03T06:06:41Z
fun formatDateTime(value: String?, format: String = "yyyy-MM-dd HH:mm"): String { if (TextUtils.isEmpty(value)) return "" return try { //系统类 DateTime(value).toString(format) } catch (e: Exception) { "" }}也是好不容易找到.原创 2022-05-16 15:37:43 · 324 阅读 · 0 评论 -
Handler之同步屏障机制(sync barrier)
分析中,发现不错的文章分析,暂时做个记录:https://www.cnblogs.com/wytiger/p/13031145.html原创 2021-06-09 10:13:51 · 202 阅读 · 1 评论 -
Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 一.内部类基础 在Java中,可以将一个类定义在...转载 2019-05-24 20:36:03 · 108 阅读 · 0 评论 -
java的重载、覆盖和隐藏的区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件 3.main方法也是可以被重载的覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子 类),访问修饰符比父类大...原创 2019-05-22 20:52:05 · 248 阅读 · 0 评论 -
"码农"的营销基本课
1、在职业生涯某个时刻,会发现自己的技术水平已经能达到顶级开发人员,要想再提升会变的异常困难;只有通过“自我营销”才能让自己脱颖而出,这样不仅可以提高收入,还能拥有更多的机会。即便是“菜鸟”,也不妨碍开始自我营销。事实上,试图找出自我营销的方法,可以让自己成为专家,或者从事某一特定领域的软件开发工作。不要让“不是专家”成为放弃自我营销的借口。无论身处职业生涯的哪个阶段,都可以从营造和传播自...原创 2019-06-22 10:16:13 · 150 阅读 · 0 评论 -
判断Intent是否存在
在intent跳转的时候,如果没有使用UncaughtExceptionHandler类来处理全局异常,有时会出现ActivityNotFoundException错误,为了更好的用户体验,可以在跳转之前先判断Intent是否存在。 比如Activtiy的跳转检查:public static boolean isIntentAvailable(Context c...原创 2019-06-22 14:55:15 · 796 阅读 · 0 评论 -
String 为什么不可变 ?
众所周知, String 是一个不可变的,由 final 修饰的类。那么它的不可变性体现在哪里呢? 看下面一段简单的代码: String str= "123"; str = "456";相信应该没人会觉得这段代码是错误的,那么这符合 String 的不可变性吗?String 的不可变性是如何体现的? 不可变性的好处是什么?带着这些疑问,read the fuck source c...转载 2019-07-03 13:40:22 · 122 阅读 · 0 评论 -
animated-selector状态改变的动画效果
先看效果图:在res/drawable/目录下创建一个animator_selector.xml文件<?xml version="1.0" encoding="utf-8"?><animated-selector xmlns:android="http://schemas.android.com/apk/res/android"> <item ...转载 2019-07-05 23:58:26 · 2559 阅读 · 0 评论 -
Gradle 通用小技巧
1、Log开关控制。定义动态编译生成对象,通过 buildConfigField控制,然后在Java文件中通过BuildConfig.enableLog来获取,代码如下:buildTypes { release { buildConfigField("boolean","enableLog","true") } ...原创 2019-07-06 14:43:51 · 151 阅读 · 0 评论 -
形参个数可变的方法(可变参数使用)
从JDK1.5之后,Java允许定义形参个数可变的参数,从而允许为方法制定数量不确定的形参。1、使用方式:在最后一个形参类型后增加三点(...),则表示该形参可以接受多个参数值,多个参数值是被当成数组传入。/** * 可变参数 */ public void test(String a,int... b){ for (int i : b) {...原创 2019-07-21 17:34:07 · 4533 阅读 · 0 评论 -
shouldOverrideUrlLoading返回值
前言这周在做一个需求时,需要用到WebView,但是在做的过程中,却遇到了一些问题。WebView我其实接触并不多,这次的需求里还涉及了一些JS交互之类的,所以我是边学边做,但是网上的示例和教程,往往藏着一些坑,这一次我就发现关于shouldOverrideUrlLoading这个方法,网上的说法真的是五花八门,这篇文章,我们来澄清一下shouldOverrideUrlLoading的真正用法...转载 2019-07-30 19:31:30 · 2639 阅读 · 0 评论 -
Android中canvas基本使用
canvas绘制基本方法:canvas.drawArc ()//(扇形) canvas.drawCircle()//(圆) canvas.drawOval()//(椭圆) canvas.drawLine()//(线) canvas.drawPoint()//(点) canvas.drawRect()//(矩形) canvas.drawRoundRect()//(圆角矩形) c...转载 2019-07-30 22:53:33 · 306 阅读 · 0 评论 -
Android中Fragment的用法总结
Fragment是activity的界面中的一部分或一种行为,下面这篇文章主要给大家介绍了关于Android中Fragment的基本用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下前言fragment 可认为是一个轻量级的Activity,但不同与Activity,它是要嵌到Activity中来使用的,它用来解决设备屏幕大小的不同,主要是充分利用界面上的空间,如平板上多...转载 2019-08-21 10:36:31 · 700 阅读 · 0 评论 -
java中 int、char、long各占多少字节数
所谓的占用字节数 就是申请内存的时候所占的空间大小byte 1字节 最小值是-128(-2^7) 最大值是127(2^7-1) boolean 至少1字节 这种类型只作为一种标志来记录 true/false 情况 short 2字节 最小值是-32768(-2^15) 最大值是3276...转载 2019-04-24 23:39:24 · 303 阅读 · 0 评论 -
java中equals,hashcode和==的区别
1、==java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。2.引用类型(类、接口、数组) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结...转载 2019-04-23 22:35:22 · 177 阅读 · 0 评论 -
kotlin学习小记2---空类型和智能类型转换
1、空类型fun getName():String{ return null;}fun main(args: Array<String>){val name = getName()println(name?.length)//表示如果name为null,则返回null,不会调用length属性,避免空指针 //也可以如下调用val name = ...原创 2018-09-19 22:46:11 · 144 阅读 · 0 评论 -
kotlin学习小记3---常量、变量和函数
1、常量、变量 const 修饰的量为编译期常量,在编译的时候就能够确定它的值,如果有引用它的地方,会在编译时直接替换为它的值,相当于java中final修饰; val 修饰的量虽然不可以修改,但不属于编译时常量,而属于运行时常量,也就是不可以重复赋值;类似于java中的final; var 修饰的量为变量,如:var str: String = “abc”;...原创 2018-09-25 23:54:22 · 145 阅读 · 0 评论 -
kotlin学习小记4---成员变量、方法
1、成员变量默认权限修饰符为public2、var、val都可以声明属性3、类的内部可以定义属性、构造方法参数中var/val修饰的都是属性(注意:如果构造方法的参数无var/val修饰,则是构造方法的一个普通参数)4、属性的初始化尽量在构造方法中完成,如果无法在构造方法中初始化,可以设置为局部变量5、var可以用lateinit延迟初始化,val可以用by lazy(lazy{}...原创 2018-09-26 23:52:45 · 276 阅读 · 0 评论 -
kotlin学习小记5--伴生对象
1、伴生对象companion objectclass Demo(var height:Int, var wieth:Int) { companion object { public var temp:String = "111" fun getMax(){} }}这样定义的方法和属性,就会类似于jav...原创 2018-10-01 21:18:37 · 178 阅读 · 0 评论 -
kotlin学习小记6--重载、默认参数
1、重载(overloads):方法名相同、参数不同(与返回值没有关系,因为jvm默认会为每个方法生成一个签名,而这个签名是由方法名和参数列表生成)fun smaile():Unit{ Log.i("wangsen", "smaile:");}fun smaile(str:String):Unit{ Log.i("wangsen", "smaile:");}上面的...原创 2018-10-01 22:11:37 · 304 阅读 · 0 评论 -
kotlin学习小记7--data类
data class Demo9(var id:String,var name:String,var sex:String){}var demo9 = Demo9("29","wang","男")demo9.component1()1、编译器默认会重写相关的方法,如get、set、tostring等;2、可以通过自动生成的componentN()方法来调用类对应的属性;3...原创 2018-10-04 07:45:11 · 317 阅读 · 0 评论 -
kotlin学习小记8---内部类
1、kotlin中的内部类默认为静态内部类,可以直接通过外部类直接访问,如:public class Out { class WS{ }}var ws: Out.WS = Out.WS()//通过外部类名.内部类访问备注:静态内部类也访问不了外部类的非静态属性和方法2、inner关键字,可以去掉内部类默认的静态属性public class Out{...原创 2018-10-06 10:45:08 · 332 阅读 · 0 评论 -
kotlin学习小记9---语句和表达式
在kotlin中,if是表达式,而不是语句。语句和表达式的区别在于,表达式有值,并且可以作为另一个表达式的一部分使用;而语句是没有自己的值得。在java中,所有的控制结构都是语句。而在kotlin中,除了循环以外大多数控制结构都是表达式。如:函数fun max(a:Int,b:Int):Int{ return if(a>b) a else b}因为该函数体是由单个表...原创 2018-10-13 10:52:09 · 191 阅读 · 0 评论 -
kotlin学习小记10---变量
1、在java中声明变量是以类型开始,在kotlin中是以关键字开始,然后是变量名称,最后可以加上类型(不加也可以),因为许多变量声明的类型都可以省略,如:val str:String = "hello"因为编译器会根据初始化器表达式的值,并把它的类型作为变量的类型,可以简化为:val str = "hello"备注:如果变量没有初始化器,需要显式地指定它的类型,因为编译器无法...原创 2018-10-13 11:18:47 · 202 阅读 · 0 评论 -
kotlin学习小记11---枚举和“when”
1、声明枚举类,在java中只有enum一个关键字。在kotlin中enum是一个软关键字:只有当它出现在class前面时才有特殊的意义,否则只是一个普通的名称2、kotlin中的when相当于java中的switch语句when(num){ 1 -> "yi" 2 -> "er" else -> "buqingchule"}和java不一...原创 2018-10-13 11:36:58 · 229 阅读 · 0 评论 -
The feature "array literals in annotations" is only available since language version 1.2
用android studio3.0练习kotlin项目时用到了Dagger,然后在给注解传入数组字面量的时候遇到了如题的编译异常,问题直接翻译过来的意思就是"'在注解中使用数组字面量'的特性只能从kotlin1.2版本开始"。然后我查了一下项目根目录下的build.gradle文件,发现使用的是1.1.51版本,于是将kotlin版本号改为1.2.0以后重新编译就OK了。图1.然后特地到k...转载 2019-03-02 11:27:29 · 1134 阅读 · 0 评论 -
int和Integer的区别
1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4、Integer的默认值是null,int的默认值是0延伸:关于Integer和int的比较1、由于Integer变...转载 2019-04-25 23:55:29 · 129 阅读 · 0 评论 -
Java自动装箱、拆箱
什么是自动装箱,拆箱先抛出定义,Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱,装箱和拆箱可以让我们的代码更简洁易懂Java中基础数据类型与它们对应的包装类见下表(共8种): 原始类型 包装类型 boolean Boolean ...转载 2019-04-25 23:57:15 · 243 阅读 · 0 评论 -
kotlin学习笔记1---构造方法
1、所有类都最终继承自Any;2、一个类如果有构造方法,标准的写法如下:class Demo constructor(var name: String, var age: String){}如果该类中只存在一个构造方法时(如果构造方法前面constructor前面有其他修饰或者注解,constructor关键字是不可以省略的),可以简写为:class Demo(var name...原创 2018-09-18 23:00:54 · 131 阅读 · 0 评论