本文共 1451 字,大约阅读时间需要 4 分钟。
说到基础就想起的是面向对象、封装、继承、多态......之类的,以前学习kotlin的时候都是从上学习简单的东西。学习完之后新需求就迎面而来,重构项目的计划就搁浅了(当时自己也真是想当然的以为kotlin没啥东西)。最近空余时间终于下手了公司项目才发现迁移起来有多麻烦
java上面一个数据类型比如user ,省去了set、get方法。
data class User2(var name: String?, var age: Int?)data class User3 { var name: String? = null var age: Int? = 0 var address: String? = null}
两种写法其实都正确,但是迁移过的项目里面就两种都有,作为一个强迫症患者肯定是忍受不了这个事儿的。
2 “ ? ” 和 “ !! ” 到底是啥区别为啥有的地方需要“ ? ” ,有的地方只能用“ !! ''。然后问了问度娘才知道
"?"系统在任何情况不会报异常。
"!!"对象为null,系统一定报异常!3 数据类型的规范,想想我们java的 valueof()之类的强制类型转化,kt中使用 as Int ,as String
String.valueOf(); Integer.valueOf(); Integer.parseInt()
4 构造器
java构造器可以分为无参构造器和有参构造器(123....),没有主次之分。 kotlin有一个主构造(放在类名后面)和多个次构造
5 静态参数的区别 java放在普通class用final修饰 kontlin放在object里面用val修饰
6 静态kotlin用 object词修饰类名,java用static修饰方法
kotlin:object RegexUtils { /** * 匹配手机号 */ private val PATTERN_MOBILE = Pattern.compile("^[1][3456789][0-9]{9}") /** * 判断是否是手机号码 */ fun isMobile(text: String?): Boolean { return !TextUtils.isEmpty(text) && PATTERN_MOBILE.matcher(text).matches() }}java:public class RegexUtil { /** * 匹配手机号 */ private static final Pattern PATTERN_MOBILE = Pattern.compile("^[1][3456789][0-9]{9}"); /** * 判断是否是手机号码 */ public static boolean isMobile(String text) { return !TextUtils.isEmpty(text) && PATTERN_MOBILE.matcher(text).matches(); }}
7 konlin中不能使用三目表达式
以上就是整合项目中的一小部分理解,至于mvp转化成mvvm,Androidx升级和jetpack新框架的使用后面等语文学好了再来描述。
转载地址:http://cnwsi.baihongyu.com/