728x90
반응형
728x90
반응형
열거형 - Enum 관련된 상수들을 같이 묶어놓은 것 타입과 값을 둘다 체크함으로써 안전한 열거형을 제공 아래의 예시를 보면 ETH 가격과 XRP가격이 같더라도 다른 종류이기 때문에 false를 출력하는 것이 논리적으로 맞지만, 실행 시 true가 실행된다 Coin c = new Coin(); System.out.println(c.ETHPrice == c.XRPPrice) } } class Coin{ String BTC; String ETH; String XRP; int ETHPrice = 100; int XRPPrice = 100; } 열겨형 선언 따라서 열겨형을 선언하여 종류를 구분한다음 값을 비교를 하면 논리적으로 생각한대로 false가 출력이 된다. 1. 일단 먼저 enum을 선언하는 방법을 알아..
와일드 카드 일반적으로 지네릭스를 선언하면 대입된 타입이 일치해야 하는데, 와일드 카드를 사용하면 대입 변수가 불일치하여도 컴파일 오류가 발생하지 않는다. 대표적으로 아래와 같이 선언한다. : 모든 Object 타입 가능, Object / E / T를 직접 선언한 것과 같음 1. : 전부 선언가능 ArrayList arr7 = new ArrayList(); } } class nature{} class plant2 extends nature{} class basil2 extends plant2{} class rose extends plant2{} 지네릭스 형변환 지네릭스가 선언된 타입을 지네릭타입이라 하고 선언되지 않은 클래스 타입을 원시 타입이라 부른다. 원시타입을 지네릭타입으로 형변환이 가능할까? 컴파..
TreeSet 이진 탐색 트리로 구현되어 있고 범위탐색과 정렬에 유리함 이진 트리는 각각의 노드가 최대 0~2개의 노드를 가질 수 있음 각각의 노드 중 작은 값은 부모의 왼쪽, 큰 값은 부모의 오른쪽에 저장된다. 이 때문에 값을 추가하거나 삭제할 때 비교시간이 더 걸리게 된다. 값이 작으면 왼쪽, 크면 오른쪽에 저장되기 때문에 새로운 값이 들어가거나 기존의 값이 없어지게되면 값을 새롭게 비교해야되므로 시간적으로 효율이 떨어짐 TreeSet의 저장과정 다른 Set클래스들과 동일하게 add()를 사용 수정용 TreeSet의 메서드 본 HashSet과 달리 TreeSet은 정렬이 필요없다. 출력문: [4, 5, 7, 9] Set set = new TreeSet(); set.add(5); set.add(4); ..
LinkedList 일반 배열 장점: 구조가 간단하고 데이터를 읽는데 걸리는 시간이 짧다. 단점: 크기 변경이 불가능하기때문에 새로운 배열을 생성하고 기존내용을 그 배열로 복사해야한다. 단점2: 비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다. 데이터를 추가하거나 삭제하면 나머지 데이터를 복사하여 움직이는 시간때문. 비순차적인 데이터 삭제 시: remove함수를 사용하여 index를 뒤에서부터 지정하고 데이터를 옮기는 작업을 생략 LinkedList는 위의 단점들을 보완하여 나온 클래스 배열이 연속적으로 존재하는 데이터를 연결한 집합이라면, LinkedList는 불연속적으로 존재하는 데이터를 연결한 집합. 따라서 배열은 한 데이터를 추가하려면 모든 데이터를 옮겨야 가능하지만, LinkedList는 ..
메서드에 예외 선언하기 예외를 처리하는 방법은 3가지가 있는데 본인이 (1)직접 해결(try - catch)하거나 (2)예외를 선언하여(예외 떠넘기기) 다른쪽에 넘기거나, 혹은 (3)은폐(catch문에 공백으로 남기기)하는 법이 있다. 메서드에 예외를 선언한다는 것은 아래와 같이 메서드에 throws를 붙여 발생할 수 있는 에러의 종류를 나열하는 것이다 아래 메서드 method에는 arithmeticexceptoin이나 (or) index초과 오류가 날 수도 있다는 것을 정의 따라서 메서드안에서 아래의 에러를 처리할 수 있는 try - catch를 선언하던지 혹은 호출한 쪽으로 에러를 떠넘기던지 둘 중에 하나의 액션을 취해야 한다. 주의할 점은 main안의 throw가 아닌 throws로 s를 붙여서 선..
오류 종류 컴파일 에러: 컴파일 시 생기는 오류 (system.out.print => s의 소문자 같은 컴파일 원인 오류) 논리적 에러: 실행은 되지만 의도와 다르게 동작되는 오류 런타임 에러: 시스템을 실행할 때 생기는 오류 (int[] => 빈 공백을 사용할 시 오류등이 런타임 에러) 런타임에러의 종류 에러(error): 수습 불가능한 심각한 오류; out of memory error; OOME 예외(exception): 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리 정의: 오류를 대비한 코드를 작성 목적: 비정상적인 프로그램 종료를 막고 오류 대비 코드로 재실행 예외처리 시 try - catch 문 사용 try { //예외가 발생할 수도 있는 코드 } catch (Exception e) {..
섯다 카드 한벌 생성 섯다카드 클래스 자체를 array로 지정하여 선언 지정한 후 if로 조건문을 선언하여 숫자 조건 추가 숫자를 배정할 때 객체를 선언하여 그 멤버변수에 숫자를 배정 위의 메인클래스에서 for문으로 출력 // 섯다카드 20장을 포함하는 섯다카드 한벌(sutdadeck클래스)를 정의한 것. // 섯다카드 20장ㅇ을 담는 sutdacard배열을 초기화하시오. // 섯다카드는 1-10까지 숫자가 적힌 카드가 한장씩 있고 1,3,8일 경우 둘증의 한장은 Kwang이어야 함 // public class Chap7 { public static void main(String[] args) { SutdaDeck deck = new SutdaDeck(); for(int i = 0; i
인터페이스 정의: 추상메서드의 집합 구현된 것이 전혀 없는 설계도 껍데기 모든 멤버가 public static final & public abstract이여야 함 따라서 public static final과 public abstract는 인터페이스 내에서 생략이 가능하다 추상메서드와 인터페이스의 차이점 추상메서드는 생성자, IV, 추상메서드를 가지고 있지만 인터페이스는 찐으로 아무것도 없는 빈 깡통 IV의 보유 여부로 판별 가능 = 인터페이스 IV 없음, 추상 메서드 IV 존재 다만 상수는 가질 수 있음 = final 인터페이스 선언하는 법 클래스와 동일하게 생성 위의 설명과 같이 앞의 public static final 은 interface에서 필수로 적용되야하기 때문에 생략이 가능하다 interfac..