public class OPExample { public static void main(String[] args) { // 전위 연산자와 후위 연산자 // x++ vs ++x // 일단 연산자가 앞에 붙든, 뒤에 붙은 x의 값을 1 증가시키는 얘라는 건 동일 // 증가하는 시점이 언제인지가 다른 것임. // 먼저 전위 연산자 int x = 0; System.out.println(++x); // 1 출력. 사용되는 시점에 "즉시" 값이 증가된 다음에 출력된다. System.out.println(x); // 1 출력. 증가된 값 그대로 출력할 것이므로 // 후위 연산자 x = 0; System.out.println(x++); // 0 출력. 더하기를 하는 시점에는 값이 바뀌지 않는다! 그리고 얘가 나온 이후..

예외처리 관련 프로그램 실행 중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다. 기본적으로 런타임 시점에서 발생하는 오류는 에러(error)와 예외(exception)으로 나뉜다. 에러(Error) : 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류 예외(exception) : 인자값 Null 에러NPE(NullPointException)같은 발생하더라도 수습이 가능한 덜 심각한 오류. 실행 예외 (RuntimeException) Runtime Error: 프로그램 실행 시점에서 발생하는 에러로 컴파일러는 컴파일 시점에서 문법 오류나 오타같은 컴파일시점에서 ..

메모리의 종류 [정적 영역] : 자바 프로그램을 구성하는 기본 단위인 클래스가 로드되는 곳 - 프로그램이 시작될 때는 물론이고 실행 중에도 필요한 클래스를 이 영역에 읽어들인다. - 모든 객체가 공유하는 정적 필드와 클래스의 동작을 정의하는 메서드 본체를 이 영역에 저장. [스택] : 메서드 실행에 필요한 정보를 저장하며 스레드별로 하나씩 생성됨. 메서드를 호출할 때 스택 프레임이 생성. 실행 중에 사용하는 정보(복귀 번지, 인수, 지역변수 등)를 저장. => 프로그램은 main에서 실행을 시작하며 메서드를 호출할 때마다 스택 위쪽으로 프레임이 계속 쌓인다. 설명) main에서 method1(12)를 호출하면 스택에 스택 프레임이 생성된다. 실행을 마치고 복귀할 번지와 호출원에서 전달한 인수값, 메서드 ..
제어문 - 조건을 판별하여 선택적으로 실행하거나 비슷한 작업을 반복함으로써 프로그램의 흐름을 통제하는 명령 블록 구조 - 조건에 대해 실행할 명령이 하나 뿐이면 if문 다음에 명령을 바로 기술한다. - 진위 여부에 따라 여러개의 명령을 실행한다면 조건에 걸리는 모든 명령을 { } 블록으로 묶는다. - 같은 블록에 속한 명령의 집합을 복문이라고 한다. *Java는 FreeFormat이라 들여쓰기를 어떻게 하더라도 블록 구조에는 영향을 끼치지 않으며, 두 명령을 나란히 들여써도 하나의 단위로 취급하지 않는다. **명령을 한 단위로 만들려면 { } 괄호로 명령을 묶어야 한다. else - 조건이 참이면 명령 1을 실행하고, 거짓이면 명령 2를 실행한다. if (조건) { 명령1 } else { 명령2 } *i..
배열 : 유사한 데이터를 저장하는 관련 변수의 집합은 한꺼번에 선언하는데, 이럴 때 사용하는 것이 배열이다. 배열은 같은 타입의 변수를 모아놓은 변수의 집합 --- 대량의 정보를 저장할 때 사용하며 반복적인 처리가 가능하다. 타입[] 배열명; 타입 배열명[]; 배열 요소의 타입과 배열의 이름으로 선언하되 일반 변수와 달리 []괄호로 배열임을 명시한다. []는 배열임을 표시하는 기호일 뿐이며 선언할 때 괄호만 적고 크기는 할당할 때 밝힌다. [] 괄호는 타입 뒤에 붙일 수도 있고, 배열명 뒤에 붙일 수도 있다. 배열 변수는 배열 요소의 시작 위치를 가리키는 참조형 변수이며, 그 자체는 대량의 데이터를 저장할 수 없다. 배열을 선언한 후 new 연산자로 정보를 저장할 공간을 할당하여 배열을 생성해야 한다. ..

연산자 1. 산술 연산자 : 사칙연산 나누기 - 피연산자가 실수일 때는 몫을 정수까지만 계산하고 나머지를 리턴한다. 실수 5.0을 2.3으로 나누면 정수의 몫 2를 버리고 나머지 0.4를 리턴한다. 실수 나눗셈을 하면 2.1739가 나오지만 몫을 정수까지만 계산하여 나머지만 구한다. - 나머지 연산자는 홀짝 판별에 종종 사용된다. value가 짝수인지 점검하려면 다음 조건식을 사용한다. if(value % 2 ==0){ } 2. 대입 연산자 * 좌변값: 대입 연산자의 왼쪽에 올 수 있는 값. - 실제 메모리를 점유하고 있고, 값을 기억할 수 있는 대상. 변수가 완전한 좌변값. * 우변에는 하나의 값을 리턴하는 모든 값. ** 복합 대입 연산자는 자기 자신과 피연산자를 연산하여 자기 자신에게 다시 대입하는..
언어적 특징 1) 대소문자를 철저하게 구분한다. 2) 명령문은 항상 세미콜론으로 끝난다. 3) 공백을 자유롭게 삽입할 수 있다. - 다음과 같이 두 줄로 작성할 수도 있고, 전체 소스를 개행하지 않고 한 줄에 모조리 붙여 써도 상관없다. 보통 K&R 스타일을 주로 사용하지 function { 블록 } 4) main에서 시작한다. - 완전한 객체지향 언어인 자바는 모든 것이 클래스 내부에 있어야 하며, main도 클래스 안에 위치한다. class 예제이름 { public static void main(String[] args) { 예제코드 } } 자바 언어의 구성 요소 1) 키워드(Keyword) - 프로그램의 기능을 정의하는 기본적인 단어. 예약어(Reserved word)라고 불리며 다른 용도로는 사용..