1. 프로세스와 스레드프로세스는 실행중인 하나의 애플리케이션으로서 운영체제로부터 실행에 필요한 메모리 공간을 할당받는다. 스레드는 프로세스 내에서의 작업의 실행 흐름이다. 멀티 프로세스는 애플리케이션 단위의 멀티태스킹이고, 멀티스레드는 애플리케이션 내부에서의 멀티테스팅이라고 정의할 수 있다. 프로세스는 운영체제로부터 할당받은 메모리를 가지고 실행하기 때문에 각각 독립적이다. 하지만, 스레드는 하나의 메모리 공간을공유하기 때문에 하나의 스레드에서 예외가 발생할 경우, 전체 프로세스가 종료될 수 있다. 자바에서 main 메소드는 자바의 main 스레드에 의해 실행이 된다. 이 메인 스레드가 종료될지라도, 다른 멀티스레드들이 종료되지 않는다면프로세스는 종료되지 않는다. 2. 스레드 우선순위멀티스레드는 동시성과..
예외는 개발자의 잘못된 설계 또는 사용자의 잘못된 조작으로 인해 발생이 가능하다.그렇기 때문에 사용자의 잘못된 조작에 대한 예외처리가 필요하다. (늘.. 사용자는 예상치 못한 방식으로 입력을 하고 ... 생각지도 못한 오류를 만들 때가 있다!) 그래서! 자바가 기본적으로 제공하는 예외처리가 아닌, 개발자가 직접 예외처리를 생성할 수 있다. 아래는 사용자가 8글자 이상의 사번을 입력했을 때, 예외를 발생시키는 개발코드이다. [SnoCheckException.java] - 사용자가 정의한 예외클래스도 변수와 메소드 등을 가질 수 있지만, 일반적으로 기본 생성자와 예외 발생 시, 예외 메세지를 상위 클래스에게 전달하는 역할을 수행하는 생성자를 가지는 것이 기본이다! - 그리고 일반적으로, 사용자가 정의한 예외..
1. 오류 vs 예외 비교 오류 : 하드웨어의 오동작 또는 고장으로 인해 프로그램의 실행 오류가 발생하는 것 예외 : 개발자의 설계 문제, 사용자의 잘못된 조작으로 인해 발생한 프로그램 오류. 일반예외와 실행예외로 구분 * 일반예외는 자바소스를 컴파일하는 과정에서 예외처리가 필요한지 검사하기 때문에 컴파일러 체크 예외라고도 불린다. * 실행예외는 컴파일하는 과정에서 확인하지 않기 때문에 개발자의 경험에 의해 예외처리를 삽입해야 한다. 실행예외 종류 설명 NullPointerException 객체 참조가 없는 상태 또는 null 값인 참조변수에 대해 접근했을 때 발생하는 예외 ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과했을 때 발생하는 예외 NumberFormatEx..
* equlas() : 동등성 비교 (두 객체의 내용이 같은지 확인)* hashCode() : 동일성 비교 (두 객체가 같은 객체인지 확인) HashCode - 객체를 구별하기 위해(동일성 비교) 고유한 정수값으로 출력시켜주는 메소드 보통 객체의 내용을 바탕으로 만들어진 난수처럼 보이는 객체 인식용 정수 (주소와는 다른 개념이지만 객체에 고유한 번호를 부여) - 객체 참조변수를 출력할 때, 출력되는 주소는 바로 hashCode를 16진수로 출력한 값 * 두 객체가 같으면(equals() 메소드 호출 시 true 반환) 반드시 같은 hashcode를 가져야 한다. why..? equals() 메소드는 기본적으로 "==" 연산자를 이용해서 같은 객체를 참조하는지 비교 (결국, 같은 주소값을 보유하는지 비교)..
자바를 단위로 쪼갠다고 한다면, method < class < package 순으로 나눠질 수 있다. method는 class없이 사용이 가능하고, 자바에서는 함수적 프로그래밍을 지원하기 때문에 가장 작은 단위! 다음은 method를 포함하는 class, 마지막은 class들의 집합, 묶음인 package 이다. 오늘은 package 와 package 사용을 위한 import에 대해 간단히 알아보려고 한다. 1. package package는 class들을 담고 있는 폴더이다. 같은 서비스를 제공하는 class 끼리 묶어서 관리하기 때문에 코드 배포가 편하다. 그리고 자주 사용하는 User 클래스가 있다고 가정해보자, 로그인 package에도 User 라는 이름의 class 가 사용할 수 있고, 로그아웃..
1. 자바 가상 기계 (JVM) 정의 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 운영체제가 바로 자바 프로그램을 실행할 수 없다. 바이트 코드를 해석하고, 실행할 수 있는 가상의 운영체제 역할을 수행하는 것이 바로 JVM 이다. JVM은 OS와 자바 프로그램의 중간 다리 역할 수행하기 때문에 개발자는 운영체제별로 자바 코드를 구현할 필요가 없다. 각 각의 운영체제에도 동일한 결과를 출력해준다. (운영체제에 종속적, 자바코드에는 독립적) 2. 자바 가상 기계 (JVM) 동작 순서 1. Class loader는 바이트 코드(Hello.class)를 JVM 으로 가져오는 역할을 수행 2. Executuion Engine이 바이트 코드를 해석하여, Runtime Data Area..