Android --- Kotlin学习之路:基础语法学习笔记
------>可读可写变量
var name: String = "Hello World";
------>只读变量
val name: String = "Hello World"
------>类型推断
val name: String = "Hello World" 可以写成 val name = "Hello World"
------>基本数据类型
1.String,Double,Int,Float,Long,Short,Byte,Char,Boolean
2.Kotlin对于小数的默认推断是Double类型,默认6位
3.and(bits),or(bits), inv()
------>编译时常量
const val PI = 3.1415 需要定义在全局变量范围内,不能定义到函数内部,这才叫编译时常量
------>range 表达式
val number = 148if (number in 0 .. 59) {println("不及格")} else if (number in 60 .. 100) {println("及格")} else if (number !in 0 .. 100) {println("成绩无效")}
------>when 表达式
val month = "January"val result = when(month) {"January" -> "一月""February" -> "二月""March" -> "三月""April" -> "四月""May" -> "五月""June" -> "六月""July" -> "七月""August" -> "八月""September" -> "九月""October" -> "十月""November" -> "十一月""Devember" -> "十二月"else -> "错误的月份"}println(result)
------>String 模板
val isLogin = trueprintln("server respose result : ${if (isLogin) "登录成功" else "登录失败"}")
------>具名函数参数
具名函数的意义是:假如一个函数有多个参数,传递参数的时候为了避免一个一个对,可以直接用名字赋值
loginAction(name = "Derr", age =90)private fun loginAction(name: String, age: Int) {println("name is : ${name}, age is : ${age}")}
------>Nothing 类型会终止程序
TODO("not implement")
------>双等号相当于Java中的equals(),三哥等号是引用的比较,也就是地址的比较
------>类型转换相关
val number1 : Int? = "666.6".toIntOrNull() // 能转换成功就转换,不成功就返回Null
val r = "%3.f".format(65.38344) // r 的类型是String
println(65.683.roundToInt()) // 会四舍五入,结果是66
------>apply 内置函数
apply 函数会返回对象本身
val file = File("D:\\a.txt")
// 普通写法
file.setExecutable(true)
file.setReadable(true)
println(file.readLines())//apply写法
file.apply {setExecutable(true) // 这里面会有this引用,可以省略不写
}.apply {setReadable(true)
}.apply {println(readLines())
}.ll
------>let 内置函数
fun main() {println(getMethod(null))
}
fun getMethod(value: String?): String {// 判空用法,当value为空的时候将不会执行闭包里面的逻辑return value?.let {"值是非空的"} ?: "值是空的"
}
------->run 扩展函数
最后一行当作函数的返回值,在run函数中可以直接访问实例的公有属性和方法
fun main() {println(testRun(Jump()))
}class Jump {fun test():String {return "111"}
}
fun testRun(jump: Jump) : String {jump.run {test() // 直接调用return jump.test()}
}
------>数组的创建
val array: Array<Any> = arrayOf(1, 2, 3, 4)println(array[0])val arrayOfNulls = arrayOfNulls<Any>(5)arrayOfNulls[0] = "1"arrayOfNulls[1] = 'A'arrayOfNulls[2] = 1arrayOfNulls.forEachIndexed(action = {index, item ->println("$index:$item")})
------>可变的集合,不可变的集合
// 可变集合val array = mutableListOf<Any>()array.add("1")array.add(2)// 不可变集合val arrayInt = listOf(1,2,3)// 可变Mapval arrayMap = mutableMapOf<String, Int>()arrayMap["1"] = 1arrayMap["2"] = 1// 不可变Map,通过Pair指定集合里面的元素val arrayMap2 = mapOf<String, Int>(Pair("1",1))for (item in arrayMap2) {println(item)}
------>类
Person().test()
Person.test2()
println(NumUtil.double(4))// 普通类
class Person {fun test() {println("猪头")}// 半生类companion object{fun test2() {println("半生类")}}
}// 静态类
object NumUtil {fun double(num: Int): Int {return num * num}
}
------>泛型类和泛型接口
fun main() {val drinkFruits = DrinkFruits()drinkFruits.drinks("apple juice")val eat = EatEgg("blue")eat.prints()
}
// 泛型接口
interface Drink<T> {fun drinks(t: T)
}
class DrinkFruits: Drink<String> {override fun drinks(t: String) {println("Drink:$t")}
}
// 泛型类
abstract class Eat<T> {abstract fun prints()
}class EatEgg(val color: String) : Eat<String>() {override fun prints() {println("eat:${color}'s egg")}
}
------->扩展方法
扩展方法在什么时候使用呢?
当一个jar包中的方法不满足我们的需求时,
我们可以给jar包中的某个类添加方法,因为jar包中的那个方法本身是不可以修改的
fun main() {println(Jump().doubleJump())
}class Jump {
}fun Jump.doubleJump(): String {val result = "此方法为扩展方法"return result
}
----------->延迟初始化
private lateinit var _binding: FragmentFirstBinding
-----------------------------------------基础知识学习完之后训练的例子-------------------------------------------------
package com.example.kotlindemo// 一次2位数四则运算
fun main() {while(true) {// 控制台输入println("请输入一个2位数的加减乘除")val input = readLine()input?.let {val result = calculate(input)println(result)println("是否继续使用程序,继续使用请输入Y,不使用请输入N")val inputContinue = readLine()inputContinue?.let {if (it != "Y") {System.exit(-1)}}}}}fun calculate(input: String): String {if (input.contains("+")) {val strings = input.trim().split("+")return operate(strings[0].toDouble(), strings[1].toDouble(), "+").toString()} else if (input.contains("-")) {val strings = input.trim().split("-")return operate(strings[0].toDouble(), strings[1].toDouble(), "-").toString()} else if (input.contains("*")) {val strings = input.trim().split("*")return operate(strings[0].toDouble(), strings[1].toDouble(), "*").toString()} else if (input.contains("/")) {val strings = input.trim().split("/")return operate(strings[0].toDouble(), strings[1].toDouble(), "/").toString()} else {return "you input is error!"}
}fun operate(num1: Double, num2: Double, operateChar: String): Double {return when(operateChar) {"+" -> num1 + num2"-" -> num1 - num2"*" -> num1 * num2"/" -> num1 / num2else -> 0.0}
}
相关文章:

Android --- Kotlin学习之路:基础语法学习笔记
------>可读可写变量 var name: String "Hello World";------>只读变量 val name: String "Hello World"------>类型推断 val name: String "Hello World" 可以写成 val name "Hello World"------>基本数据类型 1…...

嵌入式智能手表项目实现分享
简介 这是一个基于STM32F411CUE6和FreeRTOS和LVGL的低成本的超多功能的STM32智能手表~ 推荐 如果觉得这个手表的硬件难做,又想学习相关的东西,可以试下这个新出的开发板,功能和例程demo更多!FriPi炸鸡派STM32F411开发板: 【STM32开发板】 FryPi炸鸡派 - 嘉立创EDA开源硬件平…...

`nmap`模块是一个用于与Nmap安全扫描器交互的库
在Python中,nmap模块是一个用于与Nmap安全扫描器交互的库。Nmap(Network Mapper)是一个开源工具,用于发现网络上的设备和服务。虽然Python的nmap模块可能不是官方的Nmap库(因为Nmap本身是用C/C编写的)&…...

JVM系列 | 对象的创建与存储
JVM系列 | 对象的生命周期1 对象的创建与存储 文章目录 前言对象的创建过程内存空间的分配方式方式1 | 指针碰撞方式2 | 空闲列表 线程安全问题 | 避免空间冲突的方式方式1 | 同步处理(加锁)方式2 | 本地线程分配缓存 对象的内存布局Part1 | 对象头Mark Word类型指针…...

【JavaScript 算法】快速排序:高效的排序算法
🔥 个人主页:空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 快速排序(Quick Sort)是一种高效的排序算法,通过分治法将数组分为较小的子数组,递归地排序子数组。快速排序通常…...

Excel如何才能忽略隐藏行进行复制粘贴?
你有没有遇到这样的情况:数据很多,将一些数据隐藏后,进行复制粘贴,结果发现粘贴后的内容仍然将整个数据都显示出来了!那么,Excel如何才能忽略隐藏行进行复制粘贴? 打开你的Excel表格 Excel如何…...

行人越界检测 越线 越界区域 多边形IOU越界判断
行人越界判断 越界判断方式:(1)bbox中心点越界(或自定义)(2)交并比IoU判断 越界类型:(1)越线 (2)越界区域 1.越线判断 bbox中心点xc、…...

「UCD」浅谈蓝湖Figma交互设计对齐
在现代数字产品的设计和开发过程中,选择合适的工具对于提高团队效率和保证产品质量至关重要。本文将从开发和设计两个不同的角度,探讨蓝湖和Figma两款流行工具的优势与不足,并提出结论和建议。 开发研发视角:蓝湖 优点: 清晰的设计规范:蓝湖为开发工程师提供了清晰的设计…...

VUE3 播放RTSP实时、回放(NVR录像机)视频流(使用WebRTC)
1、下载webrtc-streamer,下载的最新window版本 Releases mpromonet/webrtc-streamer GitHub 2、解压下载包 3、webrtc-streamer.exe启动服务 (注意:这里可以通过当前文件夹下用cmd命令webrtc-streamer.exe -o这样占用cpu会很少,…...

[PaddlePaddle飞桨] PaddleOCR-光学字符识别-小模型部署
PaddleOCR的GitHub项目地址 推荐环境: PaddlePaddle > 2.1.2 Python > 3.7 CUDA > 10.1 CUDNN > 7.6pip下载指令: python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddleocr2.7…...

Python应用开发——30天学习Streamlit Python包进行APP的构建(15):优化性能并为应用程序添加状态
Caching and state 优化性能并为应用程序添加状态! Caching 缓存 Streamlit 为数据和全局资源提供了强大的缓存原语。即使从网络加载数据、处理大型数据集或执行昂贵的计算,它们也能让您的应用程序保持高性能。 本页仅包含有关 st.cache_data API 的信息。如需深入了解缓…...

python实现openssl的EVP_BytesToKey及AES_256_CBC加解密算法
python实现openssl EVP_BytesToKey(EVP_aes_256_cbc(), EVP_md5(), NULL, pass, passlen, 1, key, iv); 并实现AES 256 CBC加解密. # encoding:utf-8import base64 from Crypto.Cipher import AES from Crypto import Random from hashlib import md5def EVP_BytesToKey(passw…...

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现
注:每个学校每个老师对论文的格式要求不一样,故本论文只供参考,本论文页数达到60页以上,字数在6000及以上。 基于SpringBootVueJS微信小程序技术的图书森林共享小程序设计与实现 目录 基于SpringBootVueJS微信小程序技术的图书森…...

【css】image 使用 transform:scale 放大后显示不全的问题
css 可以用 transform: scale(1.2) 实现图片放大 1.2 倍显示的功能,在此基础上可以修改 transform-origin 为用户点击的坐标值优化体验。问题在于 origin 位于图片下方时,图片放大后出现滚动条,而滚动条的高度会忽略放大显示的图片的上半部分…...

损失函数简介
损失函数(Loss Function)是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练过程中,通过最小化损失函数来优化模型的参数,以提高模型的预测准确性。 以下是损失函数的主要用途和一些常用的损失函数类型: 损失函数的用途: 评估模型性能:损失函数提供了一个…...

2023睿抗CAIP-编程技能赛-本科组省赛(c++)
RC-u1 亚运奖牌榜 模拟 AC: #include<iostream> using namespace std; struct nation{int j,y,t; }a[2]; int main(){int n;cin>>n;for(int i1;i<n;i){int x,y;cin>>x>>y;if(y1) a[x].j;if(y2) a[x].y;if(y3) a[x].t;}cout<<a[0].j<<&…...

现在国内的ddos攻击趋势怎么样?想了解现在ddos的情况该去哪看?
目前,国内的DDoS攻击趋势显示出以下几个特征: 攻击频次显著增加:根据《快快网络2024年DDoS攻击趋势白皮书》,2023年DDoS攻击活动有显著攀升,总攻击次数达到1246.61万次,比前一年增长了18.1%。 攻击强度和规…...

微服务到底是个什么东东?
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务运行在其独立的进程中,服务和服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的…...

C++笔试强训5
文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 x1,先x,再x–,while判断永远为真,故死循环 选D。 sizeof会计算\0,strlen不包括\0,并且strlen只计算\0之前的。 所以sizeof是10,strken是4 …...

初学51单片机之UART串口通信
CSDN其他博主的博文(自用)嵌入式学习笔记9-51单片机UART串口通信_51uart串口通讯-CSDN博客 CSDN其他博主的博文写的蛮好,如果你想了解51单片机UART串口可以点进去看看: UART全称Universal Asynchronous Receiver/Transmitter即通…...

数据结构——查找(线性表的查找与树表的查找)
目录 1.查找 1.查找的基本概念 1.在哪里找? 2.什么查找? 3.查找成功与否? 4.查找的目的是什么? 5.查找表怎么分类? 6.如何评价查找算法? 7.查找的过程中我们要研究什么? 2.线性表…...

MySQL入门学习-深入索引.组合索引
在 MySQL 中,组合索引(也称为复合索引)是在多个列上创建的索引。以下是关于组合索引的详细信息: 一、组合索引的概念: - 组合索引是基于多个列创建的索引结构。它可以提高在这些列上进行查询的效率。 二、深入理解组…...

RABBITMQ的本地测试证书生成脚本
由于小程序要求必须访问wss的接口,因此需要将测试环境也切换到https,看了下官方的文档 RabbitMQ Web STOMP Plugin | RabbitMQ里面有这个信息 然后敲打GPT一阵子,把要求输入几个来回,得到这样一个脚本: generate_cer…...

记录些Redis题集(4)
Redis 通讯协议(RESP) Redis 通讯协议(Redis Serialization Protocol,RESP)是 Redis 服务端与客户端之间进行通信的协议。它是一种二进制安全的文本协议,设计简洁且易于实现。RESP 主要用于支持客户端和服务器之间的请求响应交互…...

JVM:垃圾回收器
文章目录 一、介绍二、年轻代-Serial垃圾回收器三、老年代-SerialOld垃圾回收器四、年轻代-ParNew垃圾回收器五、老年代-CMS(Concurrent Mark Sweep)垃圾回收器六、年轻代-Parllel Scavenge垃圾回收器七、Parallel Old垃圾回收器八、G1垃圾回收器 一、介…...

Golang | Leetcode Golang题解之第228题汇总区间
题目: 题解: func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…...

单目3D和bev综述
文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 20205 DETR3D 20216 PETR 20227 bevformerLSSbevdetcaddn指标 mAP NDS标注:…...

每日Attention学习11——Lightweight Dilated Bottleneck
模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…...

EM32DX-E4 IO 扩展模块
输入:0x6000-01 // 输入 0-15 6020H——00H IN0 计数【0~7】 ——01H IN0_SetCountMode S32 r/w 初始值默认为 0 设置 IN0 的计数方式:0 电平下 降沿,1 电平上升沿, 2 电平任意沿 ——02H IN0_Set…...

【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】
欢迎来到CILMY23的博客 🏆本篇主题为:【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux…...