문장 1
배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33]
ANSI C 언어와유사 문장의종류 [3/33]
값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환 협소화 (narrowing) 형변환 : 캐스트 (cast) 연산자 [ 예제 4.1] 테스트 [4/33]
여러문장을한데묶어하나의문장으로나타냄 형태 주로문장의범위를표시 { < 선언 > 혹은 < 문장 > if (a > b) a--; b++; if (a > b) {a--; b++; 지역변수 (Local Variable) 블록의내부에서선언된변수 선언된블록안에서만참조가능 [5/33]
[ 예제 4.4 LocalVariable.java] public class LocalVariable { static int x; public static void main(string[] args) { int x = (x=2) * 2; System.out.println("x = " + x); 실행결과 : x = 4 [6/33]
프로그램의실행순서를바꾸는데사용 실행순서를제어하는방법에따라 조건문 : if 문, switch 문반복문 : for 문, while 문, do-while 문분기문 : break 문, continue 문, return 문 [7/33]
조건에따라실행되는부분이다를때사용. if 문의형태 if ( < 조건식 > ) < 문장 > if ( < 조건식 > ) < 문장 1> else < 문장 2> 예 : 조건식의연산결과 : 논리형 (true or false) if (a < 0) a = -a; // 절대값 if (a > b) m = a; else m = b; // 큰값 [8/33]
내포된 if 문 참부분에서 if 문이반복 if (< 조건식 >) if (< 조건식 >) //... < 문장 > else 부분에서 if 문이반복 if (< 조건식 1>) < 문장 1> elseif (< 조건식 2>) < 문장 2>... elseif (< 조건식 n>) < 문장 n> else < 문장 > [9/33]
조건에따라여러경우로처리해야되는경우 switch 문의형태 switch (< 식 >) { case < 상수식 1> : < 문장 1> case < 상수식 2> : < 문장 2>.. case < 상수식 n> : < 문장 n> default : < 문장 > 여기서, default 의의미는 otherwise break 문을사용하여탈출 [10/33]
정해진횟수만큼일련의문장을반복 for 문의형태 for ( < 식 1> ; < 식 2> ; < 식 3> ) < 문장 > < 식 1> : 제어변수초기화 < 식 2> : 제어변수를검사하는조건식 < 식 3> : 제어변수의값을수정 s = 0; for (i = 1; i <= N; ++i) // 1 부터 N 까지의합 : i 증가 s += i; [11/33]
for 문의실행순서 [12/33]
무한루프를나타내는 for 문 for ( ; ;) < 문장 > 루프종료 : break 문, return 문 내포된 for 문 for 문안에 for 문이있을때. 다차원배열을다룰때. for (i = 0; i < N; ++i) for (j=0; j<m; ++j) matrix[i][j] = 0; [13/33]
여러원소로이루어진집합의모든원소에대해특정작업을반복 개선된 for 문의형태 for ( 자료형변수명 : 수식 ) < 문장 > 수식은배열이나여러변수를포함할수있는자료형 [14/33]
[ 예제 4.4 EnhancedForSt.java] public class EnhancedForSt { public static void main(string[] args) { String[] color = { "red", "green", "blue" ; for (String s: color) { System.out.println(s); 실행결과 : red green blue [15/33]
조건식이참인경우에만프로그램의일정한부분을반복해서실행 while 문의형태 while ( 조건식 ) < 문장 > while 문의예 i = 1; s = 0; while (i <= N) { // 1 부터 N 까지의합 s += i; ++i; [16/33]
while 문의실행순서 [17/33]
for 문과 while 문의비교 for (i = 0; i < N; ++i) s += i; i = 0; while (i < N) { s += i; ++i; for while : 주어진횟수 : 주어진조건 [18/33]
반복되는문장을먼저실행한후에조건식을검사 do-while 문의형태 do < 문장 > while ( < 조건식 > ); precondition check --- for, while postcondition check --- do-while [19/33]
블록밖으로제어를옮기는역할 break 문의형태 break [ 레이블 ]; 레이블이없는경우 C/C++ 와동일 int i = 1; while (true) { if (i == 3) break; System.out.println( This is a + i + iteration ); ++i; [20/33]
레이블 break 문 goto 문대용으로사용가능 사용형태 lablename : 반복문 1 { 반복문 2 { //... break; //... break labelname; //... [21/33]
다음반복이시작되는곳으로제어를옮기는기능 continue 문의형태 continue [ 레이블 ]; for 문안에서사용될때 for(i = 0; i <= 5; ++i) { if (i % 2 == 0) continue; System.out.println("This is a " + i + " iteration"); [22/33]
while 문안에서사용될때 조건검사부분으로이동 i = 0; while (i <= 5) { ++i; if ((i % 2) == 0) continue; System.out.println("This is a odd iteration " + i); [23/33]
레이블 continue 문 레이블 break 와유사 lablename : 반복문 1 { 반복문 2 { //... continue; //... continue labelname; //... [24/33]
[ 예제 4.16 LabeledContinue.java] public class LabeledContinue { public static void main(string[] args) { int count = 0; outer: for (int i = 0; i < 10; i++) { inner: for (int j = 0; j < 10; j++) { if (j == 2) continue inner; if (j == 5) continue outer; ++count; System.out.println("count = " + count); 실행결과 : count = 40 [25/33]
메소드의실행을종료하고호출한메소드에게제어를넘겨주는문장 return 문의형태 return; return < 식 >; [ 예제 4.18] 테스트 [26/33]
시스템에서지정한표준파일에입출력하는방법 표준입출력 표준입력파일 : in 표준출력파일 : out 표준에러파일 : err 키보드 화면 (screen) System 클래스의정적변수 [27/33]
자바언어의기본패키지인 java.io 로부터제공 표준입력메소드 : System.in.read() 키보드로부터한개의문자를읽어그문자의코드값을정수형으로복귀하는기능 표준출력메소드 : System.out.print(), System.out.println() System.out.printf(), System.out.write() [28/33]
표준입력에서한라인을스트링형태로읽음 : import java.io.*; BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); n = Integer.parseInt(input.readLine()); 표준입력으로부터한라인을읽어스트링형태로복귀 스트링형태를정수형태로변환 [29/33]
[GcdLcd.java] import java.io.*; public class GcdLcd { static int gcdmethod(int x, int y) { while (x!= y) if (x > y) x -= y; else y -=x; return x; public static void main(string[] args) throws java.io.ioexception { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); int i, j; int gcd, lcd; System.out.print("Enter first number : "); i = Integer.parseInt(input.readLine()); System.out.print("Enter second number : "); j = Integer.parseInt(input.readLine()); gcd = gcdmethod(i, j); System.out.println("GCD of "+i+" and "+j+" = "+gcd); lcd = (i/gcd) * (j/gcd) * gcd; System.out.println("LCD of "+i+" and "+j+" = "+lcd); 실행결과 : Enter first number : 12 Enter second number : 6 GCD of 12 and 6 = 6 LCD of 12 and 6 = 12 [30/33]
출력하려는값에포맷 (format) 을명시하여원하는형태로출력 System.out.printf() 메소드에서출력포맷지정출력포맷의형태 %[argument_index$][flags][width][.precision]conversion 형식지정스트링 (format string) 매개변수의개수와일치하는출력포맷으로이루어진스트링상수형식화하려는값의형태 System.out.printf(format-string, arg1, arg2, arg3,..., argn); [31/33]
[ 예제 4.22 FormattedOutput.java] public class FormattedOutput { public static void main(string[] args) { System.out.printf("1) %3$2s %2$2s %1$2s\n", "a", "b", "c"); boolean b = false; System.out.printf("2) %b %b %b\n", null, b, "a"); System.out.printf("3) %h %h\n", null, b); System.out.printf("4) %s %s\n", null, b); System.out.printf("5) %1$d 0%1$o 0x%1$x\n", 3342); System.out.printf("6) %1$e %1$f %1$g %1$a\n", Math.PI); System.out.printf("7) %% %n"); 실행결과 : 1) c b a 2) false false true 3) null 4d5 4) null false 5) 3342 06416 0xd0e 6) 3.141593e+00 3.141593 3.14159 0x1.921fb54442d18p1 7) % [32/33]
자바의문장 표준 C(ANSI C) 언어와유사 기본문장의종류 배정문혼합문제어문 조건문 : if문, switch문반복문 : for문 ( 개선된 for문 ), while문, do-while문분기문 : break문, continue문, return문 표준입출력 형식화된출력 : 원하는형식에맞게값을출력 [33/33]