当前位置:网站首页>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")
}
边栏推荐
- Redis' cache penetration, cache breakdown, cache avalanche
- esxi的安装和使用
- The third season of ape table school is about to launch, opening a new vision for developers under the wave of going to sea
- [groovy] compile time meta programming (AST syntax tree conversion with annotations | define annotations and use groovyasttransformationclass to indicate ast conversion interface | ast conversion inte
- 详细页返回列表保留原来滚动条所在位置
- 1791. Find the central node of the star diagram / 1790 Can two strings be equal by performing string exchange only once
- 基于DVWA的文件上传漏洞测试
- MCU通过UART实现OTA在线升级流程
- What is the most suitable book for programmers to engage in open source?
- Introduction to robotics I. spatial transformation (1) posture, transformation
猜你喜欢

JVM_ 15_ Concepts related to garbage collection

Exciting, 2022 open atom global open source summit registration is hot

282. Stone consolidation (interval DP)

测试/开发程序员的成长路线,全局思考问题的问题......

Free chat robot API

Differences between standard library functions and operators

Some features of ECMAScript

servlet(1)

可恢复保险丝特性测试

Dede collection plug-in free collection release push plug-in
随机推荐
Why can't mathematics give machine consciousness
GNSS terminology
Spark SQL null value, Nan judgment and processing
After 95, the CV engineer posted the payroll and made up this. It's really fragrant
看抖音直播Beyond演唱会有感
Use of crawler manual 02 requests
《强化学习周刊》第52期:Depth-CUPRL、DistSPECTRL & Double Deep Q-Network
Mysql--- query the top 5 students
Hundreds of lines of code to implement a JSON parser
孤勇者
[groovy] XML serialization (use markupbuilder to generate XML data | set XML tag content | set XML tag attributes)
[groovy] compile time meta programming (compile time method interception | method interception in myasttransformation visit method)
synchronized 和 ReentrantLock
After Luke zettlemoyer, head of meta AI Seattle research | trillion parameters, will the large model continue to grow?
Starting from 1.5, build a micro Service Framework - call chain tracking traceid
Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
The growth path of test / development programmers, the problem of thinking about the overall situation
Modify the ssh server access port number
Dede collection plug-in free collection release push plug-in
A preliminary study of geojson