当前位置:网站首页>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

 Insert picture description here
 Insert picture description here
 Insert picture description here
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")
} 
原网站

版权声明
本文为[hzulwy]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140144218248.html