, 5 11月 2022 作者 847954981@qq.com 后端学习, 我的编程之路 Kotlin安卓开发学习-标准函数和静态方法 Kotlin的标准函数指的是Standard.kt文件中定义的函数...with函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。...(), 循环StringBuilder().append()等等,之后通过一个最后一行的StringBuilder().toString()返回了整个字符串。...静态方法 在编程中,静态方法是很重要的一环。但Kotlin弱化了静态方法这个概念,因为kotlin提供了比静态方法更好的语法特性–单例类。...除了添加注解来实现静态方法,Kotlin也能使用顶层方法来实现效果。 顶层方法指的是那些没有定义在任何类中的方法。比如我们创建一个新的Kotlin文件,并在内部直接写入方法,那么这个方法就是顶层方法。
写文件通常分为覆盖写(一次性写入)和追加写入两种情况。...writeText: 覆盖写文件 我们使用 writeText 函数直接向一个文件中写入字符串 text 的内容 fun writeFile(text: String, destFile: String...appendFile: 末尾追加写文件 使用 appendFile 函数向一个文件的末尾追加写入内容 text fun appendFile(text: String, destFile: String...,用函数 transform映射之后的新值替换。...Kotlin的Any类似于Java的Object,但是没有wait(),notify()和notifyAll() 方法。 那么并发如何在Kotlin中工作呢?
什么是Kotlin Kotlin是一个基于JVM的新的编程语言,2010年由IntelliJ IDEA所在的JetBrains公司开发,自2012年以来一直开源。...如:引用空指针 3、让它比Java更简洁,通过支持variable type inference,higher-order functions (closures),extension functions...sb = new StringBuilder(); sb.append("["); Iterator iterator = collection.iterator...代码: fun toJSON(collection: Collection): String { val sb = StringBuilder() sb.append("[")...Java和Kotlin两个语言可以互相转换。 未来发展 在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
小知识点 java中对数组进行初始化后,该数组所占的内存空间、数组长度都是不可变的。...过多无用的中间对象 每次连接字符串时都会创建一个新的String对象,随着拼接次数的增多,这个对象会越来越大。 如,进行100次拼接需要创建100个String对象才能够达到目的。...minCapacity : MAX_ARRAY_SIZE; } 向原StringBuilder对象中追加字符串时: 1.追加对象str为null时追加'null'字符 2.确认是否需要进行扩容操作...minCapacity,否则直接使用MAX_ARRAY_SIZE作为新的容量。...3.str.getChars()将str追加到value的末尾 效率高的原因 扩容机制保证了,只有在满足扩容条件 minimumCapacity - value.length > 0 时才会进行扩容生成新的数组
通过一个个真实的场景,我们一边解决问题一边学习Kotlin的特性。 快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。...它是高度互操作性的:你可以继续使用所有用Java写的代码和库,甚至可以在一个项目中使用Kotlin和Java两种语言混合编程。一行Java一行Kotlin,别提有多风骚了。 详细实例 1....它是说,每次我追加一个字符串到一些东西(一个 StringBuilder、某种日志、一个控制台等)上时我就必须捕获那些 IOException。 为什么?...一个新的语言想要快速的普及,那么可能只有在运行效率上有所提升,才是最大的优势,而Kotlin并不具备这样的属性。 我们可以看下Java和Kotlin的编译速度对比。...在转换之前,App Lock的Java代码有5,491个方法和12,371行代码。 改写后,这些数字下降到4,987方法和8,564行Kotlin代码。
与String类不同的是,String类的修改操作每次都会创建一个新的字符串对象,而StringBuilder类的修改操作都是在原有的字符序列上进行的,不会创建新的对象,因此在频繁进行字符串操作时,StringBuilder...类代码方法介绍以下是StringBuilder类的常用方法:append()方法:将指定的字符串或字符追加到此序列的末尾。replace()方法:用指定的字符串替换此序列中在指定位置范围内的子字符串。...testAppend方法通过StringBuilder类的append方法向一个空StringBuilder对象中追加了两个字符串,最后输出StringBuilder中的字符串。 ...testInsert方法通过StringBuilder类的insert方法向字符串中插入了一段内容,在第4个字符的位置插入了"quick ",最后输出StringBuilder中的字符串。 ...使用StringBuilder类可以提高字符串的操作效率,避免了频繁创建新对象的问题。因此,在需要进行字符串操作的场景中应该优先选择使用StringBuilder类。
不必在每次调用的时候都创建一个新对象,比如可以事先缓存好实例。 可以返回原类型的任何子类型。...API vs DSL 无论是通用编程语言,还是领域专用语言,最终都是要通过 API 的形式向开发者呈现。...lambda lambda 为 Java8 提供的新特性,于2014年3月18日发布。...->Unit){ block(StringBuilder("Kotlin")) } // 调用高阶函数 kotlinDSL { // 这个 lambda 的接收者类型为StringBuilder...invoke 约定 Kotlin 提供了 invoke 约定,可以让对象向函数一样直接调用,比如: class Person(val name:String){ operator fun invoke
上文中的”任何改变都会产生新的字符串“,包括字符串的一些操作函数,如str1.ToLower,Trim(),Remove(int startIndex, int count),ToUpper()等,都会产生新的字符串...不要急,且看下文) 当分配字符串时,首先会到驻留池中查找,如找到,则返回已有相同字符串的地址,不会创建新字符串对象。如果没有找到,则创建新的字符串,并把字符串添加到驻留池中。...StringBuilder之所以比string效率高,主要原因就是不会创建大量的新对象,StringBuilder在以下两种情况下会分配新对象: 追加字符串时,当字符总长度超过了当前设置的容量Capacity...追加字符串的过程: StringBuilder的默认初始容量为16; 使用stringBuilder.Append()追加一个字符串时,当字符数大于16,StringBuilder会自动申请一个更大的字符数组...,一般是倍增; 在新的字符数组分配完成后,将原字符数组中的字符复制到新字符数组中,原字符数组就被无情的抛弃了(会被GC回收); 最后把需要追加的字符串追加到新字符数组中; 简单来说,当StringBuilder
Sheet的依据) ● AppendData向Sheet中追加数据 ● 调用Save保存(默认保存到程序运行目录)或Generate生成Excel信息,web环境调用Generate生成的信息,调用return...File(Excel信息)后,可直接用于下载特别提示,当单个Sheet数据量超过1048200后,后续追加的数据会自动拆分到新的Sheet,使用者不需要自己处理,只管追加数据。...列宽度 ● Align:对齐方式[导出时],指定Excel列中的文本对齐方式 ● FontColor:字体颜色[导出时],指定Excel列中的字体颜色,枚举项 ● ForegroundColor:前景色...[导出时],指定Excel列的填充色,枚举项 ● HeadRowFrozen:是否启用表头行冻结[导出时] ● HeadRowFilter:是否启用表头行筛选[导出时] ● IsIgnore:是否完全忽略...读取一行返回一行,故不像一次性全部读取出来那般占内存 ● 对于读取失败的数据,ReadXXXOptions中有 FailData ,会返回读取失败的源数据及失败相关信息,方便记录及导出到新的Excel中
Kotlin中参数类型是放在变量:后面,函数返回类型也是。...但是上面的还是有点繁琐,还能再简单,在 Kotlin中if是表达式,也就是有返回值的,因此可以直接return,另外判断式中只有一行一句也可以省略掉大括号: fun max(a: Int, b: Int...自己的库一样,在Kotlin中Collection就是这么干的。...如果不支持Lambda都不好意思称自己是一门现代语言,来看看Kotlin中的表演。...如果Lambda捕捉了变量,每个被捕捉的变量会在匿名类中有对应的字段,而且每次调用都会创建一个这个匿名类的新实例。否则,一个单例就会被创建。
第二个参数是文件的操作模式,主要有两种模式可选: MODE_PRIVATE(覆盖原文) MODE_APPEND(追加内容) 。...bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); //向文件中写入数据...bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); //读取每一行数据...,并追加到StringBuilder对象中,直到结束 builder = new StringBuilder(); String line = new String...(); //读取每一行数据,并追加到StringBuilder对象中,直到结束 while ((line = bufferedReader.readLine(
Kotlin 从这些经验教训中受益良多,而 Java(和其他语言,比如 Scala)中的某些早期设计却愈显陈旧。脱胎于旧语言,Kotlin 解决了它们的很多痛点,进化成了一门优秀的语言。...作为一门新秀语言,Kotlin 不仅支持编写代码在虚拟机上运行,而且还是一门跨平台的通用型语言:你可以用 Kotlin 开发各种类型的原生应用,如 macOS 应用、Windows 应用、JavaScript...设置“变量名”设置为 KOTLIN_HOME,“变量值”设置为 Kotlin 编译器解压路径。 将 Kotlin 编译器下的 bin 目录追加到 Path 环境变量 1....设置 KOTLIN_HOME 2. Path 下添加 bin 可以通过在命令提示行中输入 kotlinc –version 指令进行验证是否安装成功。...REPL 对于学习一门新的编程语言具有很大的帮助,因为它能立刻对初学者做出回应。许多编程语言可以使用 REPL 研究算法以及进行调试。
代码: fun sayHi(name: String): String { val sb = StringBuilder(str = "Hi ") sb.append(name) return...从实际项目来看,Kotlin的简洁在代码量上表现的非常明显,一个提供了24个API的Spring Boot微服务,通过Kotlin编写的代码量在8000行左右(含测试代码)。...看了这么吸引人的语言特性,或许你已经忍不住想要尝试Kotlin了。但是实际情况可能是项目已经开始了一段时间,我们已经用Java为项目构建了很多功能。这个时候引入一个新的语言可能会给项目带来一定的风险。...这样你可以不用担心尝试Kotlin为你的业务代码带来风险,同时也可以在编写单元测试的过程中尝试Kotlin语言的各种特性。...虽然在雷达的描述中,我们更关注的是Kotlin在Android Native领域的影响力,但是随着Spring社区对Kotlin的支持和更过成功项目的出现,相信Kotlin会继续向雷达的圆心迈进。
可以看出,字符串追加器是普通追加的百倍,追加次数越多,这个比例可能更高,所以得出结论,如果在程序种频繁的附加字符串,jia建议使用字符串生成器,再往下看。...2.解释 1.创建字符串生成器 StringBuilder str = new StringBuilder(字符串) append( content ) 该方法向字符串生成器中追加内容,content...表示要追加的内容。...,arg) 该方法用于向字符串生成器指定的位置添加字符。...(5,"word"); delete(int start,int end) 该方法移除此序列的子字符串中的字符。
那我们就讲下StringBuilder的使用: StringBuilder是Java中的一个类,用于处理字符串的可变序列。...(必记) StringBuilder类中的append()方法向StringBuilder对象中添加字符串,如下: 使用后该StringBuilder对象sb内容尾部将添加World。...String result = sb.toString(); 除此之外该类中还存在很多方法,不过我们这里就不再多讲了,你们自己看下面的图,注意有些直接使用方法就能达成其效果,有些要创建引用去接收才行。...StringBuilder sb2 = sb1; // 追加:即尾插-->字符、字符串、整形数字 sb1.append(' ');...几乎StringBuilder能做的StringBuffer都能做。 ❤️❤️所以这样就可以通过不断追加字符串来构建一个可变的字符串。
在Java中,字符串是不可变的,这意味着一旦创建了String对象,就不能改变它。 例如,当你对一个String对象进行连接、截取或其他任何操作时,都会创建一个新的String对象。...= new StringBuilder(); // 创建一个空的StringBuilder对象 sb.append("Hello"); // 追加字符串 sb.append(" "); sb.append...当对String进行操作(如连接、替换等)时,Java会创建一个新的String对象,包含一个新的数组和编码标志。...当对StringBuilder或StringBuffer进行操作(如append、insert等)时,Java会直接修改这个数组。...如果操作需要更多的空间(比如,append一个长字符串),并且当前的数组容量不足,那么Java会创建一个新的、更大的数组,然后将旧的数组的内容复制到新的数组中。
从终端读取数据也很简单,最基本的方法就是全局函数readLine,它直接从终端读取一行作为字符串。如果需要更进一步的处理,可以使用Kotlin提供的各种字符串处理函数来处理和转换字符串。.../** * 获取文件每一行内容,存入一个 List 中 * @param filename */ fun getFileLines(filename: String...appendBytes 追加字节数组到该文件中 方法签名: fun File.appendBytes(array: ByteArray) appendText 追加文本到该文件中 方法签名: fun File.appendText...映射之后的新值替换。...那么并发如何在Kotlin中工作呢?放心,Kotlin 既然是站在 Java 的肩膀上,当然少不了对多线程编程的支持——Kotlin通过封装 Java 中的线程类,简化了我们的编码。
进行分割,因为支持正则表达式,所以要用时应使用转义字符,如 “.” 应使用 “\\.” ? ? ? 15.查找字符串 indexOf() 方法 ? ?...而StringBuilder和StringBuffer不同,每次操作都是对自身对象的操作,而不是生成新的对象,其所占空间会随着字幅内容增加而增加,做大量修改操作时,不会因生成大量匿名对象而影响系统性能。...常用操作: 追加字符串: append() 方法 StringBuffer sbf =new StringBuffer("谁将"); sbf.append("新樽")...; //追加字符串 StringBuffer s1=new StringBuffer("辞旧月"); sbf.append(s1); //追加新的字符串中的内容...sbd.append("我是StringBuilder"); //追加字符 sbd.length(); //长度 sbd=sbd.insert(5,"///");
写在前面 目前国内对Android领域的探索已经越来越深,不少技术领域如插件化、热修复、构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情。所以Gradle必须要学习。...如果你不会 Groovy,没关系,当成 Java 写就行了,其实当成 Kotlin 写是最恰当的。...如果你还不会 Kotlin,我强烈推荐你查看我的 【 Kotlin Primer 】系列文章 每个Task都可以配置其输入与输出,如果一个Task的输出与上一次的输出一致,则不会重复执行。...同 Kotlin 一样,当闭包做为最后一个参数的时候,可以省略括号。...into 'target' include('**/*.txt', '**/*.xml', '**/*.properties') } 本章就讲到这里,下一篇讲如何创建一个Gradle插件,完成编译时向指定类或新生成类中动态添加代码
核心抽象模型是数据自己 核心活动是组合新对象和拓展已经存在的对象,通过加入新的方法实现。 函数式编程FP特征: 数据与函数是松耦合的 函数隐藏了它们的实现,语言的抽象是函数,以及将函数组合起来表达。...核心抽象模型是函数,不是数据结构 核心活动是编写新的函数。...在 Kotlin 中与其说一等公民是函数,不如说一等公民是闭包。...我们看这一行 val fsum1 = { x: Int, y: Int -> { x + y } } 对应编译成了两个类文件: ....kotlin/io/ConsoleKt.println (Ljava/lang/Object;)V ALOAD 0 NEW java/lang/StringBuilder DUP
领取专属 10元无门槛券
手把手带您无忧上云