Java/모두의 자바 63

Chapter 10-53 가운데 글자 가져오기

Ex) getMiddle 메서드는 단어 하나를 입력 받는다. 입력받은 단어의 다운데 글자를 반환하도록 getMiddle메서드를 만들어라. 단어 길이가 짝수이면 가운데 두 글자를 반환하라. package javaStudy; public class StringExercise { String getMiddle(String word) { String middleWord = ""; int index = word.length() / 2; if(word.length() % 2 == 0) { middleWord = word.substring(index - 1, index + 1 ); }else { middleWord = word.substring(index, index + 1); } return middleWord ;..

Chapter 10-52 나누어 떨어지는 숫자 배열

Ex) divisible 메서드는 int형 배열과 int divisor를 매개변수로 받습니다. divisible에 코드를 작성해서 array의 각 요소 중 divisor로 나눠 떨어지는 값만 포함하는 새로운 배열을 만들어 반환하라. 예를 들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 반환해야 한다. package javaStudy; import java.util.Arrays; public class Divisible { public int[] divisible(int [] array, int divisor) { int resultArraySize = 0; for(int i = 0; i < array.length; ++i) { if(array[i] % divisor ..

Chapter 08-44 인터페이스 사용하기

08-44.1 인터페이스 - 앞에서 살펴 봤듯이 인터페이스는 객체를 선언하기 전에 이 객체가 가지고 있어야 할 기능을 모아 놓은 것이다. - 인터페이스는 반드시 해당 인퍼페이스를 구현하는 클래스가 있어야 사용할 수 있다. (1) 앞 단원에서 만든 인터페이스 TV package javaStudy; public interface TV { public int MIN_VOLUME = 0; public int MAX_VOLUME = 0; public void turnOn(); public void turnOff(); public void changeVolume(int volume); public void changeChannel(int channel); } (2) TV인터페이스를 구현하는 LedTV 클래스 만든다..

Chapter 09-51 사용자 정의 Exception

09-51.1 Exception - 앞서 배웠듯이 Exception클래스는 이미 자바에서 정의된 클래스를 이용할 수도 있고 사용자가 직접 정의할 수 있다. public class 클래스명 extends Exception{ ... } - 사용자는 Exception이나 RuntimeException 클래스를 상속 받아 새로운 Exception 클래스를 만들 수 있다. - 새로운 Exception클래스를 만드는 이유는 클래스명만 봐도 어떤 오류가 발생했는지 직관적으로 알려주기 위해서다. - Exception을 상속 받은 클래스를 Checked Exception이라고 한다. - 에러 처리를 하지 않으면 컴파일 에러가 발생하기 때문에 반드시 에러를 처리해야 하는 Exception을 말한다. - RuntimeExc..

Chapter 09-50 Exception 발생시키기

09-50.1 throw - 강제로 오류를 발생시킨다. - 보통 오류를 떠넘기는 throws와 같이 쓰인다. Ex 1) package javaStudy; public class ExceptionExam3 { public static void main(String[] args) { int i = 10; int j = 0; int k = divide(i, j); System.out.println(k); } public static int divide(int i, int j) { int k = i / j; return k; } } Note) 실행결과 - 이 코드는 Exception이 발생한다. - j가 0으로 전달되기 때문이다. - 다음 예제에서 매개변수의 값이 잘못 전달되지 않도록 나눗셈하기 전에 점검하도록..

Chapter 09-49 Throws

09-49.1 Throws Def) Throws : 해당메서드를 호출한 쪽으로 던지는 키워드이다. - 형식 : throws + 발생할 예외 package javaStudy; public class ExceptionExam2 { public static void main(String[] args) { int i = 10; int j = 0; int k = divide(i, j); System.out.println(k); } public static int divide(int i, int j) throws ArithmeticException{ int k = i / j; return k; } } Note) 실행 결과 (1) ExcaeptionExam2 클래스를 만든다. (2) 정숫값 두 개를 입력 받은 뒤 두..

Chapter 09-48 예외(Exception)

09-48.1 예외 처리 Def) 예외: 프로그램 실행하는 과정에선 발생하는 예기치 못한 사건 Ex 1) package javaStudy; public class ExceptionExam { public static void main(String[] args) { int i= 10; int j = 5; int k = i / j; System.out.println(k); } } Note) 실행 결과: 2 Ex 2) j = 0으로 바꾸면? package javaStudy; public class ExceptionExam { public static void main(String[] args) { int i= 10; int j = 0; int k = i / j; System.out.println(k); } }..

Chapter 08-47 익명 클래스(anonymous class)

08-47.1 익명 클래스 만들기 Def) 익명 클래스: 클래스 선언과 동시에 객체를 만든다. - 자식 클래스를 굳이 만들 필요 없는 경우에 사용한다. -> 자식클래스가 필요 없는 경우는? -> Action을 상속 받는 클래스를 ActionExam클래스 안에서만 사용하고 다른 클래스에서 사용하지 않는 경우. -> 한 번만 사용하므로 MyAction 클래스는 만들 필요가 없다. -> 상속 받는 클래스를 따로 정의하지 않고 바로 사용하기 위해 익명클래스를 사용한다. (1) 추상클래스 Action클래스를 만들고 추상 메서드 exec를 작성한다. package javaStudy; public abstract class Action { public abstract void exec(); } - 추상 클래스를 상속..

Chapter 08-46 내부 클래스

08-46.1 내부클래스 Def) 내부 클래스: 클래스 안에 선언한 클래스를 말한다. (특정 클래스 내에서만 사용한다.) - 어느 위치에서 선언하느냐에 따라 네 가지로 나뉜다. (1) 인스턴스 클래스 (instance class) (중첩 클래스) (2) 스태틱 클래스 (static class) (3) 지역 클래스 (local class) (4) 익명 클래스 (anonymous class) 08-46.2 인스턴스 클래스(instance class) (중첩 클래스) - 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언하는 경우이다. package javaStudy; public class InnerExam1 { class Cal{ int value = 0; public void plus() { v..

Chapter 08-45 인터페이스의 default 메서드

08-45.1 자바8이 등장하면서 바뀐 인터페이스 내용 - 기존의 인터페이스는 추상 메서드만 가질 수 있었다 - 자바 8부터는 defeult 메서드와 static메서드를 정의할 수 있다. - 인터페이스를 default로 선언하면 메서드로 구현할 수 있다. 08-45.2 계산기 인터페이스 예제 - 계산기 인터페이스를 구현해서 알아보자. (1) plus, multiple, exec 메서드를 추가한다. package javaStudy; public interface Calculator { public int plus(int i, int j); public int multiple(int i, int j); default int exec(int i, int j) { return i + j; } } (2) mult..