Kotlin 语法

ops/2024/10/18 9:21:32/

字符串比较

var str1 = "chaychan"
var str2 = "chaychan"
println(str1 == str2)

比较两个字符串,如果两个字符串的内容一致,在Java中使用 str1 == str2 时,是比较两个字符串的地址值,很清楚两个字符串的地址不一样,返回false,但是在kotlin中,则不是如此,比较的只是字符串的内容,而=相当于Java中的,用来比较引用对象, 上述代码返回的是true。

equal函数

  1. equals(str:String)

方法中的参数是与之对比的字符串,默认不忽略大小写,即大小写敏感,比如:

var str1 = "chaychan"
var str2 = "ChayChan"
println(str1.equals(str2))

打印结果为false,因为不忽略大小写的话,两个字符串内容对比是不一致的,所以返回false。
2. equals(str:String,ignoreCase:Boolean)
方法中有两个参数,第一个参数是与之对比的字符串,第二个参数是布尔类型的值,是否忽略大小写,如:

var str1 = "chaychan"
var str2 = "ChayChan"
println(str1.equals(str2,true))

返回结果为true。

源码优化分析

源码

1.Lateinit

在View声明阶段,都会需要使用lateinit来延迟声明变量。

class TaskActivity : AppCompatActivity(){private val CURRENT_FILTERING_KEY = "CURRENT_FILTERING_KEY";private lateinit var drawerLayout : DrawerLayoutprivate lateinit var tasksPresenter:TasksPresenter
}

kotlin中延迟声明还包括lazy的方式

val name:String by lazy {"cangwang"}
lateinit var drawLayout:drawLayout

区别在于:

  1. .lazy{}只能用再val类型,lateinit只能用在var类型
  2. .lateinit不能用在可空的属性上和java的基本类型上lateinit var name:String会报错
  3. .lateinit可以在任何位置初始化并且可以初始化多次,因为其衔接var变量.而lazy在第一次被调用时就被初始化,其衔接的是val常量,想要被改变只能重新定义
2.findViewById

Api26前:

@Override
public View findViewById(@IdRes int id){return getDelegate().findViewById(id);
}

Api26之后

@SuppressWarnings("TypeParameterUnusedInFormals")
@Override
public <T extends View> T indViewById(@IdRes int id){return getDelegate().findViewById(id);
}
kotlin_Standardktapplywithletrunalso_65">五个kotlin Standard.kt里面的函数:apply,with,let,run,also
  1. apply作用
setSupportActionBar(findViewById<Toolbar>(R.id.toolbar))
supportActionBar?.apply{setDisplayHomeAsUpEnabled(true)setDisplayShowHomeEnabled(true)
}

在函数内可以通过this指代该对象,返回值为该对象自己
2. with函数
将某对象作为函数的参数,在函数内可以通过this指代该对象.返回值为函数块的最后一行或指定return表达式

override fun getView(i:Int,view:View?,viewGroup:ViewGroup):View{val rowView=Vview?:LayoutInflater.from(viewGroup.context).inflate(R.layout.task_item,viewGroup,false)val task = getItem(i)with(rowView.findViewById<TextView>(R.id.title)){text = task.titleForList}with(rowView.findViewById<CheckBox>(R.id.complete)){isChecked=task.isCompletedrowView.setBackgroundDrawable(...)setOnClickListener{}}
}
3.lat函数
private fun showMessage(message:String){view?.let{Snackbar.make(it,message,Snackbar.LENGTH_LONG).show()}
}

将对象作为函数参数,在函数块内可以通过it指代该对象.返回值为函数块的最后一行或指定return表达式

4. run函数

其有两种表达式:

  • 第一种无参数输入
  • 第二种会将对象本身this给函数调用
    返回值为函数块最后一行,或者指定return表达式

Object

单例对象是使用Object申明
Kotlin没有静态属性和方法,需要使用单例对象来实现类似的功能.

data

相当于java中定义的数据bean类,其可以直接在属性之后编写get和set方法

@JvmOverloads


http://www.ppmy.cn/ops/98064.html

相关文章

uniapp 网络请求自动处理loading

文章目录 背景整理思路V1版本V2版本V3版本 背景 最近在写uniapp&#xff0c;发现执行网络请求的时候经常要处理Loading效果。 比如&#xff0c;在发送网络请求之前&#xff0c;触发Loadng&#xff1b;无论请求成功还是失败都要关闭Loading&#xff1b;请求失败的时候我们还要…

线程优先级调度

Windows优先级调度算法 系统维护了一个全局的处理器数组KiProcessorBlock&#xff0c;其中每个元素对应于一个处理器的KPRCB对象。其次&#xff0c;另有一个全局变量KiIdleSummary记录了哪些处理器当前是空闲的。所谓一个处理器是空闲的&#xff0c;是指该处理器正在执行空闲循…

python-leetcode刷题日记

1、defaultdict 用于计数&#xff0c;计算元素key出现的个数,可以避免key不存在的时候报错&#xff0c;当KEY不存在的时候默认为0&#xff0c;可以是list、set、str defaultdict[key].append[value] 49. 字母异位词分组 ​ 给你一个字符串数组&#xff0c;请你将 字母异位词…

实时美颜技术的实现:视频美颜SDK与直播美颜工具的最佳实践

视频美颜SDK与直播美颜工具的诞生&#xff0c;为主播美颜一需求提供了技术支撑。接下来&#xff0c;笔者将深入探讨实时美颜技术的实现及其在视频美颜SDK与直播美颜工具中的最佳实践。 一、实时美颜技术的核心原理 具体来说&#xff0c;主要包括以下几个步骤&#xff1a; 1.…

VirtualBox上的Oracle Linux虚拟机安装Docker全流程

1.安装docker依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装docker仓库 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 生成docker的yum源配置到在 /etc/yum.repos.d/docker-ce.repo 3.安装D…

LeetCode216 组合总和 III

前言 题目&#xff1a; 216. 组合总和 III 文档&#xff1a; 代码随想录——组合总和 III 编程语言&#xff1a; C 解题状态&#xff1a; 成功解答 思路 组合题的变种&#xff0c;其实是变得更简单了&#xff0c;还是可以使用回溯法来解决。 代码 回溯法 class Solution { …

实验八:51开发板矩阵按键实验

电路原理图 也就是管脚图 数码管管脚图 只用其中一个&#xff0c;不做选择&#xff0c;默认第一个 代码 main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;u8 gsmg_code[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c…

Eclipse的使用配置教程:必要设置、创建工程及可能遇到的问题(很详细,很全面,能解决90%的问题)

Eclipse的使用配置&#xff1a; Ⅰ、Eclipse 的必要配置&#xff1a;1、Eclipse 的安装&#xff1a;其一、将 Eclipse 解压或安装到没有中文且没有空格的路径下。其二、拿到 eclipse.exe 文件&#xff0c;傻瓜式安装即可; 2、设置工作空间(workspace)&#xff1a;其一、首次启动…