예제코드에서 다운로드는 첫 페이지참조
각각의 실습코드는 SUB에 해당하는 폴더를 참조하세요.
기초문법a_BasicType
기본규칙A-B
- 명령이 끝나면 세미콜론(;)으로 마무리 합니다.
- 소괄호(),중괄호{},대괄호[] 및 큰따옴표"", 작은따옴표''는 열었다면 반드시 닫습니다.
- 들여쓰기(Tab 또는 space)를 합니다.
- 대소문자를 구분합니다.
- 주석(/*...*/ 또는 // ...)는 해석하지 않습니다.
출력문C
- System.out.println: print and line
- System.out.print: print
변수D[ 링크 : 2진수 이해하기 ]
종류 | 내용 | |||
---|---|---|---|---|
정수형 | byte | 1 바이트 | short | 2 바이트 |
int | 4 바이트 | long | 8 바이트 | |
소수 | float | 4 바이트 | double | 8 바이트 |
문자 | char | 2 바이트 |
강제 형변환E
(변환될 타입)변수
알려진 문제
10진수는 2진수로 완벽하게 표현되지 않기 때문에 발생하는 문제 재현하기F1
2진수의 비트 표현F2
연산자b_Operation
분류 | 연산자 | 실습 |
---|---|---|
괄호 | () | A |
사칙연산 | +, -, *, /, % | A |
대입연산 | =, +=, -=, *=, /=, %=, <<=,>>=, &=, |=, ^= | B |
증감연산 | ++, -- | C |
논리연산 | !, &&, || | D |
비트연산 | ~, &, |, ^, <<,>>, >>> | E |
비교연산 (부등호) |
<,>, <=,>=, ==, != | D |
p | q | 표현 | Not | And | Or | Xor | If | Iff |
---|---|---|---|---|---|---|---|---|
수학 | ~p | p ∧ q | p ∨ q | p ⊕ q | p → q | p ↔ q | ||
공학 | !p, ~p* | p & q | p | q | p ^ q | p >= q** | p == q | ||
F | F | T | F | F | F | T | T | |
F | T | F | T | T | T | F | ||
T | F | F | F | T | T | F | F | |
T | T | T | T | F | T | T | ||
비고 | p가 아님 | 모두T면 T | 하나라도T면 T | T가 홀수면 T | p⊂q가 성립하면 T | p=q가 성립하면 T |
* ~는 비트연산에서 not [true | flase] ( =1의 보수, 0 → 1, 1 → 0)을 의미합니다.
** 의미상 포함관계를 뜻합니다. 객체지향에서 "q instanceof p"로 표현됩니다.
연산순서 전혀 몰라도 상관이 없습니다. 잘 모르거나, 잘 알아도, 괄호를 사용하십시오.
언어별, 버전별, 제조사별 차이가 발생할 수 있습니다. 하나하나 완벽하게 대응하겠다는 전략보다, 모두에게 확실한 방법을 선택하는 것이 현명해 보입니다.
우선순위 | 연산자 | 비고 |
---|---|---|
1 | [],. | 주소 |
2 | ++, -- | 후위연산 |
3 | !, ~ | NOT연산 |
+, - | 부호 | |
++, -- | 전위연산 | |
(TypeCast) | 형변환 | |
4 | *, /, % | 산술연산 |
5 | +, - | |
6 | <<,>>,>>> | >>> 부호 미포함 |
7 | <, <=,>, >= | 비교 |
8 | ==, != | |
9 , 10, 11 | &, ^, | | 비트 |
12, 13 | &&, || | 논리 |
14 | ? | 삼항 |
15 | = | (+=, -=, *=….) |
제어문c_Control
입출력 예제A
제어(Control)란 상황(예, 입력)에 따라 다른 동작(출력 또는 결과)을 하는 것을 의미합니다. 제어문에 앞서 입력된 예제를 학습합니다.
- system.in.read() // 문자 하나를 읽습니다.
- scan = new Scanner(System.in);
str = scan.next(); // 문자열을 읽습니다.- String input = JOptionPane.showInputDialog(msg); // 다이얼로그를 통해서 읽습니다.
제어문
제어문B, C
- if(조건) {...} // 조건이 참일 때 ...를 수행합니다.
- if(조건) {...} else {,,,} // 그리고, 거짓일 때는 ,,,를 수행합니다.
- if(조건) {...} else if(조건2) {...2} ... else {,,,} // 그리고, 조건n일때 n을 수행합니다.
switch(변수) { // break;가 있어야 멈춥니다. case 조건1: ...1; break; // 조건이 1일 때 ...1를 수행합니다. case 조건2: ...2; break; // 조건이 2일 때 ...2를 수행합니다. ... case 조건n: ...n; break; // 조건이 n일 때 ...n를 수행합니다. default: ...m; // 조건이 없을 때 ...m를 수행합니다. }
반복문D
- while(조건){...} // 조건이 참이면 계속 ...수행합니다.
- do{...}while(조건); // 조건이 참이면 계속 ...수행합니다.(최소1회 보장)
- for(초기값;조건식;증감식) {...} // 조건이 참이면, ...을 수행한 뒤 증감하여 조건을 변경합니다.
강제이동E
- break; // 수행중인 ... 를 중단하고 {}를 나갑니다.
- countinue; // 수행중인 ...를 중단하고 {}의 최초로 돌아갑니다.
제어문 | 반복문 | 강제이동 | |
---|---|---|---|
if(조건) { ... } |
while(조건) { ... } |
{ break; } |
|
if(조건) { ... }else{ ... } |
do { ... } while(조건); |
{ break; } |
|
if(조건1) { ... }else if(조건2) { ... }else if(조건3) { ... }else if(조건4) { ... } |
switch(변수) { case 조건1: ... break; case 조건2: ... break; case 조건3: ... break; default: } |
for(초기값; 조건식; 증감식) { ... } |
|
int[] myArray = {1, 2, 3} for(int 변수 : myArray) { ... } |
배열d_Array
- int[] grade = new int[4]; // int 4개를 만듭니다.
- int[1] = 20; // 2번째(1번째 아님)배열에 20을 저장합니다.
int[][] arr = { {100, 200}, {300, 400, 500} }; // 2차 배열 초기화.
열거체e_Enum
응용:
- enum Rainbow {
RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
} // 열거체 생성- Rainbow.GREEN;//
- Rainbow.valueOf("RED");
- Rainbow.YELLOW.ordinal();
- Rainbow.VIOLET.name();
함수f_Method
함수를 java에서 method라고 부릅니다.
기본형A
- int plus(int num1, int num2); // 예제
- 출력타입 함수명(입력인자, ...) { ... }
다양한 선언과 호출B-D
- 선언 : 동작 내용을 상세히 기술
호출되지 않으면 없는 코드와 동일합니다.- 호출 : 함수이름을 호출
선언되지 않으면 호출 할 수 없습니다.
local변수와 static변수E
- local변수: 저장되지 않습니다.(초기화 됩니다.)
- static변수: 저장됩니다.(초기화 되지 않습니다.)
오버로딩(overloading)F
같은 함수명으로 여러개의 함수를 선언 하는 방법
- int plus(int num1, int num2);
- int plus(int num1, int num2, int num3); // 갯수 변화
- long plus(long num1, long num2); // 형 변화
재귀함수(recursive)G
선언 내에서, 자기 자신을 호출하는 함수int myFunc(int value){ return myFunc(value); }
mian함수(recursive)H
java.exe f_Method.H_Main 변수1 변수2 변수3
Main_EUCKR은 cmd에서 실행하기 위해 ANSI(euc-kr)로 저장하였습니다.
컴파일을 수행하면 Main_EUCKR.class가 생성됩니다. BasicCode\Syntax\f_Method폴더에서 수행되었습니다.
javac Main_EUCKR.java
java Main_EUCKR main argument test 123
1: main
2: argument
3: test
4: 123
예외처리g_Exception
예외처리A
예외처리는 에러로 인해서 시스템이 비정상적으로 종료 또는 오동작하는 것을 방지하기 위한 코드 입니다.
try { ... // 에러가 염려되는 코드 } catch(에러조건1) { ... // 에러1이 발생했을 때, 대응코드 } catch(에러조건2) { ... // 에러2이 발생했을 때, 대응코드 } catch(Exception e) { ... // 해당사항이 없는 에가러 발생했을 때, 대응코드 }
예외 명 | 내용 |
---|---|
ArithmeticException | 0으로 나누는 상황 |
ClassCastException | 예상할 수 없는 타입변환 |
ArrayIndexOutOfBoundsException | 접근할 수 없는 배열주소 |
NullPointerException | 0주소 접근 |
다양한 예외처리
try { ... // 에러가 염려되는 코드 try { throw new Exception(); // 이벤트 강제 발생1 } catch(Exception e) { ... // 이벤트1 } throw new Exception(); // 이벤트 강제 발생2 } catch(Exception e) { ... // 이벤트2 }