데이터타입과변수및조건문, 반복문 배효철 th1g@nate.com 1
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 2
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 3
자바프로그램구조 public class Hello2 { public static int sum(int n, int m) { return n + m; } 메소드 클래스 // main() 메소드에서실행시작 public static void main(string[] args) { int i = 20; int s; char a; } } s = sum(i, 10); // sum() 메소드호출 a = '?'; System.out.println(a); // 문자 '?' 화면출력 System.out.println("Hello2"); // "Hello2" 문자열화면출력 System.out.println(s); // 정수 s 값화면출력 메소드 4
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 5
변수및데이터타입 변수란? 하나의값을저장할수있는메모리공간 변수의선언 타입 변수이름 int age ; double value ; 6
변수및데이터타입 식별자 클래스, 변수, 상수, 메소드등에붙이는이름 식별자를위한명명규칙 @, #,! 와같은특수문자, 공백또는탭은식별자로사용할수없으나 _, $ 는사용가능 유니코드문자사용가능. 한글사용가능 자바언어의키워드는식별자로사용불가 식별자의첫번째문자로숫자는사용불가 _ 또는 $ 를식별자첫번째문자로사용할수있으나일반적으로잘사용하지않는다. 대소문자구별 길이제한없음 7
변수및데이터타입 데이터타입 기본타입 (primitive type) : 8 개 boolean char byte short int long float Double 논리형정수형실수형 레퍼런스타입 (reference type) : 1 개, 3 가지용도 클래스 (class) 에대한레퍼런스 인터페이스 (interface) 에대한레퍼런스 배열 (array) 에대한레퍼런스 8
변수및데이터타입 기본데이터타입 크기가정해져있음 크기는 CPU나운영체제에따라변하지않음 1 byte = 8 bit 0 0 0 0 0 0 0 0 9
변수및데이터타입 변수의사용 변수값저장 int score ; Score = 90 ; // 변수선언 // 값저장 초기값은변수를선언함과동시에줄수도있음 int score = 90 ; // 선언과동시에값저장 10
변수및데이터타입 변수의사용 변수값읽기 잘못된코딩의예 int value ; // 변수선언 ( 초기화 X) int result = value + 10 ; // value 값에 10을더해저장 맞게고친후의코드 리터럴 (literal) int value = 30 ; // 변수선언 ( 초기화 O) Int result = value + 10 ; // value 값에 10을더해저장 11
변수및데이터타입 리터럴 (literal) 변수에값을설정할때, 그때의값을의미 리터럴의종류 정수리터럴 실수리터럴 문자리터럴 문자열리터럴 논리리터럴 12
변수및데이터타입 정수리터럴 진수 2진수 (0, 1) 10진수 (0~9) 16진수 (0~9, A~F) 13
변수및데이터타입 정수리터럴 8 진수 : 0 으로시작 int n = 015; // 10 진수로 13 16 진수 : 0x 로시작 int n = 0x15; // 10 진수로 21 10 진수 : 0 으로시작하지않는숫자 15, 3, 20, 55, 88 2 진수 : 0b 로시작 int n = 0b0101; // 이진수 0101 -> 십진수 5 long 타입리터럴은숫자뒤에 L 또는 l 을붙여표시 ex) 24L, 3578l 14
변수및데이터타입 실수리터럴 부동소수점실수직접표시 소수점을찍은실수, 지수 (exponent) 식으로표현한실수 12. 또는 12.0.1234 또는 0.1234 또는 1234E-4 숫자뒤에 f(float) 나 d(double) 을명시적으로붙이기도함 0.1234 또는 0.1234D 또는 0.1234d double 타입 0.1234f 또는 0.1234F float 타입 1234D 또는 1234d 1234.0과같으며 double 타입 1234F 또는 1234f 1234.0과같으며 float 타입 15
변수및데이터타입 문자리터럴 단일인용부호 (' ') 로문자표현 'a', 'W', ' 가 ', '*', '3', '7' \u 다음에 4 자리 16 진수로, 2 바이트의유니코드 (Unicode) \u0041 -> 문자 'A' 의유니코드 (0041) \uae00 -> 한글문자 ' 글 ' 의유니코드 (ae00) 특수기호는 \ 로시작 16
변수및데이터타입 문자열리터럴 이중인용부호로묶어서표현 "Good", "Morning", " 자바 ", "3.19", "26", "a" 자바에서문자열은객체이므로기본타입아님 문자열리터럴은 String 객체로자동처리 논리리터널 true 또는 false 뿐 boolean b = true; boolean c = 10 > 0; // 10>0 이참이므로 c 값은 true 17
변수및데이터타입 상수 상수선언 final 키워드사용 선언시초기값지정 실행중값변경불가 18
변수및데이터타입 변수의사용범위 변수는중괄호블록 {} 내에서선언되고사용 public class Hello2 { public static int sum(int n, int m) { return n + m; } // main() 메소드에서실행시작 public static void main(string[] args) { int i = 20; int s; char a; } } s = sum(i, 10); // sum() 메소드호출 a = '?'; System.out.println(a); // 문자 '?' 화면출력 System.out.println("Hello2"); // "Hello2" 문자열화면출력 System.out.println(s); // 정수 s 값화면출력 i, s, a 는여기서만사용가능 19
변수및데이터타입 변수의사용예 public class exam_val { public static void main(string[] args) { int i = 20 ; float f = 3.123456789123456789123456789f ; float f2 = 3f ; double d = 3.123456789123456789123456789 ; double d2 = 5 ; boolean b = true ; boolean b2 = false ; char by = 'a' ; char by2 = '\uae00' ; String s = "Java" ; } } System.out.println(i); System.out.println(f); System.out.println(f2); System.out.println(d); System.out.println(d2); System.out.println(b); System.out.println(b2); System.out.println(by); System.out.println(by2); System.out.println(s); 20 3.1234567 3.0 3.123456789123457 5.0 true false Java a 글 20
변수및데이터타입 타입변환 데이터타입을다른타입으로변환하는것 byte int, int double 종류 자동 ( 묵시적 ) 타입변환 : Promotion 강제 ( 명시적 ) 타입변환 : Casting 21
변수및데이터타입 자동타입변환 프로그램실행도중작은타입은큰타입으로자동타입변환가능 long var; byte b = 25; // 0x19 var = b; 0x0000000000000019 0x19 b 8 비트 var 64 비트 롱타입변수 자동타입변환 바이트타입변수 22
변수및데이터타입 연산식에의한자동타입변환 연산은같은타입의피연산자 (operand) 간에만수행 서로다른타입의피연산자는같은타입으로변환 두피연산자중크기가큰타입으로자동변환 int var ; double doublevar ; double result = var + doublevar;
변수및데이터타입 강제타입변환 개발자의의도적인타입변환 큰타입을작은타입단위로쪼개기 끝의한부분만작은타입으로강제적변환 short var; int n = 855638017; //0x33000001 var = (short) n; 0x33000001 n 32 비트 0x0001 var 16 비트 short 타입변수 int 타입값을 short 타입으로강제변환 int 타입변수 24
변수및데이터타입 타입변환실습 public class TypeConversion { public static void main(string[] args) { byte b = 127; int i = 100; System.out.println(b+i); System.out.println(10/4); System.out.println(10.0/4); System.out.println((char)0x12340041); System.out.println((byte)(b+i)); System.out.println((int)2.9 + 1.8); System.out.println((int)(2.9 + 1.8)); System.out.println((int)2.9 + (int)1.8); } } 227 2 2.5 A -29 3.8 4 3 25
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 26
연산자 연산이란? 데이터를처리하여결과를산출하는것 연산자 (Operations) 연산에사용되는표시나기호 (+, -, *, /, %, =, ) 피연산자 (Operand) 연산대상이되는데이터 ( 리터럴, 변수 ) 연산식 (Expressions) 연산자와피연산자를이용하여연산의과정을기술한것 27
연산자 28
연산자 연산자의종류 29
연산자 연산의방향과우선순위 30
연산자 산술연산자 boolean 타입을제외한모든기본타입에사용가능 결과값산출할때 Overflow 주의 정확한계산은정수를사용 NaN과 Infinity 연산은주의할것 + 는문자열결합에사용가능 (String) 31
연산자 비교연산자 대소 (<, <=, >, >=) 또는동등 (==,!=) 비교해 boolean 타입인 true/false 산출 동등비교연산자는모든타입에사용 크기비교연산자는 boolean 타입제외한모든기본타입에사용 흐름제어문인조건문 (if), 반복문 (for, while) 에서주로이용 실행흐름을제어할때사용 32
연산자 논리연산자 논리곱 (&&), 논리합 ( ), 배타적논리합 (^), 논리부정 (!) 연산수행 피연산자는 boolean 타입만사용가능 33
연산자 비트연산자 비트 (bit) 단위로연산하므로 0 과 1 이피연산자 0 과 1 로표현이가능한정수타입만비트연산가능 실수타입인 float 과 double 은비트연산불가 종류 비트논리연산자 (&,, ^, ~) 비트이동연산자 (<<, >>, >>>) 34
연산자 비트논리연산자 피연산자가 boolean타입일경우일반논리연산자 피연산자가정수타입일경우비트논리연산자로사용 비트연산자는피연산자를 int타입으로자동타입변환후연산수행 35
연산자 비트논리연산자 36
연산자 비트이동연산자 시프트연산자 정수데이터의비트를좌측또는우측으로밀어이동시키는연산수행 37
연산자 비트이동연산자 38
연산자 대입, 증감연산자 39
연산자 대입및증감연산실습 public class UnaryOperator { public static void main(string[] args) { int opr = 0; opr += 3; // opr = opr + 3 System.out.println(opr++); // opr 출력후증가 System.out.println(opr); System.out.println(++opr); // opr 증가후출력 System.out.println(opr); System.out.println(opr--); // opr 출력후감소 System.out.println(opr); System.out.println(--opr); // opr 감소후출력 System.out.println(opr); } } 3 4 5 5 5 4 3 3 40
연산자 삼항연산자 세개의피연산자를필요로하는연산자 앞의조건식결과에따라콜론앞뒤의피연산자선택 -> 조건연산식 41
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 42
조건문 코드실행흐름제어 정상적인코드실행흐름 main() 메소드의시작인중괄호 { 에서끝중괄호 } 까지위 -> 아래방향으로실행 제어문의역할 코드실행흐름을개발자가원하는방향으로변경할수있도록도와줌 제어문의종류 조건문 반복문 Break, continue 문 제어문은중첩이가능 43
조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { } 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 44
조건문 If 문 public class SuccessOrFail { public static void main (String[] args) { Scanner in = new Scanner(System.in); } } System.out.print(" 점수를입력하시오 : "); int score = in.nextint(); if (score >= 80) System.out.println(" 축하합니다! 합격입니다."); 점수를입력하시오 : 95 축하합니다! 합격입니다. 45
조건문 if-else 문 조건식결과에따라실행블록을선택 46
조건문 if-else 문 public class MultipleOfThree { public static void main (String[] args) { Scanner in = new Scanner(System.in); System.out.print(" 수를입력하시오 : "); int number = in.nextint(); } } if (number % 3 == 0) System.out.println("3 의배수입니다."); else System.out.println("3 의배수가아닙니다."); 수를입력하시오 : 129 3 의배수입니다 47
조건문 if - else if - else 문 복수의조건식을두어결과에따라실행블록을선택 48
조건문 if - else if - else 문 49 public static void main (String[] args) { char grade; Scanner a = new Scanner(System.in); while (a.hasnext()) { int score = a.nextint(); if(score >= 90) grade = 'A'; else if(score >= 80) grade = 'B'; else if(score >= 70) grade = 'C'; else if(score >= 60) grade = 'D'; else grade = 'F'; } } System.out.println(" 학점은 "+grade+" 입니다 "); 80 학점은 B 입니다 90 학점은 A 입니다 76 학점은 C 입니다
조건문 중첩 if 문 코드실행흐름을이해하는것이가장중요 50
조건문 Switch 문 변수및연산식의값에따라실행문을선택할때사용 51
조건문 Switch 문실습 앞의 if - else if - else 문예제에서본학점부여프로그램을 switch 문으로변경 52
목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 53
반복문 반복문이란? 중괄호블록내용을반복적으로실행할때사용 반복문의종류 for 문 while 문 do while 문 54
반복문 for 문 반복획수를알고있을때주로사용 55
반복문 while 문 조건에따라반복을계속할지결정할때사용 56
반복문 do-while 문 조건따라반복계속할지결정할때사용하는것은 while 문과동일 무조건중괄호 { } 블록을한번실행한후, 조건검사해반복결정 57
반복문 break 문 for문, while문, do-while문종료 ( 반복취소 ) Switch문종료 대개 if문과같이사용 if 문조건식에따라 for 문과 while 문종료할때사용 58
반복문 break 문 public class BreakExample { public static void main (String[] args) { Scanner in = new Scanner(System.in); int num = 0; 59 while (true) { if (in.nextint() == -1) break; num++; } System.out.println(" 입력된숫자개수는 " + num); } } 10 8 9 5-1 입력된숫자개수는 4
반복문 break 문 반복문이중첩된경우 반복문이중첩되어있을경우 break; 문은가장가까운반복문만종료 바깥쪽반복문까지종료시키려면반복문에이름 ( 라벨 ) 을붙이고, break 이름 ; 사용 60
반복문 continue 문 for 문, while 문, do-while 문에서사용 for문 : 증감식으로이동 while문, do-while문 : 조건식으로이동 61
반복문 continue 문 public class ContinueExample { public static void main (String[] args) { int sum = 0; for (int i = 1; i <= 100; i++) { if (i%2 == 1) continue; else sum += i; } System.out.println("1 부터 100 까지짝수의합은 " + sum); } } 1 부터 100 까지짝수의합은 2550 62