분류 전체보기

    [JAVA] 예외 처리

    에러(오류) 종류 시스템 에러: 컴퓨터의 오작동으로 인해 발생하는 에러 ⇒ 소스코드로 해결이 안됨( 가장 심각한 에러) 컴파일 에러: 소스코드상의 문법적인 문제로 발생하는 에러 ⇒ 소스코드 수정으로 문제 해결 가능(빨간 밑줄로 알려줌) 런타임 에러: 소스코드 상으로는 문제가 없는데 프로그램 실행 중 발생하는 에러 ⇒ 사용자의 잘못일 수도 있고, 개발자가 예측 가능한 경우를 제대로 처리 안해놓은 것 일수도 있음 논리 에러: 소스코드 상의 문법적인 문제도 없고(빨간 밑줄이 없다), 실행했을 때도 굳이 문제가 되지 않지만 프로그램 의도상 맞지 않는 오류 ⇒ 예를 들면 true 값이 들어가야 하는데 false가 들어가서 내 의도와 정반대로 실행되는 경우 시스템 에러를 제외한 컴파일 에러, 런타임 에러, 논리 에..

    [JAVA] 인터페이스

    [인터페이스] 상수 필드(static final)와 추상 메소드(abstract)들로만 이루어진 추상클래스의 변형체(종특) 표현법 접근제한자 interface 인터페이스명{ //필드부=> 상수 필드만 작성(static final) /*public static final*/ int NUM=10; //인터페이스에는 상수 필드만 정의할 수 있기 때문에 애초에 앞의 public static final은 생략 가능하다 //메소드부=> 추상 메소드만 작성(abstract) /*public abstact*/ void eat(); void sleep(); //인터페이스에는 추상메소드만 정의할 수 있기 때문에 애초에 앞의 public abstract는 생략 가능하다 } 특징 인터페이스에서 필드는 무조건 “상수 필드”로 ..

    [JAVA] 추상클래스

    추상클래스 미완성된 클래스 추상클래스 특징 추상메소드가 존재하는 순간 반드시 추상클래스로 정의된다 단, 추상메소드가 없어도 클래스명 앞에 abstract를 붙이면 추상클래스로 만들 수 있다 객체 생성이 불가능하다(단, 참조형 변수로써 자식 객체를 담을 때는 사용 가능하다)⇒다형성 적용 추상클래스가 필요한 때 자식 클래스들에게 일정한 규칙을 부여하고 싶을 때 쓰면 좋다 클래스가 아직 구체적이지 않고 구현이 완벽한 상태가 아닐 때(개념적으로) 현재 이 클래스에 대한 객체 생성을 애초에 막고싶을 때(기술적으로) 추상메소드 미완성된 메소드로 몸통부 { }가 구현되어있지 않은 메소드 추상메소드 특징 자식클래스에서 오버라이딩을 통해 완성되는 메소드(강제로 오버라이딩을 해야한다) 오버라이딩을 안했을 경우 에러 발생 ..

    [JAVA] 상속

    상속 매 클래스마다 중복된 필드, 메소드들을 하나의 클래스(부모)로 정의해둔 후에 다른 클래스(자식)에서 해당 부모 클래스의 내용들을 가져다 쓰는 개념 상속의 장점 보다 적은 양의 코드로 새로운 클래스들을 관리 가능하다 중복된 코드를 부모 클래스에서 공통적으로 관리하기 때문에 새로운 코드를 추가하거나, 기존의 코드를 수정하는데에 용이하다 프로그램의 생산성을 높여준다. 유지보수에도 크게 기여한다 상속의 특징 클래스간의 상속은 다중 상속이 불가능하다(단일 상속만 가능) 명시되어있지는 않지만 자바에서 제공하는, 또는 내가 만든 모든 클래스는 Object라는 클래스의 후손이다 Object 클래스에 있는 메소드를 그대로 가져다 쓸 수 있음 Object 클래스에 있는 메소드가 맘에 안든다면 내 입맛대로 오버라이딩해..

    [JAVA] getter와 setter

    객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있기 때문이다 이런 문제점을 해결하기 위해 데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다 이러한 역할을 하는 메소드는 Setter이다 외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋다 이러한 역할을 하는 메소드는 Getter이다 클래스를 선언할 때 가능하다면 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋다 private 데이터타입 name; //Ge..

    [JAVA] 객체와 클래스

    클래스 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다 클래스 선언 클래스 작성 규칙 하나 이상의 문자로 이루어져야 한다. ex) Car, SportCar 첫 번째 글자는 숫자가 올 수 없다. ex) 3Car(x) '$', '_' 외의 특수 문자는 사용할 수 없다. ex) $Car, _Car, %Car(x), *Car(x) 자바 키워드는 사용할 수 없다. ex) int(x), if(x) 객체 생성과 클래스 변수 클래스로부터 객체를 생성하는 방법은 new 연산자를 사용하면 된다 new 클래스(); new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성된..

    [JAVA] Level.1 - 두 정수 사이의 합

    코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력 예 a b return 3 5 12 3 3 3 5 3 12 나의 풀이 class Solution { public long solution(int a, int b) { long answer = 0; int max = Math.max(a, b); int mi..

    [JAVA] 객체 지향 프로그래밍(OOP)

    객체 지향 프로그래밍 (OOP: Object Oriented Programming) 만들고자 하는 완성품인 객체를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법이다 객체(Object) 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. EX) 자동차, 자전거, 책, 사람, 공부, 주문, 수면 등 객체는 속성과 동작으로 구성되어 있다. 자바에서는 속성과 동작을 각각 필드(field)와 메소드(method)라고 부른다 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(Object Modeling)이라고 한다 객체 지향 프로그래밍의 특징 캡슐화..

    [JAVA] 배열

    변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다 배열이란? 배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다 배열은 같은 타입의 데이터만 저장할 수 있다(ex: int배열은 int 값만 저장 가능하고, String 배열은 문자열만 저장 가능하다) 배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정된다 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다 배열 선언 배열을 사용하기 위해서는 우선 배열 변수를 선언해야 한다 배열 변수 선언은 두 가지 형태로 작성할 수 있다( 자료형[ ] 배열명; 자료형 배열명[ ];) 배열 변수는 참조 변수에 속한다 참조할 배열 객체가 없다면..

    [JAVA] 분기문-break, continue

    break문 반복문인 for문, while문, do-while문을 실행 중지할 때 사용한다 switch문에서도 break문을 사용하여 switch문을 종료한다 break문 예시 for(int i=1; i