728x90
반응형
자바
class User {
private int no;
private String name; private String email; public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
코틀린
data class User(val no: Int, val name: String, val email: String)
자바
@RestController
public class GreetingController {
AtomicLong counter=new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue = "World") String name){
return new Greeting(counter.incrementAndGet(), "Java, "+name); }
}
코틀린
@RestController
class GreetingController {
val counter = AtomicLong()
@GetMapping("/greeting")
fun greeting(@RequestParam(value = "name", defaultValue = "World") name: String) =
Greeting(counter.incrementAndGet(), "Hello, $name")
}
01. Kotlin 이란?
정적 타입의 프로그래밍 언어 이다.
01-1. 주요 특징
문장 끝에 세미콜론을 쓰지 않아도 된다.
new 키워드를 쓰지 않고 객체를 생성한다.
타입 추론을 지원하므로 일반적인 경우 타입을 적지 않아도 된다.
1. 간결한 문법
in Java)
String name = "kim sol ji";
// 타입을 항상 명시해주어야 한다.
Person person = new Person();
// 객체 생성시 new 키워드를 사용한다.
in Kotlin)
val name = "kim sol ji"
// 타입을 명시하지 않아도 타입추론을 통해 String 으로 지정됨
val person = Person()
// 객체 생성시 new 키워드를 사용하지 않음
2. Null 안전성
객체 타입의 변수에서 null값의 허용 여부를 구분하지 않았던 자바와 달리,
코틀린은 이를 명확히 쿠분한다.
val foo: String? = null
// 널 값을 허용하는 문자열 타입(String?)
val bar: String = "bar"
3. 가변/불변 구분
널 값 허용 여부를 구분하는 것과 유사하게,
코틀린에서는 변수 및 변수 내 할당된 값의 불변 여부를 구분한다.
즉, 최초 생성시 할당된 값을 이후에도 변경할 수 있는지 여부는 변수 선언시 사용하는 키워드인 var와 val을 사용하여 선언한다.
4. 값 및 변수 선언
타입을 먼저 적고 그 다음 이름을 적는 자바와 달리, 코틀린에서는 이름을 먼저 적고 타입을 적는다.
val a : String = "foo"
val b = "bar"
// 값 할당 없는 선언시 타입을 꼭 붙여야 한다
val c: String
5. 함수 선언
fun greet(name: String) {
...
}
fun sum(a:Int,b:Int):Int{
return a+b
}
6. 접근 제한자
class Foo{
// 접근 제한자를 지정하지 않으면 public으로 간주
val a = 1
protected val b = 2
private val c = 3
// internal 을 대신 사용한다
internal val d = 4
}
public 제한자는 코틀린에서도 동일하게 사용할 수 있으나, 제한자가 없으면 public으로 간주하므로 이를 생략하는 것을 권장한다.
728x90
반응형
'⚙️Backend > Kotlin' 카테고리의 다른 글
[ Kotlin ] apply, with, let, also, run (0) | 2020.11.28 |
---|---|
[ Kotlin ] 200913 정리 (0) | 2020.09.13 |