SLP KBIT Advent Calendar 2017 12/17 (Sun) article.
Hi, I'm Nya-chan (itakumi), a 3rd year undergraduate student at the Institute of Student Programming, Kagawa University. Since the Kotlin boom has come to me recently, I would like to write about what Kotlin tastes like in comparison with Java, which everyone will be familiar with so that even first and second graders will be interested. This is the one and only Kotlin calendar. Occasionally, please be healed by seeing just a language introduction article that is not high level at all.
First of all, I think there are some people who say Kotlin before talking about the concrete syntax. Kotlin is a statically typed object-oriented language developed by JetBrains' Andrey Breslav and Dmitry Gemerov. The logo is the one below
JetBrains is famous for developing programming language development environments such as IntelliJ IDEA and RubyMine. Kotlin is an improved version of the Java language based on JetBrains' experience that makes it even simpler and more secure. So Kotlin is a so-called JVM language that runs on a Java virtual machine (JVM). Scala written by Mr. Gray Bear yesterday is also a JVM language. Well, that's all for the first explanation, and I'd like to look at the specific syntax from now on.
Hello World What is the first program you make when you first touch the program language? ?? ?? ?? so! !! ** Hello World ** That's right. The top is the Java Hello World program and the bottom is Kotlin.
HelloWorld.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
HelloWorld.kt
fun main(args: Array<String>) {
println("Hello, world!")
}
What? Very short !!! Yes Kotlin is very short. Java is long. Kotlin is much cleaner to write than Java. You don't need a semicolon at the end of the sentence. Did the JetBrains people forget about the semicolon? ?? You can also define how to write a class by using the fun function name (variable name: type name). System.out.println is also OK with just println !!
Next are variables. Basically, the syntax is like this.
val num = 10 //Cannot be changed with val
var i = 10 //Can be changed with var
i = 20
Also, if you want to specify the type explicitly,
val str: String = "Enthusiasm" // 失礼しましたEnthusiasmと出てしまいました
To do. At first, val and var may be confused, but once you get used to it, there is no problem.
Well, you can write the basic syntax in a straightforward manner, but it will be long, so if you are interested in other things, please check it out.
Nullable Then the syntax is simpler and easier to understand than Java, but that's it? So I'll show you what's in Kotlin though it doesn't have Java. There is a NullPointerException that people who are developing something in Java will definitely come across. It is a guy who is often referred to as Nurponurupo. Kotlin has a movement to eradicate the NullPointerException (a lie). Kotlin can only assign null with a special type called Nullable. This will prevent NullPointerException. The specific writing method is as follows.
//Ordinary String type cannot be assigned null
var str1: String = "Banana"
str1 = null //Compile error
val len1 = str1.length //This is ok. str1 can never be assigned null, so it will not be a nullpo
//I tried to make it Nullable
var str2: String? = "Basilisk time"
str2 = null //No compilation error
val len2 = str2.length //Compile error!!Become a nullpo--Is said
//You can also write like this
val len2 = str2?.length //This will run if it's not null, otherwise it will return null
val len2 = b?.length ?: -1 //Conditional branching by null can be easily done with the Elvis operator.
I said that Kotlin can prevent nullpo by using this, but I think that there are few systems currently running on Kotlin alone. It's almost like using Kotlin to add functionality to the original Java system. So even though it's written in Kotlin, nullpo happens when Java is involved. I would like to note that writing in Kotlin does not mean that there is no nullpo.
Expose the code of the Android stopwatch app you made earlier. It's a fucking code that doesn't think about object orientation at all. A detailed explanation will be given somewhere in the future. .. ..
class MainActivity : AppCompatActivity() {
val handler = Handler()
var timeValue = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val timeText = findViewById<TextView>(R.id.timeText)
val startButton = findViewById<Button>(R.id.start)
val stopButton = findViewById<Button>(R.id.stop)
val resetButton = findViewById<Button>(R.id.reset)
val runnable = object : Runnable {
override fun run() {
timeValue++
timeToText(timeValue)?.let {
timeText.text = it
}
handler.postDelayed(this, 1000)
}
}
startButton.setOnClickListener {
handler.post(runnable)
}
stopButton.setOnClickListener {
handler.removeCallbacks(runnable)
}
resetButton.setOnClickListener {
handler.removeCallbacks(runnable)
timeValue = 0
timeToText()?.let {
timeText.text = it
}
}
}
private fun timeToText(time: Int = 0): String? {
return if (time < 0) {
null
} else if (time == 0) {
"00:00:00"
} else {
val h = time / 3600
val m = time % 3600 / 60
val s = time % 60
"%1$02d:%2$02d:%3$02d".format(h, m, s)
}
}
}
Wow it worked! !! !!
I wrote an article about Kotlin this time, but I still need to learn. After a lot of research, I found a lot of things I didn't know. Let's study together with interested people! !! Also, I'm looking forward to the Aqours fan meeting! !! I'm going to Fukuoka and Makuhari! !! Three └ (┐ 卍 ^ o ^) 卍 Durururu
We're happy to see the addition of ** "Include Kotlin support" ** to the newest Android Studio. The first preparation will be much easier.
Recommended Posts