본문 바로가기

Programming83

[Java] Collection Framework 종류 2019. 4. 2.
[Java] 13. StringTokenizer 사용법, 예제 String 클래스에서 split()함수가 문자열을 쪼개 배열에 저장해주는 함수였다면, StringTokenizer 클래스는 보다 간단하게 문자열을 토큰 단위로 나눠주는 함수이다. 구분자의 default 값은 공백으로, 구분자를 입력하지 않으면 공백에서 끊어준다. String phoneNum = "TEL 82-02-997-2059"; StringTokenizer str1 = new StringTokenizer(phoneNum); while(str1.hasMoreTokens()) System.out.println(str1.nextToken()); 공백과 구분자를 모두 토큰으로 사용할 수 있다. StringTokenizer str2 = new StringTokenizer(phoneNum, " -"); whi.. 2019. 4. 1.
[Java] 12. Math Class - BigDecimal, BigInteger, MathContext BigDecimal 오차없는 실수 표현을 위한 클래스. 32bit 정수를 표현 가능하며, 숫자형으로 표현할 수 있는 범위를 넘었기 때문에 문자열로 값을 전달한다. // 소수점 오차 발생 double e1 = 1.6; double e2 = 0.1; System.out.println("두 실수의 덧셈: "+(e1+e2)); System.out.println("두 실수의 곱셈: "+(e1*e2)); // double형인 매개변수가 전달될때 이미 Error가 발생 BigDecimal b1 = new BigDecimal(1.6); BigDecimal b2 = new BigDecimal(0.1); System.out.println("두 실수의 덧셈: "+b1.add(b2)); System.out.println("두.. 2019. 4. 1.
[Java] 11. 예외처리(Exception) 상속구조, finally, throws 등장 배경 C언어 시절에는 예외처리를 if문(if, else if, else)으로 처리했다. 단점은 실행코드와 예외처리 코드가 지나치게 반복되고, 실행코드보다 예외처리코드가 훨씬 더 많아지게 되었다. 그러므로 코드의 가독성이 낮아지는 결과도 생겼다. 그래서 C++은 실행코드 영역과 예외처리 영역을 분리하는 예외처리 문법을 도입하였다. 자바는 C++을 모태로 탄생되었고, C++에 비해서 예외처리를 훨씬 더 강화해 설계하였다. 상속 구조 예외(Exception)와 에러(Error)는 모두 Throwable의 상속을 받는다. 예외는 내(프로그래머)가 짠 코드 상의 문제가 있는 것으로 코드를 수정하면 해결되고, 에러는 시스템 상에서 발생한 비정상적인 상황으로 프로그래머의 통제를 받지 않는다. Finally tr.. 2019. 3. 29.
[Java] 10. 인터페이스(Interface), 의존성 주입 無常 : 만물이 끊임없이 변해 한 순간도 동일한 상태로 머물러 있지 않음 이처럼 개발환경도, 소프트웨어도, 고객의 요청도 계속 변한다. 이에 프로그램 설계의 유연성을 위해 등장한 것이 인터페이스이다. Interface : 접점, 규약, 약속 클래스의 상속(extends): 하위 분류 A는 상위 분류B의 한 종류이다(→A is a kind of B) 인터페이스의 상속(implements): 구현 클래스A는 인터페이스B 할 수 있어야 한다(→A is able to B) 인터페이스에 선언하는 매서드는 자동으로 public abstract가 붙는다. 인터페이스에 선언하는 필드는 자동으로 public final static가 붙는다. 의존성 주입(Dependency Injection) : 클래스 내부에서 결정하지.. 2019. 3. 28.
[Java] 09. 추상클래스(abstract) (설계 관점에서) 클래스의 종류1. 구현 클래스모든 매서드가 이미 구현되어져 상속된다. 일반적인 클래스. 2. 추상 클래스단 1개라도 구현되지 않은 매서드가 존재하는 것. 매서드 명은 있으나 기능을 구현하지 않은 것 → 판단의 여지를 남겨두는 상황. 구현 안 된 매서드가 있으므로 객체 생성이 안 됨(실체화 불가), 무조건 상속을 전제로 만들어진 클래스. 3. 인터페이스 클래스모든 매서드가 구현되어 있지 않음. Spec, 상세서, 명세서를 작성할때 사용. 클래스와 클래스 간의 통신하는 방식을 의미. 추상 클래스 예시>>> 정규직, 계약직, 파트타임 세 가지 유형의 직원을 가진 회사의 급여산정 프로그램을 만든다고 해보자. 고용유형 별 급여 산정 기준이 다르기 때문에 부모클래스인 직원클래스에서 매서드를 구현하.. 2019. 3. 27.
[Java] 08. 매서드 오버라이딩(Method Overriding), 오버로딩과의 차이 매서드 오버라이딩(Method Overriding)부모가 이미 구현해 놓은 매서드를 대신하거나 추가 확장하는 것즉, 자식 클래스에 부모 매서드와 동일한 매서드를 구현하는 것부모 참조변수에 담아도 실제 자식 객체의 매서드를 호출하게 됨(편의성 > 일관성)그러나, 부모 참조변수에서는 자식 객체의 매서드 호출 불가장점: 매개변수를 최상위 부모변수로 매서드 1개만 만들면 된다 !!!!부모(Generalization - 일반적), 자식(Realization - 구체적) public class Speaker { private int volumeRate; void showCurrentState() { System.out.println("볼륨 크기: +volumeRate"); } void setVolume(int vo.. 2019. 3. 26.
[Java] 07. Is Kind Of 관계, Has A 관계 Is Kind Of 관계(ISA 관계, 상속관계)포유류 ← 고양이과 ← 호랑이 처럼 명확한 종속관계를 보일때 상속(extends)을 고려한다. 이를 Is Kind Of 관계 또는 ISA 관계라고 명칭하며, [호랑이 is 고양이과], [고양이과 is 포유류] 라고 표현하고, UML 상에서는 Generalization(△)으로 정의한다. Has A 관계 (포함관계) 대부분의 자연계의 질서에서는 상속관계가 명확하지만, 인간 사회에 체계를 부여해야할 때는 그렇지 않은 경우가 많다. 가령 위의 관계도에서 Gun을 Police에게 상속한다면? Police의 자식클래스인 Nursing Police에게도 자동적으로 상속되기 때문에 문제가 생긴다. 따라서 필요한 경우에만 사용하는 Has A 관계를 적용해야 한다. 그리고.. 2019. 3. 26.
[Java] 06. String, StringBuilder 속도 비교 String 클래스 변경 방법 String 클래스는 작은 문자의 변화에도 계속 새로 객체(인스턴스)를 생성하기 때문에 문자열의 변경이 불가능하다. 각각 다른 인스턴스이므로 변수간의 해시 값이 다른 것을 확인할 수 있다. 이런 작업이 빈번해지면 성능저하의 요인이 된다. Append: 인덱스 끝에 삽입 Insert: 인덱스 중간에 삽입 String str1 = "Lemon"; String str2 = str1+'a'; // str1.concat('a') String str3 = str2+'b'; String str4 = str3+"cd"; System.out.println(str1); System.out.println(str2); System.out.println(str3); System.out.printl.. 2019. 3. 25.