Langauge

    [Java] 예외처리(Exception Handling)

    [Java] 예외처리(Exception Handling)

    예외처리란? 예외가 발생하여 프로세스가 강제적으로 종료되는 것을 예외 처리를 통해 프로세스가 강제적으로 종료되지 않게 핸들링하는 것 자바 가상 머신은 예외 처리 구문이 있으면 예외 처리가 됐다고 판단하여 프로그램을 강제 종료하지 않는다. 예외 처리 (try - catch - finally) 예외 처리 문법은 3가지 요소(try, catch, finally)로 구성돼 있다. try : 예외가 발생할 수 있는 코드를 포함하는 블록 catch(예외 타입) : 예외 타입에 해당하는 예외를 처리하는 코드를 포함하는 블록, 다중 생성 가능 finally : 예외 발생 유무를 떠나 항상 실행되는 블록, 생략 가능 // 각 예외마다 처리해야할 내용이 다를 경우 try { // 예외가 발생할 가능성이 있는 코드 } ca..

    [Java] 예외(Exception)

    [Java] 예외(Exception)

    예외와 에러 에러 : 하드웨어의 고장 또는 JVM 자체에서 발생하는 오류를 의미하며, 개발자가 대처할 수 없는 오류를 의미한다. 예외 : 개발자가 프로그램을 작성하는 과정에서의 실수 또는 사용자의 잘못된 조작에 의해 발생하는 오류를 의미하며, 개발자가 대처할 수 있는 오류를 의미한다. 에러는 개발자가 해결할 수 있는 방법이 없지만 예외는 예외 처리(Exception Handling)을 통해 에러를 피하여 프로그램이 비정상적으로 종료되는 것을 막을 수 있다. 예외 클래스의 구조 Error 클래스와 Exception 클래스의 상속 구조 예외의 최상위 클래스는 Exception 클래스, 에러의 최상위 클래스는 Erorr 클래스다. 두 개의 클래스 모두 Throwable 클래스를 상속하고 있다. 에러와 예외 모..

    [Java] 익명 이너 클래스(Anonymous Class)

    익명 이너 클래스란? 단어 그대로 '이름을 가지지 않은 클래스'를 의미한다. 이름이 없기 때문에 생성자도 없다. 하나의 객체만을 생성하는 일회용 클래스다. 이름이 없기 때문에 다시 찾을 수도 없다. 익명 이너 클래스를 사용하면 코드를 간결화할 수 있다. (클래스 작성 + 해당 클래스 타입의 객체 생성)를 익명 이너 클래스 하나로 해결할 수 있다. 여러 개의 객체를 생성해야 하는 상황에서는 사용하지 않는 편이 좋다. 일회용 클래스이기 때문에 객체를 생성할 때마다 기능을 구현해야 하기 때문이다. // 익명 이너 클래스 new 클래스명() { // 기능 구현 }; new 인터페이스() { // 기능 구현 }; // 세미콜론(;) 필수 익명 이너 클래스 사용 예시 인터 페이스 객체 생성 public class..

    [Java] 이너 인터페이스(중첩 인터페이스)

    이너 인터페이스(중첩 인터페이스)란 이너 인터페이스란 클래스의 멤버로 선언된 인터페이스를 의미한다. 해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위해서 // 이너 인터페이스 정의 class OuterClass { // 이너 인터페이스 생성 static interface InnerInterface { public 리턴타입 메서드명(); } } 이너 인터페이스의 특징 사용자 인터페이스(UI)의 이벤트 처리에 많이 사용된다. 정적 이너 인터페이스만 존재할 수 있다. static 제어자를 생략하면 컴파일러가 자동으로 추가한다. 컴파일시 '아우터 클래스$이너 인터페이스.class' 형태로 .class파일이 생성된다. 이너 인터페이스 타입의 객체 생성 객체 생성 방법으로는 구현한 하위 클래스를 이용한 방..

    [Java] 문자열 문자열 배열로 변환(String to StringArray)

    [Java] 문자열 문자열 배열로 변환(String to StringArray)

    StringTokenizer 클래스를 이용하여 문자열 분리 - new StringTokenizer(); 문자열이 한 종류의 구분자로 구분되어 있는 경우 StringTokenizer 클래스를 이용하여 분리할 수 있다. Ex. "동해물과 백두산이 마르고 닳도록" : 공백의 구분자 Ex. "010-1234-5678" : 하이픈(-)의 구분자 분리하고자 하는 문자열을 StringTokenizer 생성자의 매개변수로 전달한다. StringTokenizer 객체 안에 있는 문자열을 nextToken() 메서드를 이용하여 꺼낼 수 있다. nextToken() 으로 문자열을 꺼내 온다면 Stringtokenizer 객체의 해당 문자열(토큰)은 사라진다. StringTokenizer 객체에 문자열(토큰)이 없는데 꺼내려..

    [Java] 문자형 배열을 문자열로 변환 (CharArray to String)

    [Java] 문자형 배열을 문자열로 변환 (CharArray to String)

    String() 생성자를 이용한 방법 - String() 문자형 배열을 String() 생성자의 인자로 전달하여 문자열 타입을 얻을 수 있다. String 생성자를 이용하기 때문에 String 타입의 참조 변수를 선언해야 한다. 코드 public class Main { public static void main(String[] args) { // 문자열으로 변환할 문자형 배열 = Hello Java char[] charArr = new char[]{'H','e','l','l','o',' ','J','a','v','a'}; // String()생성자를 이용하여 문자열로 변환 String str = new String(charArr); // 결과 출력 비교 System.out.println("변환 전(문자형..

    [Java] 문자열을 문자형 배열로 변환 (String to CharArray)

    [Java] 문자열을 문자형 배열로 변환 (String to CharArray)

    메서드를 이용한 방법 - toCharArray() - char[] Java.Lang.String 클래스의 메서드 중 toCharArray() 메서드를 이용하여 문자열을 문자형 배열로 변환할 수 있다. 리턴 타입이 char[] 타입으로 결과를 담을 변수 또한 char[] 타입으로 선언해야 한다. 문자 배열의 길이는 문자열의 길이와 같으며, 공백 또한 문자형으로 변환된다. 코드 public class Main { public static void main(String[] args) { // 배열로 변환할 문자열 String str = "Hello Java"; // toCharArray()를 이용하여 문자열을 배열로 변환 char[] arr = str.toCharArray(); // 결과 출력 System.o..

    [Java] 인터페이스란?

    인터페이스 정의 인터페이스는 '추상 메서드의 집합'이라고 정의할 수 있다. 인터페이스는 기본적으로 상수와 추상 메서드만 가질 수 있어 추상 클래스보다 더 높은 추상성을 가지고 있다. 추상 클래스와 비교한다면 추상 클래스는 '미완성 설계도', 인터페이스는 '밑그림'으로 나타낼 수 있다. 인터페이스 특징 interface 키워드를 이용해 인터페이스를 선언할 수 있다. 인터페이스 내부의 모든 필드는 public static final 제어자로 정의된다. 구현 객체의 같은 동작을 보장하기 위한 목적 public static final 제어자를 생략해도 컴파일러가 자동으로 추가한다. 인터페이스 내부의 모든 메서드는 추상 메서드로 인식하기 때문에 따로 abstract 키워드를 사용하지 않는다. 인터페이스의 메서드의..

    [Java] 추상 클래스와 추상 메소드 (abstract 제어자)

    [Java] 추상 클래스와 추상 메소드 (abstract 제어자)

    abstarct 제어자 abstract란? abstract의 '추상적인'의 사전적 의미를 가지며, 자바의 맥락에서는 '미완성'을 의미한다. 추상 클래스 또는 추상 메서드를 정의할 때 사용한다. abstract + class : 추상 클래스 abstract + method : 추상 메서드 추상 메서드 추상 메서드란? 추상 메서드란 기능이 정해지지 않은 미완성 메서드를 의미한다. 미완성이라는 의미는 메서드 내부에 기능이 구현되어 있지 않은 상태를 의미한다. 추상 메서드 구조 다음 코드를 보면 메서드 내부의 기능은 물론 중괄호({})조차 없다. 기능 자체가 없는 미완성 메서드로 완성 전까지는 사용할 수 없다. 완성은 하위 클래스에서 메서드 오버라이딩을 통해 완성시킬 수 있다. 범위 제어자 abstract 리턴..

    [Java] 클래스의 정점, Object 클래스

    Object 클래스란 Object 클래스는 자바의 클래스 상속계층도에서 최상위에 위치한 상위 클래스(최상위 클래스) 자바의 모든 클래스는 Object 클래스를 상속받는다. 클래스가 아무런 상속을 받지 않으면 컴파일러는 자동적으로 extneds Object를 추가하여 상속받는다. class ParentClass { // extends Object 자동 추가 } class ChildClass extends ParentClass { } Object 클래스 활용 Java의 모든 클래스는 Object 클래스의 멤버를 상속받아 사용할 수 있다. Java의 모든 클래스는 인스턴스를 생성할 때 Object 타입으로 선언하여 사용할 수 있다. // Object 타입으로 선언 Object parentClass1 = new..