1. 자바에서 compareTo란?compareTo 메서드는 Comparable 인터페이스가 제공하는 메서드로 두 객체를 비교할 때 사용하는 메서드입니다.public class Jewel implements Comparable { int weight; int value; public Jewel(int weight, int value) { this.weight = weight; this.value = value; } @Override public int compareTo(Jewel o) { return this.weight - o.weight; }} 다음과 같이..
1. null인 객체를 참조하는 변수를 매개변수로 넘겼을 때 public void printNull() { Object obj = null; System.out.println(obj); System.out.println(obj + " is object's value"); } 다음과 같이 null인 객체를 출력했을 때, 오류가 발생하는지 안하는지를 알려면 PrintStream의 메서드 print()와 println()을 이해해야 한다. 결과부터 보자면 각각 "null"과 "null is object's value"라는 문자열이 출력된다. 2. String.valueOf() 우리는 객체를 호출할 경우, 자동으로 해당 객체가 갖고 있는 Object 메서드인 toString()이 호출된다는 것을 알고 있다. 하..
이번에 설계 프로젝트에서 백엔드 파트를 맡으면서 가장 많이 겪었던 것은 NullPointerException(NPE)이었다. 개발자들의 대부분이 겪으며, 가장 많이 겪는 예외가 NPE인 이유를 알 수 있었다. 정말 예상치 못한 곳에서 NPE가 발생하였고, 이를 방지하기 위해 JAVA 8에서 도입된 Optional의 필요성을 드디어 알게 되었다. 어떠한 기술을 배울 때 해당 기술의 필요성을 느낀다면 더욱 몰입하게 되는 것 같다. 이번 Optional 파트를 읽으면서 내 프로젝트의 어떠한 문제들을 해결할 수 있을지에 대해서도 생각해보았다. 1. 생각과 책임을 회피하는 가장 간단한 방법 - null 메서드의 반환 값을 결정할 때, 특정 조건으로 분기되는 경우가 있다. 예를 들어, a의 조건을 만족할 때는 A를..
프로그래밍을 함에 있어서 유연한 설계를 하는 것은 매우 중요하다. 팀 프로젝트를 하면서 요구사항이 날마다 변하는 것을 느낀 후로 쉽게 변동시킬 수 있는 코드를 작성하는 것이 필요함을 느꼈다. 이번 모던 자바 인 액션 1부 2.2 동적 파라미터화를 읽으면서 이 부분에 대한 아이디어를 얻을 수 있었다. 동작 파라미터화란, 코드에서 실행될 수 있는 동작을 해당 코드가 실행되는 시점에서 결정할 수 있도록 하는 것이다. 메서드를 작성함에 있어서 특정 값, 특정 조건을 집어넣을 경우, 요구사항이 추가되거나 변경될 경우, 새로운 메서드를 만들거나 기존의 구현부를 수정해야 한다. 하지만 메서드에 실행될 동작을 파라미터로 넣는다면, 입력받은 동작에 맞는 로직을 수행할 수 있다. 이는 변동되는 요구사항에 알맞는 방법이다...
상속 관계에서 하위 클래스에서 상위 클래스로 형변환 하는 것을 업 캐스팅이라고 한다. 그리고 반대로 다시 상위 클래스에서 하위 클래스, 원래 클래스로 되돌아 오는 것을 다운 캐스팅이라고 한다. 하지만 업 캐스팅과는 다르게 다운 캐스팅의 경우 자동으로 일어나지 않으므로 명시적으로 작성해야 한다. 1. 다운 캐스팅 업 캐스팅을 할 경우, 실제 인스턴스가 갖고 있는 멤버 변수들을 다 사용하지 못할 수 있다. 따라서 실제 인스턴스가 갖고 있는 멤버 변수나 메서드를 사용해야 하는 경우 다시 원래 타입으로 되돌아가야 하는 상황이 발생할 수 있다. 이 때 사용하는 것이 다운 캐스팅으로 자동으로 일어나지 않는다. Customer vc = new VIPCustomer(); //묵시적 VIPCustomer vCustome..
객체의 상속 과정에서 상속을 하는 클래스를 상위 클래스, 상속을 받는 클래스를 하위 클래스라고 한다. B extends A라고 한다면 A는 상위 클래스, B는 하위 클래스이다. 상속을 사용하는 이유는 기존에 구현된 클래스를 확장(extends)하는 의미와 함께 코드의 재사용, 유지 보수에 용이하기 때문이다. 즉 하위 클래스는 상위 클래스의 멤버 변수나 메서드를 가진 채(상속)로 시작(생성)하는 것이다. 하지만 컴퓨터 입장에서 하위 클래스를 실행하기 위해서는 상위 클래스가 먼저 실행되어야 할 것이다. 즉, 메모리에 먼저 상위 클래스를 생성하고 그 다음 하위 클래스를 생성함으로써 하위 클래스의 존재를 인식할 수 있다. 하위 클래스에서 생성자를 호출했을 때 실제로 구현되는 과정을 알아보자. 1. 하위 클래스의..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.