본문 바로가기

JAVA

(6)
Equals와 hasCode Object 클래스는 최상위 부모이며 모든 클래스에서 Object의 메소드를 사용할 수 있다. 1. 객체 비교 ( equals() ) public class Test01{ public String id; public Test01(String id) { this.id = id; } @Override public boolean equals(Object obj) { if(obj instanceof Test01) { Test01 test01 = (Test01) obj; if(this.id.equals(test01.id)) { return true; } } return false; //매개값이 Test01이 아니거나 id 필드값이 다른 경우 false } } public class Test02 { public s..
예외 클래스 1.예외 종류 예외란 사용자의 잘못된 조작 및 개발자의 잘못된 코딩으로 발생하는 프로그램 오류를 말한다. 예외가 발생하면 프로그램은 바로 종료된다는 점이 에러와 비슷하다. 그러나 예외와 에러의 다른 점은 예외는 예외 처리 ( exception handling ) 을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지의 종류가 있다. 1. 일반 예외 ( Exception ) 2. 실행 예외 ( Runtime Exception ) 일반 예외는 프로그램 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일 하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약에 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 실행 예외는 실행 시 예측할 수 없이 갑자기..
final 필드와 상수 1. final 필드 final 은 '최종적' 이라는 뜻을 가지고 있다. 그렇다면 final은 최종적인 필드라는 의미인데, 어떻게 사용될까? final 필드는 초기값이 저장되면 최종적인 값이 되면서 프로그램 실행 도중에 수정할 수 없다는 것이다. final 필드의 초기값을 줄 수 있는 방법은 2가지가 있다. 1. 필드 선언시 2. 생성자 생성시 단순한 값이라면 필드 선언시에 주는 것이 제일 간단하지만 초기화 코드가 복잡하거나 생성시 외부 데이터로 초기화 해야한다면 생성자에서 초기값을 지정해야한다. 이해하기 어려울 수 있으니 코드로 알아보겠다. public class Test01{ final String nation = "Korea"; final String ssn; String name; //생성자 pu..
싱글톤 가끔 코딩을 하다보면 단 하나의 객체만 만들도록 보장해야 하는 경우가 있다. 단 하나만 생성해야한다고 해서 이 객체를 싱글톤 ( Singleton ) 이라고 한다. 싱글톤을 만들려면 클래스 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아야한다. 왜냐하면 호출한 만큼 객체가 생성되기 때문이다. 생성자를 외부에서 호출하지 못하도록 하려면 생성자 앞에 private 접근 제한자를 붙여주면 된다. public class Test01{ //정적 필드 private static Test01 singleton = new Test01(); //생성자 private Test01() {} //정적 메소드 static Test01 getInstance() { return singleton; } } 외부에서 객체를 ..
인스턴스 맴버와 정적 맴버 정적 필드와 정적 메소드를 선언하려면 필드와 메소드 선언 시에 static을 꼭 붙혀주어야 한다. 정적 필드, 메소드는 클래스에 고정된 맴버이므로 클래스의 로딩이 끝나면 바로 사용할 수 있다. 객체마다 가지고 있어야 할 데이터라면 인스턴스 필드를 선언 객체마다 가지고 있을 필요가 없는 공용 데이터라면 정적 필드를 선언하는 것이 좋다. public class Calculator{ //계산기 별로 색상이 다를 수 있어서 인스턴스 필드 선언 String color; //계산기에서 사용하는 파이의 값은 동일하므로 정적 필드 선언 static double pi = 3.14159; //계산기에서 사용하는 덧셈의 값은 동일하므로 정적 메소드 선언 static int plus(int x, int y) { return ..
StringBuilder 란 자바에서 String 과는 별도로 StringBuilder를 사용한다. 왜 사용되는지 궁금증이 계속 있었는데 확인 해 보니 String 자체는 불변의 값이다. 그러므로 String에 변화를 줄 경우 concat 혹은 + 를 이용해서 값을 변경하게 되는데 이러한 처리 방법은 속도가 느려서 비효율 적이므로 StringBuilder를 사용하게 된다. sb.append(값) - StringBuffer, StringBuilder 뒤에 값을 붙인다 sb.insert(인덱스, 값) - 특정 인덱스부터 값을 삽입한다 sb.delete(인덱스, 인덱스) - 특정 인덱스부터 인덱스까지 값을 삭제한다 sb.indexOf(값) - 값이 어느 인덱스에 들어있는지 확인한다 sb.substring(인덱스, 인덱스) - 인덱스부터 ..