BACK/JAVA 37

[JAVA] 예외 : Checked Exception / UncheckedException

예외와 에러의 차이점 에러: 자바 가상 머신 자체에서 발생하는 오류로, 개발자가 해결할 수 없는 오류 예외 : 연산 오류, 숫자 오류 등과 같이 상황에 따라 개발자가 해결할 수 있는 오류 개발자가 예외 처리하면 프로그램은 종료되지 않고 계속 실행된다. Error 클래스와 Exception 클래스는 모두 Throwble 클래스를 상속하고 있다. Exception은 RuntimeException을 상속한 클래스인 Unchecked Exception, 상속하지 않은 클래스인 Checked Exception으로 분류할 수 있다. Checked Exception 컴파일 전에 예외 발생 문법을 검사하고, 예외 처리를 하지 않으면 문법 오류가 발생해 컴파일 자체가 불가능하다. 반드시 try ~ catch로 예외를 잡..

BACK/JAVA 2022.08.01

[JAVA] 이너 클래스(인스턴스, 정적, 지역)

인스턴스 멤버 이너 클래스 객체 내부에 멤버의 형태로 존재 아우터 클래스의 모든 접근 지정자의 멤버에 접근할 수 있음 객체 생성 class A { class B{ } } A a = new A(); A.B b = a.new B(); 이너 클래스 내부에서 아우터 클래스의 멤버를 참조 -> '아우터 클래스명.this' 정적 멤버 이너 클래스 이너 클래스 앞에 static 키워드가 포함 아우터 클래스의 멤버중 객체 생성 없이 바로 사용할 수 있는 정적 멤버만 정적 이너 클래스 내부에서 사용할 수 있음 객체 생성 class A{ static class B{ } } A.B b = new A.B(); 지역 이너 클래스 클래스의 멤버가 아닌 메서드 내에서 정의되는 클래스 정적 클래스로 지정할 수 없음 객체 생성 cla..

BACK/JAVA 2022.07.28

[JAVA] 이너 인터페이스

인터페이스를 클래스 내부에 정의하는 것을 이너 인터페이스라고 한다. 해당 클래스에 의존적인 기능을 수행할 때 이너 인터페이스를 사용한다. 이너 인터페이스의 중요한 특징은 정적 이너 인터페이스만 존재할 수 있다는 것이다. static 제어자를 생략하면 컴파일러가 자동으로 추가해준다. class A{ // ... static interface B{ void bcd(); } } 인터페이스의 객체를 생성하려면 해당 인터페이스를 상속한 자식 클래스를 생성한 후 생성자를 이용하거나 익명 이너 클래스를 이용해 객체를 생성해야한다. 자체적으로는 객체를 생성할 수 없다. 이 때, 객체의 타입을 '아우터 클래스명.이너 인터페이스명' 과 같이 사용한다. class A{ interface B{ // 이너 인터페이스는 자동으로..

BACK/JAVA 2022.07.28

[JAVA] 인터페이스, 디폴트 메서드

인터페이스란? 인터페이스의 의미는 입출력 방식의 호환성을 의미한다. 내부의 모든 필드가 public static final로 정의되고, static과 default 메서드 이외의 모든 메서드는 public abstract로 정의된 객체지향 프로그래밍 요소이다. interface 키워드를 사용해 선언한다. interface A { public static final int a = 3; public abstract void abc(); } 필드와 메서드 앞에 제어자가 확정되어있고 이는 생략해도 컴파일러가 자동으로 삽입한다. 인터페이스의 상속 클래스가 인터페이스를 상속할 때는 implements 키워드를 사용한다. 클래스에서는 여러 부모 클래스에 동일한 이름의 필드나 메서드가 존재할 때 이를 내려받으면 충돌이..

BACK/JAVA 2022.07.28

[JAVA] charAt(i) -'0' 사용 이유

charAt이란 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받게 해주는 함수이다. 숫자형 문자를 CharAt함수로 추출하면 char형이므로 int 형으로 변환하려하면 아스키코드로 변환된다. 따라서 '0' 또는 48을 빼주어야 의도한대로 계산할 수 있다. String n = "123"; n.charAt(0); // 1 n.charAt(1); // 2 n.charAt(2); // 3 (int)n.charAt(0) + (int)n.charAt(1) // 49 + 50 = 99 '0'(char) => 48 '1'(char) => 49 '2'(char) => 50 여기서 -'0'(48)을 해주면 원하는 숫자가 나온다. n.charAt(0)-'0' = 49-48 = 1 n.charAt(1)-'..

BACK/JAVA 2022.07.27

[JAVA] 인터페이스를 이용한 이벤트 처리 기능

class Button{ OnClickListener ocl; // ocl 필드는 OnClickListener 인터페이스의 타입 void setOnClickListener(OnClickListener ocl){ // 인터페이스 객체를 입력매개변수로 넘겨받음 this.ocl=ocl; // 필드를 초기화 } interface OnClickListener { public abstract void onClick(); } void onClick(){ ocl.onClick(); // 초기화된 필드 객체 내부의 onClick() 메서드를 실행 } } public class ButtonApiExample { public static void main(String[] args) { Button btn1=new Butto..

BACK/JAVA 2022.07.21