본문 바로가기

Java

(30)
Class.forName()의 동작 원리 자바는 JVM을 기반으로 동작합니다. main 메소드를 갖는 간단한 클래스를 만들어서 실행시키든, WAS에서 JSP나 서블릿을 실행시키든 결국 JVM위에서 동작하게 됩니다. JSP의 경우에는 먼저 WAS가 파일을 해석한 다음 자바 소스코드를 만들어 냅니다. 이것은 서블릿과 동일한 방식으로 동작하는 클래스가 됩니다.Class 클래스는 JVM에서 동작할 클래스의 정보를 묘사하기 위한 일종의 메타 클래스입니다. 즉 JVM에 로드될 각 클래스이 정보를 담고 있는 클래스 입니다. 클래스의 이름, 멤버 필드들과 멤버 메소드, 클래스의 종류(자바의 interface는 내부적으로 클래스와 동일하게 취급합니다.)등등 많습니다.A a = new A();라는 코드가 있다고 가정하면, JVM은 우선 A라는 클래스가 JVM에 ..
Thread란? Thread? 동작하고 있는 프로그램(메모리를 할당받아 실행 중인 프로그램)을 프로세스(process)라고 한다. 보통 한 개의 프로세스는 한 가지의 일을 하지만, 쓰레드를 이용하면 한 프로세스 내에서 두 가지 또는 그 이상의 일을 동시에 할 수 있다. 프로세스 내의 명령어 블록으로 시작점과 종료점을 가진다. 실행 중에 멈출수 있으며 동시 수행이 가능하다. 어떠한 프로그램내에서 특히 프로세스 내에서 실행되는 흐름의 단위 Thread를 만드는 방법(2가지)Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다.1) Thread를 상속 받아서 쓰레드를 만드는 방법 - java.lang.Thread클래스를 상속받는다. 그리고 Thread가 가지고 있는 run()메소드를 오버라이..
Day 10~11. 친구관리 프로그램 간단한 친구관리 프로그램을 작성해보았다. 친구의 정보(이름, 전화번호)를 입력받아서 저장하고, 정보를 불러와서 보여주고, 삭제(절교)하고, 친구 리스트의 숫자를 보여주는 프로그램이다. 1. 인터페이스를 만들고 추상 메소드들을 만들어줬다. package my.examples.friendlist.dto; import java.util.List; public interface FriendManagerInterface { abstract void addFriend(Friend friend); abstract List searchFriend(String name); abstract int deleteFriend(String phone); abstract int countFriend(); } 2. Friend 클래..
Day 10. 예외처리 예외처리컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것을 자바에서는 에러(error)라고 한다. 에러는 JVM실행에 문제가 생겼다는 것이므로, JVM 위에서 실행되는 프로그램을 아무리 견고하게 만들어도 결국 실행 불능이 된다. 개발자는 이런 에러에 대체할 방법이 전혀 없다. 자바에서는 에러 이외에 예외(Exception)이라고 부르는 오류가 있다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서는 에러와 동일하다. 그러나 예외는 예외 처리(Exception Handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류..
IO 패키지 예습 IO 패키지?프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번히 일어난다. 데이터는 사용자로부터 키보드를 통해 입력될 수도 있고, 파일 또는 네트워크로부터 입력될 수도 있다. 데이터는 반대로 모니터로 출력될 수도 있고, 파일로 출력되어 저장될 수도 있으며 네트워크로 출력되어 전송될 수도 있다. 자바에서 데이터는 스트림(stream)을 통해 입출력되므로 스트림의 특징을 잘 이해해야 한다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데, 물이 높은 곳에서 낮은 곳으로 흐르듯이 데이터는 출발지에서 나와 도착지로 들어간다는 개념이다. 출발지 -------------> 프로그램 -------------> 도착지1. 키보드 도착지 출발지 1. 모니터2. 파일 2. 파일 3. 프로그램..
Day 9. maven에서 json사용하기 maven에서 json 사용하기 ex> 간단 명함 관리.이름, 전화번호, 회사명 을 관리하는 프로그램을 만들자 1.명함 입력 이름 전화번호 회사명 물어보고 저장2.명함 조회. - 이름,회사명으로 찾는 기능(여러건 등장 할 수 있다.)3.명함 수정4.명함 삭제 - 내부적으로 id값을 가지도록 한다.5.프로그램을 재시작해도 명함을 조회할 수 있어야 한다. - 파일에 json이라는 형식으로 저장을 한다. - 이미 저장 데이터가 있으면 읽어와야 하고, 없으면 새로 생성한다. - json 데이터를 조작할 수 있어야 한다. 저장하고, 읽고, 수정 등을 할 수 있어야한다. -json?-json 라이브러리는 없을까?-위의 요구사항을 처리하려면 json은 어떤 형태로 저장되어야 할까/-클래스를 어떻게 만들까? 클래스 이..
어노테이션 어노테이션 Annotation은 메타데이터(metadata)라고 볼 수 있다. 메타데이터란 애플리케이션이 처리해야 할 데이터가 아니라, 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지를 알려주는 정보이다. 어노테이션은 다음과 같은 형태로 작성된다. @Annotation어노테이션은 세 가지 용도로 사용된다. * 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공* 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공* 실행 시 (런타임 시) 특정 기능을 실행하도록 정보를 제공 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공하는 대표적인 예는 @Override이다. 메소드 선언 시 사용하는데, 메소드가 오버라이드(재정의)된 것임을 컴파일러에게 알려주어..
Day 7. 정렬 정렬(Collections sort Comparable Comparator) package my.examples.javaexam.goodsExample; public class Student implements Comparable{ private String name; @Override public int compareTo(Student o) { return name.compareTo(o.name); } private int kor; private int eng; private int math; public Student(){ } public Student(String name, int kor, int eng, int math) { this.name = name; this.kor = kor; this.e..