当前位置:网站首页>Kotlin basics 1
Kotlin basics 1
2022-07-06 01:09:00 【hzulwy】
var & val & Type derivation
val a = "Brett";
a = "Jett"// This is not allowed , The compiler will report an error
When using val When variables are declared , Variables cannot be changed after being assigned initial values ,val Declared variable is read-only . If you want to change the value of a variable, you can set val Change it to var. Put the above code to val Change it to var Then the compiler will not report an error .
As you can see from the above code ,kotlin Variables of can not declare types , because kotlin There is a type derivation mechanism . The compiler in the above code can automatically deduce a yes String type . Not only can variables not declare types , Functions can also not declare types , for example :
fun a(a:Int){
return 10;// The function can automatically deduce the type of the function as Int
}
kotlin And java There is another difference in the method of :java Methods of must be declared in the class , however kotlin Functions of can be declared inside and outside the class .
Here comes a question of thinking :kotlin Is it a static language or a dynamic language ? The answer is static language . because kotlin The type of is determined by the compiler , All languages that determine the type in the compiler are static languages . If you don't believe me, you can try , Put the above code to a=10, At this time, the compiler will report an error , because a The initial value is String type .
const val
Compilation is constant , Only applicable to kotlin Common basic data types :(String、Double、Int、Float、Long、Short、Byte、Char、Boolean)
Compile time constants can only be defined outside functions : Because if it is defined in a function , You must assign values at runtime , Why compile time constants .
const val PI= 3.14
fun main(){
const val a = 12// This is a mistake
}
Here comes a question :(Byte、Char、Boolean、Short、Long、Float、Int、Double) yes kotlin Class , It belongs to the reference data type , Will it affect performance ? The answer is no , because kotlin The code will eventually turn into java Basic type
Null pointer check
Compare with java Null pointer check for ,kotlin Two ways are added .
val a = "Brett";
a?.length//a by null, Don't execute length Method
a!!.length// No matter what a Is it null, It will be carried out length Method , And java Agreement
if(a != null){
// This kind of java The same as
a.lenth
}
Built in data types
| String | character string |
| Char | A single character |
| Int | integer |
| Float/Double | floating-point |
| List | aggregate |
| Set | No duplicate element set |
| Map | Set of key value pairs |
when expression
//when amount to java in switch, however when Is an expression , You can have a return value
//info The type of Any, amount to java Of Object.Unit amount to java Of void, however void Is a keyword and Unit Is a class
val info= when(x){
1,2 -> "xxxx"
3 -> "aaaa"
else{
println("xxxx")
}
}
if expression
kotlin Of if It's an expression, not a statement , You can have a return value , The return value is the last sentence .
fun main(){
val isLogin = false;
println("${
if (isLogin) congratulations ,else No, congratulations } ")
}
function



The significance of the existence of named functions lies in , When passing parameters , It is not necessary to pass in the order of parameters .
fun main(){
show(-90)
}
private fun show(number:Int){
when(number){
in 0..59 -> println(" Failing grades ")
in 60..100 -> println(" Pass the grade ")
else -> TODO(" There is no such score ")//Nothing type , Will terminate the program and throw an exception .
}
}
// Backquote function
public class test{
public static void is (){
System.out.println("is")
}
}
fun main(){
// First usage
` Test the backquote function `()
// Second usage
test.`is`()
}
private fun ` Test the backquote function `(){
println("test")
}
边栏推荐
- [groovy] compile time metaprogramming (compile time method injection | method injection using buildfromspec, buildfromstring, buildfromcode)
- MYSQL---查询成绩为前5名的学生
- VMware Tools安装报错:无法自动安装VSock驱动程序
- 2020.2.13
- I'm interested in watching Tiktok live beyond concert
- 直播系统代码,自定义软键盘样式:字母、数字、标点三种切换
- Cve-2017-11882 reappearance
- Cf:h. maximum and [bit operation practice + K operations + maximum and]
- Getting started with devkit
- Dede collection plug-in free collection release push plug-in
猜你喜欢

Study diary: February 13, 2022

Leetcode study - day 35

JVM_ 15_ Concepts related to garbage collection

Some features of ECMAScript

Mlsys 2020 | fedprox: Federation optimization of heterogeneous networks

Arduino hexapod robot

Mobilenet series (5): use pytorch to build mobilenetv3 and learn and train based on migration

282. Stone consolidation (interval DP)

Fibonacci number

Pbootcms plug-in automatically collects fake original free plug-ins
随机推荐
Some features of ECMAScript
[pat (basic level) practice] - [simple mathematics] 1062 simplest fraction
ubantu 查看cudnn和cuda的版本
Recursive method to realize the insertion operation in binary search tree
Who knows how to modify the data type accuracy of the columns in the database table of Damon
Promise
For a deadline, the IT fellow graduated from Tsinghua suddenly died on the toilet
Spark AQE
282. Stone consolidation (interval DP)
Introduction to robotics I. spatial transformation (1) posture, transformation
Interview must brush algorithm top101 backtracking article top34
Daily practice - February 13, 2022
curlpost-php
详细页返回列表保留原来滚动条所在位置
Pbootcms plug-in automatically collects fake original free plug-ins
MIT博士论文 | 使用神经符号学习的鲁棒可靠智能系统
[groovy] JSON serialization (convert class objects to JSON strings | convert using jsonbuilder | convert using jsonoutput | format JSON strings for output)
Redis' cache penetration, cache breakdown, cache avalanche
curlpost-php
[groovy] JSON string deserialization (use jsonslurper to deserialize JSON strings | construct related classes according to the map set)