JAVA/Java: 149개의 글
예외 처리 Exception try-catch-finally, throws, 사용자 정의 예외 자바는 프로그램 실행중에 발생할 수 있는 예외 처리문을 제공한다.자바의 예외 처리는 예외가 발생한 메서드 내에서 직접 처리하는 방법과 예외가 발생한 메소드를 호출한 곳으로 예외 객체를 넘겨주는 방법, 그리고 사용자 정의 예외를 생성하여 처리하는 방법이 있다. 1. 예외(Exception)이 발생한 메소드 내에서 직접 처리 (try-catch-finally) try{ 예외 발생 가능성이 있는 문장들; }catch(예외 타입1 매개변수명){ 예외타입1의 예외가 발생할 경우 처리 문장들; }catch(예외 타입 n 매개변수명){ 예외타입 n의 예외가 발생할 경우 처리 문장들; }finally{ 항상 수행할 필요가 있..
예외(Exception) 란? 체크예외와 RuntimeException 1. 예외의 개념 예외(Exception)은 일종의 오류로 두 가지로 나눌 수 있다. ① 문법 오류 : 오타와 같이 자바 구문에 어긋난 코드 때문에 발생하고, 컴파일시에 발생하는 오류② 실행 오류 : 프로그램 실행시 상황에 따라 발생하는 오류 실행 오류에는 프로그램 자체의 구조적인 문제로 인한 논리적 오류와 자바 가상 머신 자체의 문제로 인한 오류 그리고 예외가 있다.논리 오류는 논리적 모순이 생기지 않도록 코딩하는 수밖에 없으며, 자바 가상 머신 자체의 오류는 프로그래머가 책임질 수 있는 수준의 오류가 아니다. 예외(Exception)은 프로그램 실행 중에 발생할 수 있는 예기치 않은 사건으로 프로그래머의 노력으로 처리할 수 있다...
객체의 형 변환 Java 기본 유형의 데이터들처럼 객체 참조변수의 경우에도 형 변환(casting)이 이루어진다. 서로 다른 클래스 유형으로부터 나온 객체 참조변수들 간의 대입에는 일정한 규칙이 있다. [JAVA/Java] - [JAVA] 기본 데이터 타입과 변환 1. 객체 형 변환의 개요 Parent parent = new Child(); 위의 대입연산에서 왼쪽 항(Parent)과 오른쪽 항(Child)의 객체 유형이 서로 다른 경우, 두 유형이 서로 상속 관계에 있고 왼쪽 객체(Parent)가 오른쪽 객체(Child)의 상위 클래스인 경우에만 내부적인 형 변환이 일어난다. 즉, 하위 클래스에서 상위클래스 유형으로 할당하는 것은 가능하나 그 반대의 경우에는 강제 형 변환을 해야 한다. 그러나 상위 클래..
오버로딩(Overloading) 오버라이딩(Overriding) 자바에서 다형성을 지원하는 방법으로 메소드 오버로딩(Overloading) 오버라이딩(Overriding)이 있다. 오버로딩(Overloading)과 오버라이딩(Overriding) 비슷한 이름이 참 헷갈리게 한다. 오버로딩(Overloading) : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 상요한다. 둘이 개념이 다른데도 어떤게 오버로딩(Overloading)이고 오버라이딩(Overriding)이고 뒤돌아서면 헷갈린다. 어쩔 수 있나 머리가 나쁘니.. 헷갈릴 때마다 확인할 수 밖에... 1. 오버로딩 ..
상속(extends), 추상 클래스(abstract), 인터페이스(implement) 객체지향을 조금이라도 공부한 사람들은 상속, 추상 클래스, 인터페이스에 대해 계속적으로 들어봤을 것이다. 이 개념들이 객체 지향 프로그래밍을 하는데 중요한 개념이기 때문이다.이것들은 어플리케이션을 설계하는데 공통된 부분을 묶어 정의해주고, 구조화 해주며, 객체로 활용할 수 있도록 도와준다.이것들에 대한 개념 및 예제들은 많이 찾아볼 수 있으므로, 여기서는 간단히 정리하겠다. 1. 상속 (extends) 상속은 기존의 클래스로 부터 새로운 클래스를 유도하는 과정이다. 쉽게 말해서 부모 클래스를 extends로 상속받아 자식 클래스에서 내 것처럼 사용할 수 있는 것이다. 시스템을 설계하다보면, 공통된 부분으로 인하여 중복되..
StringBuffer 클래스 정리 StringBuffer 클래스는 자바 프로그램 내에서 변하는 문자열을 다룰 때 사용한다. StringBuffer 클래스의 객체는 크기가 동적인데, 객체 생성시 크기를 지정하지 않아도 기본적으로 16개의 문자를 저장할 수 있는 버퍼 공간을 가진다. String 클래스의 객체는 한 번 생성되면 그 내용이 변하지 않는 반면에, StringBuffer 클래스의 객체는 한 번 생성된 후에도 계속하여 저장하고 있는 문자열의 내용을 변경할 수 있다. 그러므로, StringBuffer 클래스의 메소드는 문자열 처리 후의 결과를 원래의 StringBuffer 객체에 반영하고, 메소드 리턴 타입은 void 이다. * StringBuffer 클래스 생성자 StringBuffer 클래스 생..
Object 클래스 정리 1. Java.lang 패키지 java.lang은 자바 프로그램에서 가장 많이 사용되는 패키지로서 자바 프로그램내에 'import' 문을 사용하지 않아도 자동으로 포함된다. 그만큼 자바 프로그램의 기본이 되는 클래스들과 인터페이스들이 포함되어 있다. 다음은 java.lang 패키지의 클래스 구조도이다. 물론 java.lang 패키지에는 더 많은 클래스들이 있다. 더 많은 클래스는 여기서 확인하자. JAVA API DOC : Java.lang Object 클래스는 java.lang 패키지 내의 최상위 클래스이며, String 클래스는 변하지 않는 문자열을 다룰 때, StringBuffer 클래스는 내용이 계속 변하는 문자열을 다룰 때 사용될 수 있다. 2. Object 클래스 ja..
final, static, abstract, synchronized 변수나 함수 선언시, 해당 변수나 함수 활용 방법에 대한 modifier를 설정할 수 있다. modifier 구분설명 final 변수 선언 변수를 상수로 이용하는 경우 사용한다. 함수 선언 오버라이딩이 불가능한 메쏘드를 정의할 때 이용한다.static 변수 선언 클래스에 소속된 클래스 변수를 의미한다. 클래스 생성시 만들어진다. 함수 선언 abstract함수 선언 추상 메쏘드를 의미한다. 하위 클래스에 의해 구현된다. synchronized함수 선언 thread의 동기화를 의한 메쏘드이다. final 은 변수를 선언할 때와 함수를 선언할 때 쓰임새가 다르다. - 상수 : final (변수 선언시) final을 사용하여 변수를 선언하면 할..
접근제어자 public, protected, private 변수나 메쏘드를 선언할 때 접근을 제어할 수 있는 modifier를 설정할 수 있다. 이러한 접근 관련 modifier를 통해서 객체지향 언어의 중요 특성 중 하나인 캡슐화(encapsulation)과 정보 숨김(information hiding)을 구현할 수 있다. * 접근 제어자 구분modifier 설명 접근 권한 public 모든 클래스에서 접근이 가능함을 의미한다.protected 동일 패키지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다. private 클래스 내에서만 접근이 가능하다 * 접근 권한 종류클래스 하위 클래스 동일 패키지 모든 클래스 private O X X X (default) O X O X prote..
Array 배열, 이차 배열, 다중 배열 1. 배열의 선언 Java에서 배열은 객체이다. 배열을 생성학 위해서는 배열을 반드시 선언해야 한다. int[] height = new int[11]; or int height[] = new int[11]; 변수 height 는 정수의 배열(int[])로 선언되었다. height 배열은 height[0] ~ height[10] 까지의 11개의 정수를 저장할 수 있다.정수형 배열의 각 인덱스는 기본적으로 0 으로 초기화 된다. (String 배열은 null 이다)여기서 만약 height[11] 과 같이 배열의 범위를 벗어나면 ArrayIndexOutOfBoundsException이 발생한다. Java 배열의 크기는 length 를 사용하여 확인 할 수 있다. hei..