본문 바로가기

Java/Base

(11)
[JAVA] 예외처리 오류와 예외 오류는 크게 두 가지가 있다. 하나는 에러이고 또다른 하나는 예외이다. 에러는 프로그래머가 제어할 수 없고 코드로 복구가 불가능한 오류이다. 동시에 프로그래머가 예측할 수 없다 예외는 프로그래머가 예측할 수 있어 제어 및 처리가 가능하다. 예외처리 예외 처리에는 크게 두 가지 방법이 있다. Exception 클래스를 상속받아 처리하는 방법과 throws를 사용하는 방법이다. ○ Exception Exception 클래스를 사용하는 방법은 문제를 해결하여 복구하는 방법이다. try { ... } catch (예외종류 name) { ... } finally { ... } try : 예외가 발생할 수 있는 코드가 위치하는 곳. catch : 예외 종류에 맞는 예외가 발생하였을 때 어떻게 처리할 것..
[JAVA] 파일 입출력 FileInputSteam InputStream을 상속받는 Byte 기반의 클래스이다. 다음 txt파일을 불러오는 과정이다. import java.io.IOException; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.FileInputStream; public class FileInputStreamTest { public static void main(String[] args) { try { FileInputStream fin = new FileInputStream("C:\\Users\\wjdck\\IdeaProjects\\TestJava\\src\\test1.txt"); int data; while((..
[JAVA] 리스트 리스트 리스트는 컬렉션 인터페이스 중 하나로 배열과 비슷하게 여러 개의 값을 저장할 수 있는 자료형이다. 배열은 사용 전에 크기를 지정해주어야하는 반면 리스트는 초기에 크기를 지정해주지 않아도 되는 가변형 배열이라고 볼 수도 있다. 선언은 다음과 같이 할 수 있다. import java.util.ArrayList; public class ListTest{ public static void main(String[] args){ //ArrayList 리스트이름 = new ArrayList(); ArrayList str = new ArrayList(); } } 리스트 메소드 ○ add str.add("빨강"); str.add(2,"노랑"); // 인덱스 값 2에 노랑 중간삽입 ○ get System.out.p..
[JAVA] 키보드 입력 System.in.read() 1byte의 크기만 읽어오는 메소드이다. 읽어온 값은 ASCII코드에 해당하는 int값으로 반환된다. int e = System.in.read(); // "a"입력 //r = 97 char c = (char)r; System.out.println(c); // a BufferedReader, InputStreamReader, System.in BufferedReader 객체의 사용법은 다음과 같다. import java.io.BufferedReader; import java.io.InputStreamReader; public class IOtest{ public static void main(String[] args){ BufferedReader br = new Buffere..
[JAVA] 배열 배열 배열은 같은 타입의 변수가 여러 개 필요할 때 사용하는 자료구조이다. 배열은 두 가지 선언 방식이 있다. 첫번째로, 배열을 먼저 선언한 후 배열의 각 요소마다 초기화를 해주는 방식이다. //배열 선언 이후 초기화 //자료형[] 배열이름 = new 자료형[배열 크기]; String[] arr = new String[5]; // (선언) arr[0] = "reset"; // (초기화) 두번째로, 배열의 선언과 동시에 초기화를 해주는 방식이다. //배열 선언과 동시에 초기화 String[] arr2 = {"r", "e", "s", "e", "t"}; 배열 메서드 ○ length() 배열의 길이 정보를 얻을 수 있는 메소드이다. int len = arr.length; ○ Arrays Arrays 클래스의 ..
[JAVA] 생성자 생성자 클래스를 선언할 때는 다음과 같이 레퍼런스 type, 참조변수, new 연산자, 생성자가 사용된다. Test myTest = new Test(); 이러한 형태가 기본적으로 배우는 클래스 선언의 형태인데, 여기서 Test()는 기본 생성자라고 한다. 기본 생성자는 매개변수가 없는 생성자이며 사용자가 별도로 생성자를 만들지 않았다면 자동으로 생성된다. public class Test{ public Test(){ System.out.println("기본 생성자"); } public Test(int a){ System.out.println("매개변수가 있는 생성자, 매개변수 " + a); } } 생성자를 선언할 때는 생성자의 이름과 클래스의 이름이 같아야 한다. super() 부모로부터 상속받은 자식 클..
[JAVA] getter(), setter() private 객체지향 프로그램은 정보은닉이 중요하다. Field를 잘 숨기기 위해서는 객체의 데이터에 외부에서 직접적으로 접근하는 것을 막아야한다. 예를 들어, 최고 기록에 대한 객체일 경우, 현재까지의 최대값을 넘기지 않으면 값이 변해서는 안된다. 그러니까 외부에서 주어진 값의 유효여부 등을 확인할 수 있도록 해주는 것이다. public int i; 이와 같은 선언 방식은 객체를 보호해줄 수 없다. 다른 클래스에서 해당 필드에 접근해 값을 직접적으로 변경하여도 그대로 값이 변해버리기 때문이다. 이를 위해 사용하는 것이 private 접근제한자 이다. private int i; 이와 같이 선언할 경우 다른 클래스에서는 직접적인 접근이 불가해진다. 즉, 정보를 안전하게 보호할 수 있는 것이다. 그렇다면 ..
[JAVA] 다형성 - 메소드 오버라이딩(Method Overridng) 메소드 오버라이딩 메소드 오버라이딩이란 상위 클래스의 메소드를 하위클래스가 재정의 하는 것을 의미한다. 상위 클래스의 메소드를 그대로 가져다 쓰거나 상황에 따라 약간의 변형을 통해 사용하기 때문에, 오버라이딩한 메소드의 이름, 파라미터 갯수, 타입 등이 동일하여야 한다. class Parent{ void say(){ System.out.println("부모 클래스."); } } class Child{ void say(){ System.out.println("자식 클래스."); } } 오버라이딩한 메소드는 상속의 개념이기 때문에 부모 클래스의 해당 메소드의 동작이 포함되어 있어야한다. 상속은 분명 부모타입으로 자식타입을 참조할 수 있고 그 반대 역시 가능하다고 하였다. 그렇다면 이 경우에 오버라이딩된 메소..
[JAVA] 상속 상속 상속은 현실의 재산 물림과 유사하다. 재산 물림에 있어서 부모와 자식이 있다면, 이곳에는 부모 클래스와 자식 클래스가 있다. '~(자식 클래스)는 ~(부모 클래스)하다' 혹은 '~(자식 클래스)는 ~(부모 클래스)의 종류 중 하나이다'의 관계를 성립하는 것을 상속이라고 한다. 자식 클래스가 부모 클래스와 상속 관계가 형성되는 과정에서 자식 클래스는 부모 클래스의 필드와 메소드를 물려받는다. 이러한 방식은 중복을 줄이고 다형성 등의 장점이 있지만, 결합도가 높다는 단점을 가지고 있다. 잘못 사용하면 문제가 커지기 때문에 반드시 사용해야할 때에만 사용하는 것이 좋다. 추가로 아무것도 상속받지 않은 클래스는 java.lang.Object를 상속 받는다. (즉, 모든 클래스는 Object의 자손이다.) 상..
[JAVA] 클래스 다이어그램 클래스 다이어그램 프로그래밍을 진행할 때에는 “사용자가 원하는 요구 사항을 정의하는 것”, 즉, 설계가 중요하다. 요구 사항이라고 함은 객체의 기능 목록을 의미한다. 예를 들어, 엘리베이터의 경우 - 층수 버튼 클릭 - 목표 층수까지 장치 동작 제어 - 현재 층수의 화면 표시 등의 기능이 필요할 것이다. 이 때, 명사로 이루어진 것들은 인스턴스 객체, 동사로 이루어진 것들은 메소드라고 볼 수 있다. 이러한 요구 사항을 다이어그램으로써 표현할 수 있다. 프로그램 설계라는 것은 객체의 이름을 정하고 객체와 객체 간의 관계를 표현하는 것이기 때문에 다음과 같이 표현이 가능하다.