JAVA 69

이것이 자바다 Ch 10 예외 처리

- 에러와 예외 - 에러는 JVM 실행에 문제가 생겼다는 것이므로 개발자가 에러에 대해 사전에 대처할 방법이 없다 - 반면 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 1. 예외 -예외는 두 가지 종류가 있다. -> 일반 예외와 실행 예외 1)일반 예외 (컴파일러 체크 예외) - 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 필요한지 검사한다. - 만약 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 2)실행 예외 - 컴파일 하는 과정에서 예외 처리 코드를 검사하지 않는 예외를 말한다. - 일반 예외와 마찬가지로 예외 처리 코드가 필요하다 (둘의 차이는 컴파일 시에 예외 처리를 확인하느냐 안하느냐) - JVM이 일반 예외와 실행 예외를 구분하는 방법 ..

이것이 자바다 Ch 9 중첩 클래스와 중첩 인터페이스

- 중첩 클래스란 클래스 내부에 선언한 클래스를 말한다. - 장점 : 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있다. 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다. - 중첩 인터페이스란 클래스 내부에 선언한 인터페이스를 말한다. (해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해) 1. 중첩 클래스 - 두 가지로 나뉜다. 1)멤버 클래스(클래스의 멤버로서 선언되는 중첩 클래스), 로컬 클래스(메소드 내부에 선언되는 중첩 클래스) 멤버 클래스는 다시 인스턴스 멤버 클래스와 정적 멤버 클래스로 나뉜다. - 멤버 클래스도 하나의 클래스이기 때문에 컴파일 하면 바이트 코드 파일(.class)이 별도로 생성된다. 파일 이름은 다음과 같다 A $ B ..

이것이 자바다 Ch 8 인터페이스

1. 인터페이스의 역할 - 자바에서 인터페이스는 객체의 사용 방법을 정의한 타입이다. - 인터페이스는 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다. - 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 메소드를 호출하면 인터페이스는 객체의 메소드를 호출한다. 그렇기 때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메소드만 알고 있으면 된다. - 개발코드가 직접 객체의 메소드를 호출하면 간단한데 왜 중간에 인터페이스를 두는걸까? 개발코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서다. 인터페이스는 여러개의 객체들과 사용이 가능하므로 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있다..

이것이 자바다 Ch 7 상속

1. 상속이란? - 부모(상위) 클래스의 멤버를 자식(파생) 클래스에게 물려주는 것 - 코드의 중복을 줄여주고 유지 보수 시간을 줄여준다. - 단 이전에 접근 제한자에서 공부했듯이 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 자식 클래스에서 이용할 수 없다. 마찬가지로 default 접근 제한을 갖는 부모클래스의 필드와 메서드도 다른 패키지에서 상속받는 자식클래스에서 이용할 수 없다. 2. 클래스 상속 - 하나의 자식 클래스는 하나의 부모 클래스만 상속할 수 있다 (다중 상속 불가) class 자식클래스 extends 부모클래스{ //필드 //생성자 //메소드 } 3.부모 생성자의 호출 - 자식 객체를 생성하면, 눈에 보이지 않지만 내부적으로 부모 객체가 먼저 생성된 후에 자식 객체가..

이것이 자바다 ch 6 클래스

1.객체 - 객체는 각각 독립적으로 존재하고, 다른 객체와 상호 작용을 하면서 동작한다. - 객체들 사이의 상호작용 수단은 메소드이다. - 객체는 개별적으로 사용될 수 있지만, 대부분 다른 객체들과 관계를 맺고 있다. 2.객체 지향 프로그래밍의 특징 - 캡슐화, 상속, 다형성 1) 캡슐화 -객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것을 말한다. 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다. (외부의 잘못된 사용으로 손상되는 것을 막기 위해) 2) 상속 - 상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체의 코드를 사용해서 새로운 객체를 만들기 때문에 코드의 중복을 줄여준다. ..

이것이 자바다 Ch 5 참조 타입

1. 데이터 타입 분류 - 프로그램이 하는 일은 결국 데이터를 처리하는 일이다. 따라서 데이터를 얼마나 잘 다루느냐가 좋은 프로그램을 작성할 수 있는 관건이다. - 자바의 데이터 타입에는 크게 기본 타입(원시타입 : primitive type)과 참조 타입(reference type)으로 분류된다. - 기본 타입은 정수, 실수, 문자, 논리 리터럴을 저장하는 타입이다. - 참조 타입은 객체의 번지를 참조하는 타입으로 배열, 열거, 클래스, 인터페이스 타입을 말한다. - 변수는 스택 영역에 생성되고, 객체는 HEAP 영역에 생성된다. - 기본 타입의 변수들은 스택에 값을 직접 저장하고 있지만, 참조 타입의 변수들은 HEAP 영역에 저장된 객체의 주소값만 저장하고 있다. 2. 메모리 사용 영역 - java...

이것이 자바다 Ch 4 조건문과 반복문

1. 조건문 (if문, switch문) -switch문은 if문과 마찬가지로 조건 제어문이다. - 조건식이 true일 경우에말 블록 내부의 실행문을 실행하는 if 와 달리 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다. -switch(변수) --> 변수에는 정수 타입(byte, char, short, int, long) 변수나 정수값을 산출하는 연산식만 올 수 있다. 2.반복문(for, while, do-while) -for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다. -while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐일 뿐 방식은 동일하다. -for(초기화식 ; 조건식; 증감식){실행문;} 조건식이 false일..

이것이 자바다 Ch 3 연산자

1. 연산 -연산이란 프로그램에서 데이터를 처리하여 결과를 산출하는 것 -연산에 사용되는 표시나 기호를 '연산자'라고 하고, 연산되는 데이터는 피연산자(operand)라고 한다. -연산식은 반드시 하나의 값만 도출한다. 2.단항 연산자 -단항 연산자는 피연산자가 단 하나뿐인 연산자를 말한다. -부호연산자 (+,-), 증감연산자(++,--), 논리 부정 연산자(!), 비트 반전 연산자(~)가 있다. -부호 연산자(+,-) -boolean 타입과 char 타입을 제외한 나머지 기본 타입에 적용할 수 있다. -부호 연산자를 사용할 때 주의할 점은 산출 타입이 int라는 점이다. (short타입 변수에 부호연산자를 적용하고 다른 short 변수에 넣으려고 하면 컴파일 에러) -증감 연산자(++,--) -bool..

자릿수 더하기

문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한 사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 import java.util.*; public class Solution { public int solution(int n) { String number = String.valueOf(n); char [] list = number.toCharArray(); int [] list2 = new int[list.length]; for(int i=0; i

이것이 자바다 Ch2 변수와 타입

1. 변수 -변수란 하나의 값을 저장할 수 있는 메모리 공간이다. -변수 이름은 메모리 주소에 붙여진 이름이다. 프로그램은 변수 이름을 통해서 메모리 주소에 접근하고, 그곳에 값을 저장하거나 그곳에 있는 값을 읽는다 2.변수의 사용 - 변수를 선언함과 동시에 초기값을 줄 수 있다 (예: int score = 90;) - 이처럼 변수의 초기값은 코드에서 직접 입력하는 경우가 많은데, 소스 코드 내에서 직접 입력된 값을 리터럴(literal)이라고 부른다. - 상수(constant)와 같은 의미지만, 프로그램에서 상수는 '값을 한 번 저장하면 변경할 수 없는 변수'로 정의한다 - 변수는 초기화가 되어야 읽을 수 있고, 초기화되지 않은 변수는 읽을 수 없다 3.변수의 사용범위 - 변수는 선언된 블록 내에서만 ..