1 / 43

05. 변수 , 연산자 , 수식

05. 변수 , 연산자 , 수식. [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr. 1. 변수와 자료형. 변수 (variable): 데이터 값들이 저장되는 메모리 공간 자료형 (Data Type) 변수 자체가 어떠한 종류의 데이터를 담을 수 있는 가를 나타냄 변수에 저장되는 자료의 타입 자료형의 종류 기초형 (Primitive Data Type) 실제 값이 변수 자체에 저장 참조형 (Reference Data Type)

Download Presentation

05. 변수 , 연산자 , 수식

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 05. 변수, 연산자, 수식 [INA470] Java Programming Youn-Hee Han http://link.kut.ac.kr

  2. 1. 변수와 자료형 • 변수(variable): 데이터 값들이 저장되는 메모리 공간 • 자료형 (Data Type) • 변수 자체가 어떠한 종류의 데이터를 담을 수 있는 가를 나타냄 • 변수에 저장되는 자료의 타입 • 자료형의 종류 • 기초형 (Primitive Data Type) • 실제값이 변수 자체에 저장 • 참조형 (Reference Data Type) • 실제 값은 Heap이라는 저장공간에 위치하고 변수에는 그값이 위치한 주소가 저장

  3. 1. 변수와 자료형 • 변수의 선언과 초기화 • 선언만 하는 방법 • 선언과 동시에 초기화

  4. 1. 변수와 자료형 • 식별자 (identifier) • Identifiers are “names” we give to our variables, constants, classes, and methods • 변수의 이름 • 식별자(identifier)의 일종 • 변수 이름의 규칙 • 식별자는 유니코드 문자와 숫자의 조합 • 식별자의 첫 문자는 유니코드 문자이어야 한다. • 첫 문자가 _, $ 가가능하지만 추천하지 않음 • 두 번째 문자부터는 숫자, _, $, # 등이 가능하다. • 대문자와 소문자는 구별된다. • 식별자의 이름으로 키워드(keyword)를 사용해서는 안 된다. • true, false, null은 키워드로 분류되지 않지만 변수 이름 (식별자)로 사용될 수 없다.

  5. 1. 변수와 자료형 • 자바에서의 키워드 (keyword) • 예약어(Reserved Word) 라고도 한다.

  6. 1. 변수와 자료형 • 변수 정하는 법의 예

  7. 1. 변수와 자료형 • 식별자이름 정하는 관례

  8. 1. 변수와 자료형 • 리터럴 (Literals) • 리터럴은 Java 소스 코드 내에 표기된 데이터 값 그대로인 상수(Constants)를 지칭한다. • 다음과 같은 상수들이 리터럴의 예이다. • 이러한 리터럴의 타입은 자바 컴파일러가 소스 코드를 컴파일할 때 자동으로 할당하는데 그 규칙은 다음과 같다. • 소수점이 없는 수치 리터럴은 int 타입을 부여한다. • 소수점이 있는 수치 리터럴은 double 타입을 부여한다. • 큰따옴표(")로 묶여진 텍스트는 String타입을 부여한다. • 작은따옴표(')로 묶여진 문자에는 char 타입을 부여한다.

  9. 1. 변수와 자료형 • 한글 변수명? 한글 변수 이름도 가능합니다. [중간 점검 문제] 2. days와 Days는 동일한 변수인가 아닌가? 3. 다음 중에서 올바르지 않은 변수이름은? x, 8items, march09, sales_report, theProfit2009, #ofPlayer

  10. 2. 기초형 • 기초 자료형 (Primitive Data Type) • 자바에서 사용되는 자료는 대부분이 객체이지만 기초형은 자주 사용되기 때문에 성능 저하를 막기 위하여 기초형만큼은 객체가 아닌 숫자나 문자 값 그 자체임. • int vs. Integer

  11. 2. 기초형 • 정수형 • long은 64비트를 이용 • int는 32비트를 이용하여 약 -21억에서 21억 정도의 정수를 표현 • short는 16비트를 이용하여 -32,768에서 +32767사이의 정수를 표현 • byte는 8비트 정수로서 -128에서 +127까지의 정수를 표현 (Q) 만약 다음과 같이 정수형의 변수에 범위를 벗어나는 값을 대입하면 어떻게 될까? byte number = 300;// 오류!! (A) 컴파일 오류가 발생한다.

  12. 2. 기초형 • 정수형 상수 (리터럴) • x = 100;에서 100과 같이 소스 코드에 쓰여 있는 값 그 자체 • 여러 진법 사용 가능 • 10진수(Decimal): 14, 16, 17 • 8진수(Octal): 016, 018, 019 • 16진수(hexadecimal):0xe, 0x10, 0x11 • l 또는 L 표기 • 정수 리터럴은 int 타입으로 인식되기 때문에 정수리터럴 뒤에 L (또는 l)이 있어야 long타입인 정수 리터럴이된다. • long타입의 제로에 해당하는 리터럴은 0이 아니라 0L (또는 0l)

  13. 2. 기초형 • 정수 리터럴 예제

  14. 2. 기초형 • 기호 상수 • 상수에 이름을 주어서 변수처럼 사용 • 숫자보다 이해하기 쉽고, 값의 변경이 용이하다. • 논리형 • true 아니면 false라는 값만 가질 수 있다. • final double PI = 3.141592; • final int MAX_NUMBER = 100; boolean condition = true; boolean flag = false; x = 1; if (x) System.out.println(“Hello!”); 잘못된 코딩

  15. 2. 기초형 • 실수형 • float는 32비트를 이용하여 실수를 표현 • double은 64비트를 이용하여 실수를 표현 • float는 약 7개 정도의 유효 숫자 • double은 약 15개 정도의 유효 숫자 • 실수 리터럴 • 실수형 리터럴은 double형이 기본 • float타입은 0.0이 아니라 0.0F임에 주의 • 실수 리터럴은 double 타입으로 인식되기 때문에 실수리터럴 뒤에 F (또는 f)가 있어야 float타입인 실수 리터럴이된다.

  16. 2. 기초형 • 실수 리터럴 표기법 • 위 표에서 일반 표기법과 지수 표기법이 가능하다. • 일반 표기법의 세 번째 처럼 자리수 구분 기호는 사용 불가 • 특수한 실수값 • Infinity: 양의 무한대(positive infinity) • -Infinity: 음의 무한대(negative infinity) • 0.0: 너무나 작아서 표현할 수 없는 값 • NaN(Not a Number): 유효하지 않은 연산 • 0.0/0.0 • Math.sqrt(-0.9)

  17. 2. 기초형 • 실수 리터럴 예제 1

  18. 2. 기초형 • 실수 리터럴 예제 2 [참고] http://www.concentric.net/~Ttwang/tech/javafloat.htm

  19. 2. 기초형 • 문자형 • 아스키 (ASCII) 코드가 아니라 16비트 유니 코드(unicode)를 사용 • 유니코드의 0x0000부터 0x00ff까지의 문자는 일반적으로 많이 쓰이는 ASCII 코드와 호환

  20. 2. 기초형 • 문자형 리터럴 (상수)

  21. 2. 기초형 • 특수 문자 리터럴

  22. 2. 기초형 • 특수 문자 리터럴 예제

  23. 2. 기초형 • 중간 점검 1. 변수가 36에서 5000정도의 값을 저장하여야 하다면 어떤 자료형이최적인가? 2. 변수가 -3000에서 +3000까지의 값을 저장하여야 하다면 어떤 자료형이 최적인가? 3. 0.025를 지수 표기법으로 표기하여 보라. 4. 어떤 리터럴(상수)이 더 많은 메모리 공간을 차지하는가? 28.9 28.9F 5. booelan 자료형이 가질 수 있는 값을 전부 쓰시오.

  24. 3. 연산자 • 연산자와 피연산자 • 연산자(operator)는 특정한 연산을 나타내는 기호 • 피연산자(operand)는 연산의 대상 • 우선순위 (Precedence) • 수식을계산할 때에는 우선 순위가 높은 연산자가 먼저 실행 • 우선 순위가 같은 연산자는 대입 연산자를 제외하고 왼쪽에서 오른쪽으로 계산 • 대입 연산자는 오른쪽에서 왼쪽으로 계산

  25. 3. 연산자 int n = 1 - 2 * 3 - 4 + 5; int n = 1 –(2 * 3) - 4 + 5; • 연산자의 종류 및 우선순위

  26. 3. 연산자 • 수식 (Expression) • 상수나 변수, 함수와 같은 피연산자들과 연산자의 조합 =

  27. 4. 대입, 산술, 단항 연산자 • 대입연산자 (Assignment Operator) • 대입 연산자(=)는 왼쪽 변수에 오른쪽 수식의 값을 계산하여 저장 • 대입 연산자 == 할당 연산자 == 배정 연산자 • 산술 연산자 (Arithmetic Operators)

  28. 4. 대입, 산술, 단항 연산자 • 산술 연산자 (Arithmetic Operators)

  29. 4. 대입, 산술, 단항 연산자 • 문자열과 “+” 연산자 • + 연산자는 문자열들을 결합할때 사용될 수 있다. • 문자열과 다른 타입의 + 연산 결과는 문자열

  30. 4. 대입, 산술, 단항 연산자 • 단항 연산자 x = a * -b x = a * (-b)

  31. 4. 대입, 산술, 단항 연산자 • 단항 연산자 예제 • 위 출력결과에서 마지막 i 값은 왜 4가 아니라 3일까? • 이후에 배우는 논리연산자의 short circuit 과 관련

  32. 4. 대입, 산술, 단항 연산자 • 복합 대입 연산자 • 관계 연산자 (Relational Operators) • 연산의 결과는 항상 boolean 리터럴인 true 또는 false 가 된다.

  33. 4. 대입, 산술, 단항 연산자 • 논리 연산자

  34. 4. 대입, 산술, 단항 연산자 • 논리 연산자 예제 ( x==3 && y ==7) 위와 같이 작성해도 연산자 우선 순위상 문제 없음

  35. 4. 대입, 산술, 단항 연산자 • 논리 연산자와 Short Circuit • (expr1 && expr2) 에서 expr1이 false 이면 expr2는 무시됨 • (expr1 || expr2) 에서 expr1이 true 이면 expr2는 무시됨  x가 0이면 y==12/x 라는 수식은 계산되지 않는다.  ++i 값과 ++j 값이 같으면 ++i ==j 수식은 무시된다.

  36. 4. 대입, 산술, 단항 연산자 • 삼항 연산자 • condition이 참이면 exp1이 선택되어 계산되고 그렇지 않으면 exp2가 선택되어 계산된다. • (예) max_value = (x > y) x : y; // 최대값 계산 • 중간 점검 문제 condition ? exp1 : exp2 • 1. 다음의 각 변수의 값을 적어보라. • int x = 1; • int y = 1; • int a = ++x * 2; // a의 값은 ___________ • int b = y++ * 2; // b의 값은 ___________ • 2. 다음 수식의 값을 쓰시오. • 12/5 - 3 • 5 + 19%3

  37. 5. 연산자의 우선 순위와 결합 규칙 • 어떤 연산자가 먼저 계산되는가? • 괄호 안은 먼저 계산된다. • 만약 같은 우선 순위를 가지는 연산자들이 여러 개가 있으면 어떤 것을 먼저 수행하여야 하는가? m = x + y + z / 3    

  38. 5. 연산자의 우선 순위와 결합 규칙 • 중간 점검 • 다음의 수식에서 연산의 순서를 적으시오. • x = y = 3 / 5 * 2 % 6; • (2) y = a * x * x + b * x + c;

  39. 6. 비트연산자 • 비트 연산자 (Bit Operators) • 정수타입에 대한 비트 연산 및 비트 이동 연산 • << • 오른쪽의남는 비트는 0으로 채운다. • >> • 왼쪽의 남는 비트는 부호와 같은 값으로 채운다. 양수는 0으로 음수는 1로 채운다. • >>> • 왼쪽의 남는 비트는 부호와 무관하게 무조건 0으로 채운다.

  40. 6. 비트연산자 • 비트 연산자 예제 • 중간 점검 • 1. 변수 y, z, a, b의 값은? • int x = 0xff0f; • int y = x << 4; • int z = x >> 4; • int a = x & 0xf0ff; • int b = x | 0xf0ff;

  41. 7. 형변환 • 형변환 (Type Casting) • 형변환(cast)는 어떤 자료형의 값을 다른 자료형의 값으로 바꾸어 주는 연산 • 묵시적형변환 (Implicit Type Casting) • 자동 형 변환, 확대 변환 (Widening) • 타입별 범위의 순서 • 범위가 작은 타입 값을 범위가 큰 타입 변수에 할당할 때 Java 언어 자체에서 자동으로 타입 변환을 해주는 것을 의미

  42. 7. 형변환 • 명시적형변환 (Implicit Type Casting) • 범위가 큰 타입의 값을 범위가 작은 타입의 변수로 할당할 때 반드시 필요 • 축소 변환 (Narrowing Conversion) • 형태 y = (double) x (주의) 소수점 이하는 사라진다.

  43. 7. 형변환 • 형변환 예제

More Related