Programming/Java

[Java] length, length(), size() 차이
[ 1 ] length - 배열의 길이 int[] arr = new int[10]; double[] arr2 = new double[10]; String[] arr3 = new String[10]; System.out.println(arr.length); System.out.println(arr2.length); System.out.println(arr3.length); length는 배열의 길이를 구할 때 사용된다. [ 2 ] length() - 문자열의 길이 String str = "length() test"; System.out.println(str.length()); length() 는 문자열의 길이를 구할 때 사용된다. [ 3 ] size() - 컬렉션프레임워크 타입의 길이 ArrayList l..

[Java] Enum 클래스
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] Enum 클래스란? enum 이란 관련있는 상수(constant)들의 집합을 의미한다. Java에서는 final, interface 활용 등 상수를 정의할 수 있는 여러가지 방법이 있다. 하지만, 여러가지 불편함과 한계가 있었기에 JDK 1.5부터 enum 을 사용할 수 있게 되었다. enum 클래스의 대표적인 장점은 다음과 같다. (1) 코드가 단순해진다. (2) 인스턴스 생성과 상속을 방지할 수 있다. (3) 구현의 의도가 열거임을 분명하게 나타낼 수 있다. final과 interface로 상수 정의하는 방법을 먼저 살펴보며 enum 클래스의 장점을 느껴보자. [ 2 ] final 활용 public cl..

[Java] Object 클래스
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] Object 클래스란? 자바에는 가장 기본적인 동작을 수행하는 클래스의 집합으로서 import하지 않고도 사용할 수 있는 java.lang 패키지가 있다. java.lang 패키지에는 모든 클래스의 최고 조상 클래스인 Object 클래스가 있으며, Object 클래스는 필드는 없고, 11개의 메소드로 구성되어 있다. 그 중 대표적인 메소드인 toString, equals, finalize, clone을 정리하고자 한다. [ 2 ] toString() toString() 메소드는 해당 인스턴스에 대한 정보를 문자열로 반환하는 메소드이다. 반환되는 문자열은 "class가 속해있는 패키지.class@객체식별자"이며,..

[Java] 타입 변환 (type conversion) - 자동 타입 변환, 강제 타입 변환
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 타입 변환 (type conversion) 이란? 하나의 타입을 다른 타입으로 바꾸는 것을 타입 변환이라 하며, Java에는 자동 타입 변환과 강제 타입 변환이 있다. 기본적으로 크기가 작은 타입에서 큰 타입으로의 타입 변환은 생략할 수 있고(자동 타입 변환), 자동 타입 변환이 되지 않는 경우에는 타입 캐스트 연산자를 활용하여 강제 타입 변환을 해야 한다(기본 데이터 타입의 경우 데이터 손실 발생할 수 있다). C/C++과 유사한 기본 데이터 타입에서의 타입 변환은 간단히 정리하도록 하고, 본문에서는 Java의 클래스 타입 변환에 초점을 두도록 하겠다. byte → short / char → int → lon..

[Java] 다형성(Polymorphism)
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 다형성(Polymorphism)이란? 다형성에 대한 정의가 여러가지 글, 영상자료마다 다르고 다양해서 하나로 정의하기 어려웠다. 이에 필자가 찾은 모든 정의를 정리하고자 한다. (1) 하나의 타입에 실행결과가 각기 다른 여러 객체를 대입할 수 있는 것 (2) 하나의 객체가 여러가지 타입을 가질 수 있는 것 (3) 하나의 메소드나 클래스가 다양한 방법으로 동작하는 것 세 정의는 미묘하게 다르지만, 공통된 부분이 있다. 바로 "하나"의 무엇이 "여러가지, 다양한" 것을 할 수 있고, 될 수 있음을 나타내고 있다. 이 공통된 부분에 초점을 두고 다형성을 정리해보자. [ 2 ] 메소드의 다형성 하나의 메소드가 다양한 ..

[Java] 추상 클래스(abstract class)와 인터페이스(interface)
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 추상 클래스(abstract class)란? abstract는 클래스나 메소드를 사용하려면 반드시 상속해서 사용하도록 강제하는 역할을 한다. 즉, abstract class 내부에 abstract method가 선언되어 있다면, 이를 상속받는 서브 클래스에서 abstract method를 완성하고 사용해야 한다. "서브 클래스에서 완성하고 사용해야 한다"라는 말이 와닿지 않을 수 있다. 아래의 코드를 보자. abstract class A { public abstract void a(); } class B extends A { public void a() { System.out.println("추상 클래스 A의 ..

[Java] 패키지(Package)
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 패키지란? 하나의 컴퓨터에는 같은 이름을 가진 2개의 파일이 공존할 수 없다. 즉, 내가 test.txt 파일을 작성해서 저장했다면, 그 내용이 다를지라도 또다른 test.txt 파일을 저장할 순 없는 것이다. 이러한 불편함을 해결해 준 것은 '폴더'였다. 우리는 카테고리를 설정하여 그에 상응하는 폴더를 생성하고, 그 폴더 내에는 비슷한 내용을 담은 수많은 파일들을 저장할 수 있게 되었다. 또한, 각자가 다른 폴더에 저장되어 있다면 같은 이름을 가진 파일도 공존할 수 있게 되었다. Java의 패키지도 폴더와 같은 역할을 한다. 비슷한 성격의 클래스들을 하나의 패키지에 모아 저장할 수 있는 것이다. 패키지를 활용..

[Java] Overriding, Overloading
※ 본문은 혼자 공부한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] Overriding 상속이란 자식 클래스에서 부모 클래스의 필드와 메소드를 물려받아 사용할 수 있는 것을 의미한다. 그렇다면 자식 클래스는 부모 클래스의 메소드를 무조건 그대로 사용해야 할까? 부모 클래스 메소드의 동작 방법을 변경하고 싶을 때 우리는 Java의 Overriding 기능을 활용할 수 있다. class Parent { int left; int right; public Parent(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.righ..