개발 공부/Java

1. 오류(Error) vs 예외(Exception) 1) 오류 : 오류는 일반적으로 회복이 불가능한 문제 주로 시스템 레벨, 또는 주로 환경적인 이유로 발생한다. 2) 예외 : 코드에 예외가 발생할 수 있다는 것을 인지하고 대응했을 때 회복이 가능한 문제 현실적으로 코드레벨에서 다룰 수 있는 문제상황은 '예외처리'에 속한다. 2. 코드실행 관점에서 예외의 종류 1) 컴파일 에러(예외) .java 파일을 .class 파일로 컴파일할 때 발생하는 에러 주로 문법 오류 2) 런타임 에러(예외) 주로 다루게될 에러(예외) 문법적인 오류는 아니라서 컴파일은 잘 되었지만 프로그램이 실행도중 맞닥뜨리게 되는 예외 3. 예외처리 관점에서 예외의 종류 1) 확인된 예외(Checked Exception) 컴파일 시점에 ..
1. 추상클래스 클래스를 설계도로 비유한다면 추상클래스는 미완성된 설계도이다. 예를 들어 여러 종류의 TV를 생산한다고 가정했을 때 사실 이들의 설계도 90%는 같을 것이며 공통부분을 따로 빼놓는 게 다양한 제품을 만드는데 효율적일 것이다. 1) 추상 클래스의 특징 : 추상 클래스는 추상 메서드를 포함할 수 있다. 그러나 추상 메서드가 없어도 추상 클래스로 선언은 가능하다. 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있다. 추상 클래스는 여러개의 자식 클래스들에서 공통적인 필드나 메서드를 추출하여 만들 수 있다. 2) 추상 메서드 : 아직 구현되지 않은 미완성된 메서드 abstract 키워드를 사용하여 추상 메서드를 선언할 수 있으며 일반적인 메서드와 달리 블록{}이 없다. ..
1. 참조변수의 타입변환 자동 타입변환 : 부모타입 변수 = 자식타입 객체; 는 자동으로 부모타입으로 변환이 일어남. 자식 객체는 부모 객체의 멤버를 상속받기 때문에 부모와 동일하게 취급될 수 있음. 강제 타입변환 : 자식타입 변수 = (자식타입) 부모타입 객체; 부모타입 객체는 자식타입 변수로 자동으로 타입변환되지 않음 다만 자식타입 객체가 부모타입으로 자동 타입변환된 후 다시 자식타입으로 변환될 때만 강제 타입변환이 가능하다. 부모타입 변수로는 자식타입객체의 고유한 멤버를 사용할 수 없기 때문에 사용이 필요한 경우가 생겼을 때 장제 타입변환을 사용한다. // 자식타입객체가 자동 타입변환된 부모타입의 변수 Mammal mammal = new Whale(); mammal.feeding(); // 자식객체..
클래스 간의 관계와 상속 상속을 사용하면 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경이 쉬워질 수 있다. 이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지보수성에 매우 유리해진다. 1. 클래스 간의 상속은 extends 키워드를 사용하여 정의할 수 있다. public class 자식클래스 extends 부모클래스 { } 2. 클래스간의 관계 상속관계 : is - a (~은 ~이다) 포함관계: has - a (~은 ~를 가지고 있다) ** final 키워드를 클래스와 메서드에 선언하면 더 이상 상속, 오버라이딩 할 수 없는 클래스, 메서드가 된다. 3. 오버라이딩 : 부모 클래스로부터 상속받은 메서드의 내용..
객체지향 프로그래밍 현실세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만드는 기법 객체지향 프로그래밍의 특징 캡슐화 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근 가능 필드와 메서드를 캡슐화하여 숨기는 이유는 외부 객체에 사 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 함 Java에서 캡슐화된 객체의 필드와 메서드를 노출 시킬지 감출 지 결정하기 위해 접근 제어자를 사용 상속 부모 객체는 가지고 있는 필드와 ..
*** 추가 length vs length() vs size() - 길이 값 불러오기 1. length arrays(int[], double[], String[]) length 는 배열의 길이를 조회해 준다. 2. length() String related Object(String, StringBuilder etc) length() 는 문자열의 길이를 조회해 준다. ex) "ABCD".length() == 4 3. size() Collection Object(ArrayList, Set etc) size() 는 컬렉션 타입목록의 길이를 조회해 준다.
Java에서 컬렉션은 배열보다 다수의 참조형 데이터를 더 쉽고 효과적으로 처리할 수 있는 기능을 많이 가지고 있다. 1. List : 순서가 있는 데이터의 집합 (데이터 중복 허용) 1) ArrayList : 배열처럼 일렬로 데이터를 저장하고 조회하여 인덱스로 값을 하나씩 조회함 ArrayList(동적 배열)는 Array(정적 배열)와 다르게 크기가 가변적으로 늘어남 ArrayList는 생성시점에 작은 연속된 공간을 요청해서 참조형 변수들을 담아놓고, 값이 추가될 때 더 큰 공간이 필요하면 더 큰 공간을 받아서 저장함. 사용하기 위해서는 java.util.ArrayList를 추가해야 함. 기능 : 선언 : ArrayList intList 생성 : new ArrayList(); 초기화 : 사이즈를 지정하는..
1. 선언 : 2가지 방법이 있는데 첫 번째 방법을 선호한다. -방법 1) 타입[] 변수; EX) int[] intArray; -방법 2) 타입 변수[]; EX) int intArray[]; 2. 생성 : 배열은 참조형 변수처럼 new 명령을 통해서 생성하며, 대괄호 [] 안에 크기를 지정해준다. // 배열 생성 //배열 생성후 초기화하면 배열의 주소가 할당된다. int[] intArray = new int[3]; // 초기값 {0,0,0} boolean[] boolArray = new boolean[3]; // 초기값 {false, false, false} String[] stringArray = new String[3]; // 초기값 {"","",""} //배열 선언만 해놓고 나중에 초기화를 시킬수도..
이번에 배운 내용은 연산자, 조건문, 반복문을 배워봤는데 C언어와 문법의 거의 같아 어려운 점이 없었다. 그래서 차이가 있는 부분 위주로 작성하고자 했다. 1. 연산자 : C언어와 크게 다른건 없다. instance of 연산자는 처음 보는데 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드라고 한다! 산술 연산자 + - * / % 사칙 연산과 비트연산 비교 연산자 > =
입력 Java 프로그램에서는 기본적으로 객체의 next() 명령을 사용해서 입력받습니다. Scanner sc = new Scanner(System.in); // Scanner 객체를 new 명령어로 생성합니다. String input = sc.next(); // sc(Scanner)의 .next(); 를 실행하면 input 변수에 입력한 글자를 받을 수 있습니다. 2. 출력 Java 프로그램에서는 기본적으로 System.out 객체의 println() 명령을 사용해서 출력합니다. Scanner sc = new Scanner(System.in); String input = sc.next(); System.out.println("입력값 : " + input); // 입력한 글자를 출력합니다. // 실행 결과..
감자민성
'개발 공부/Java' 카테고리의 글 목록