본문 바로가기

JAVA

(227)
Exception 발생시키기 package Java02; public class ExceptionThrowExam { public static void main(String[] args) { // 정수에 값 넣기 int i = 10; int j = 0; try { int k = divide(i, j); System.out.println(k); } catch (IllegalArgumentException e) { System.out.println(e.toString()); } } // 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의 public static int divide(int i, int j) throws IllegalArgumentException { if (j == 0) { //ne..
throws throws는 예외가 발생했을 때 예외를 호출한 쪽에서 처리하도록 던져준다. package Java02; public class ThrowsExam { public static void main(String[] args) { // 정수에 값 넣기 int i = 10; int j = 0; int k = divide(i, j); System.out.println(k); } // 정수 값 2개를 입력받고 그 정수를 나누어서 결과를 리턴하는 divide라는 메서드 정의 public static int divide(int i, int j) { int k = i / j; return k; } } 실행 시 아래와 같이 오류가 발생 divide 메소드 내부에서 ArithmeticException이 발생하지 않게 하려면..
Exception - 예외 아래와 같이 코드를 실행해보자. package Java02; public class ExceptionExam { public static void main(String[] args) { int a = 10; int b = 0; int c = a/b; System.out.println(c); } } 위와 같이 실행시키면 아래와 같이 ArithmeticException이라는 것이 발생을 하면서 프로그램이 종료가 되어버린다. Exception이 발생하게 되면 발생한 지점부터 프로그램은 종료되어 버린다. java는 정수를 0으로 나눌 때 예외라는 것을 발생시킨다. 이렇듯 프로그램이 실행 중에 예기치 못한 사건을 예외라고 한다. 이렇게 예외상황이 발생했을 때 어떻게 해야 할까? 예외 상황에 대비하여 예외 처리를 ..
내부클래스 - local 클래스 / 익명클래스 세번째. 메소드 안에 클래스를 선언한 경우, 지역 중첩 클래스 또는 지역 클래스(local class)라고 한다. 지역중첩클래스 이름에서 느껴지듯이 이 내부 클래스가 인스턴스변수로 선언되는 것이 아니라 메소드안에서 선언되는 경우를 말한다. package Java02; import com.sun.org.apache.bcel.internal.classfile.InnerClass; public class InnerExam2 { public void exec() { // 메소드를 정의하고 이 메소드안에 Cal이라는 클래스가 생성되어 있는 경우 class Cal { // 클래스를 선언하는 거니깐 똑같이 필드를 선언할 수도 있고 // 메소드를 정의해 놓을 수도 있다. int value = 0; public void..
내부 클래스 - instance 클래스/ static 클래스 내부 클래스 : 클래스 안에 선언된 클래스 어느 위치에 선언하느냐에 따라서 4가지 형태가 있을 수 있다. 첫번째. 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우, 이런 경우를 보통 중첩클래스 혹은 인스턴스 클래스라고 한다. package Java02; public class InnerExam { // 내부클래스 // 필드를 선언하는 위치에 클래스를 선언하는 것이다. // 1. Cal이라는 클래스 선언 class Cal{ // 클래스를 선언하는 거니깐 똑같이 필드를 선언할 수도 있고 // 메소드를 정의해 놓을 수도 있다. int value = 0; public void plus(){ value++; } } } 이렇게 내부에 존재하고 있는 Cal이라는 객체를 사용하기위해서는 어떻게해야..
인터페이스(interface)의 default method 기존 인터페이스는 추상메소드만 가질 수 있었는데 Java 8 이후는 default method와 static method를 정의할 수 있도록 변경되었다. 인터페이스가 default라는 키워드로 선언이 되면 메소드를 구현할 수가 있고, 또한 이를 구현한 클래스 내에서는 default메소드를 오버라이딩 할 수 있다. Calculator.java package Java02; public interface Calculator { public int plus(int a, int b); public int multiple(int a, int b); default int exec(int a, int b){ return a+b; } } default라는 키워드를 붙여서 메소드를 선언하면 신기하게도 오류가 발생하지 않고..
인터페이스(interface) 사용 인터페이스를 정의할 때는 그 객체를 선언하기 전에 이 객체가 어떤 어떤기능들을 갖고 있으면 좋을까?하는 이런 기능들을 모아놓은 것이다라고 생각하면 된다. 그런데 그기능들을 정의만 했지, 실제 구현을 하지않았기 때문에 인터페이스만 갖고 무언가를 사용할 수는 없다. 그래서 이런 인터페이스를 반드시 구현해서 사용해야만 한다. LedTV.java(interface인 TV를 구현, implements) package Java02; // class LedTV를 정의하는데 이 LedTV는 인터페이스 TV를 구현하겠다라는 의미 // 이 의미는 TV가 가진 기능들을 LEDTV도 갖게하겠다라는 의미와 같다. public class LedTV implements TV{ @Override public void turnOn()..
인터페이스(interface) 정의 우리는 객체를 만들 기 전에 그 객체가 어떤 기능을 가지고 있을까? 에 대하여 먼저 고민해야 한다. 만약, 우리가 TV라는 객체를 만든다고 가정해보자. 우리는 TV가 어떤 기능을 가질까라는 고민을 하게 될 것이다. 기본적으로 TV의 기능으로 전원을 켜고 끄는 기능, 볼륨 조절 기능, 채널 변경 기능도 꼭 있었으면 좋겠다. TV를 어떻게 만들지 내부적으로 내가 전원을 켰을 때, 어떤 식으로 구현이 되어 켜지는지 모르지만 이런 기능들은 필요해. 라고 생각할 수 있다. 그래서 꼭 필요한 기능들, 무슨 기능들이 있으면 좋을까?라는 고민을 할 수 있을 텐데 이를 구현은 하지 않고, 그 기능들만 쭉 선언해서 가지고 있는 것을 "interface(인터페이스)"라고 한다. 인터페이스: 서로 관계가 없는 물체들이 상호 ..