当前位置:网站首页>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")
}
边栏推荐
- golang mqtt/stomp/nats/amqp
- Cf:c. the third problem
- Cf:h. maximum and [bit operation practice + K operations + maximum and]
- cf:D. Insert a Progression【关于数组中的插入 + 绝对值的性质 + 贪心一头一尾最值】
- Questions about database: (5) query the barcode, location and reader number of each book in the inventory table
- Cf:d. insert a progression [about the insert in the array + the nature of absolute value + greedy top-down]
- [day 30] given an integer n, find the sum of its factors
- curlpost-php
- Interview must brush algorithm top101 backtracking article top34
- 激动人心,2022开放原子全球开源峰会报名火热开启
猜你喜欢

VSphere implements virtual machine migration

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

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

servlet(1)

SAP Spartacus home 页面读取 product 数据的请求的 population 逻辑

The growth path of test / development programmers, the problem of thinking about the overall situation

esxi的安装和使用

Four commonly used techniques for anti aliasing

For a deadline, the IT fellow graduated from Tsinghua suddenly died on the toilet

MCU通过UART实现OTA在线升级流程
随机推荐
curlpost-php
Development trend of Ali Taobao fine sorting model
Why can't mathematics give machine consciousness
Overview of Zhuhai purification laboratory construction details
STM32 key chattering elimination - entry state machine thinking
282. Stone consolidation (interval DP)
MCU realizes OTA online upgrade process through UART
Free chat robot API
logstash清除sincedb_path上传记录,重传日志数据
Spark SQL null value, Nan judgment and processing
Interview must brush algorithm top101 backtracking article top34
[groovy] XML serialization (use markupbuilder to generate XML data | set XML tag content | set XML tag attributes)
After Luke zettlemoyer, head of meta AI Seattle research | trillion parameters, will the large model continue to grow?
详细页返回列表保留原来滚动条所在位置
有谁知道 达梦数据库表的列的数据类型 精度怎么修改呀
golang mqtt/stomp/nats/amqp
Vulhub vulnerability recurrence 75_ XStream
95后CV工程师晒出工资单,狠补了这个,真香...
Spark AQE
Recursive method converts ordered array into binary search tree