제네릭은 기본적으로 Generalize, '일반화'한다에서 나온 개념이다. 즉, 데이터의 타입을 일반화 한다는 것이다. 이것을 통해서 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 타임에 미리 지정하는 방법이다. 이전의 JDK 버전에서는 여러가지 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 최상위 객체인 Object 타입을 이용해 왔다. 이 때는 Object 객체를 다시 원하는 타입으로 변환해야 하기에 오류가 발생할 가능성이 높았다. 하지만 이후 버전에서부터는 제네릭의 도입으로 컴파일 시에 미리 타입이 정해져 안정성이 증가하고 타입 변환과 검사를 할 필요가 없어졌다. 그리고 제네릭(타입 T)에 대한 일반 메소드를 구현해 놓으면 모든 타입의 객체에 사용할 수 있어서 확장성이 증가되었다. 정..
Java & Kotlin
내가 여태껏 공부 해왔던 C나 C++과는 다르게 Kotlin에서는 Null을 사용할 수 있는 변수/사용할 수 없는 변수를 구분하여 변수를 선언해 줄 수 있다. Null이 불가능한 선언 val a:Int = 30 var b:String = "Hello" Null이 가능한 선언 val a:Int? = null var b:String? = null 위와 같이 Null이 불가능한 선언에서는 평소 우리가 알듯 선언을 해주면 되지만 Null이 가능한 선언에서는 자료형 뒤에 ?를 넣어줘서 Null이 가능한지 여부를 검사해주면 된다. 이 때 Null이 가능한지 여부를 검사해주는 것이 중요한데, 이는 NPE 즉, Null Pointer Exception이 발생할 수 있기 때문이다. 이는 null을 사용할 수 없는 변수에..
자료형은 변수에 입력한 자료가 문자이냐, 정수이냐, 실수이냐에 따라 달라진다. 1, 2, 3과 같은 정수에서는 Int, "Hello"와 같은 경우 문자열, 1.2, 3.6 과 같이 실수형인 경우 Float, Double 등이 있다. 변수를 선언할 때에는 두가지 방법이 있다. C나 C++에서는 #include// C++인 경우 #include // using namespace std; int main() { int a; float b; double c; char str[10]; return 0; } 위와 같이 선언하지만 Kotlin에서는 fun main() { val a:Int = 4 val b:Float = 1.5F val c:Double = 2.6 val str:String = "Hello" var d..
컴퓨터 언어에는 여러가지 종류가 있다. 제일 하위 언어로는 어셈블리어가 있는데, 어셈블리어는 기계가 이해할 수 있는 0과 1을 이용해서 만들어진 언어이다. 각각의 하위 명령어 세트로 이루어진 내용물을 우리가 다 일일히 외우고 있을 수는 없기에 상당히 어려운 프로그래밍에 속한다. 따라서 기계가 이해하기는 쉽지만 사람이 이해하기에는 어려운 언어이다. 어셈블리어 이후에 절차지향 언어로 C언어가 있다. C언어는 하드웨어를 다루는데 인간 친화적이면서도 유용하기 때문에 임베디드 분야에 많이 이용된다. C언어 이후에는 대형 프로그램을 만들기 위한 객체지향형 패러다임을 도입한 언어인 Java가 만들어졌다. 객체지향형 패러다임은 대형 소프트웨어를 만들기에 적합해서 Java 언어가 오랫동안 많은 분야에 사용되고 있다. J..