자바 스터디(6기) 1

1,177 views

Published on

난 정말 자바를 공부한 적이 없다구요(윤성우)

chapter2 변수와 자료형
chapter3 상수와 형 변환
chapter4 연산자

OpenOffice로 작성..

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,177
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

자바 스터디(6기) 1

  1. 1. Java Study Chapter 02 변수 (variable) 와 자료형 (data type) Chapter 03 상수와 형 변환 (Type Casting) Chapter 04 연산자 (Operator) 2011.9.18 이진아
  2. 2. byte 형 메모리 공간 구조 할당된 만큼의 구조에서 표현할 수 있는 범위까지만 저장되고 범위 이상의 데이터가 입력되면 오류가 난다 . O byte num1=127; X byte num2=128; <ul><li>변수는 메모리에 공간을 할당하는 것 </li></ul>변수 MSB
  3. 3. 변수 <ul><li>어떤 방식 ( 자료형 ) 으로 입력할지 정해줘야 함 </li></ul>O int num1 = 10; X num2 = 10; 정수형 상수 int 와 실수형 상수 float 의 자료 입력 방식이 상이하다 . int 1 = 00000000 00000000 00000000 00000001 float 1 = 00111111 10000000 00000000 00000000
  4. 4. 변수 <ul><li>상수도 메모리 공간에 저장 </li></ul><ul><li>변수는 이름을 부여 받아 공간을 재사용 ( 덮어쓰기 ) 할 수 있음 </li></ul>상수로 연산할 때는 이름 없는 메모리 공간에 상수를 저장하여 연산 int plus = 1+2+3; => int ? = 1, ? = 2, ? = 3; 상수 1,2,3 은 값이 저장되지 않지만 num1, num2, num3 은 나중에 또 사용할 수 있다 . int num1 = 1, num2 = 2, num3 = 3; int result1 = num1+num2+num3; int result2 = num1*num2;
  5. 5. 자료형 자료형 입력 데이터 저장된 값 메모리 크기 표현가능범위 boolean true/false 1/0 1 바이트 true, false char 문자 유니코드값 2 바이트 모든 유니코드 문자 byte 정수 코드화 된 2 진수 숫자 1 바이트 -128~127 short 2 바이트 생략 int 4 바이트 생략 long 8 바이트 생략 float 실수 4 바이트 생략 double 8 바이트 생략
  6. 6. 자료형 byte num1; 메모리에 num1 이라는 이름으로 8 비트 저장될 공간을 비워놔라 !! num1 = 5; num1 에 5(2)=0000101 를 저장해라 !! 0 0 0 0 0 1 0 1
  7. 7. 자료형 num1 = -5; num1 에 5 의 ‘ 2 의 보수’를 구해 저장해라 !! byte 에서 표현할 수 있는 값의 범위 (2^7) : -128~127 MSB 0 일 때 0, 1~127 MSB 1 일 때 -1~-128 1 1 1 1 1 0 1 1
  8. 8. 자료형 변환 <ul><li>접미사 L, F </li></ul>기본적으로 정수형 상수는 int, 실수형 상수는 double 에 저장된다 . int 의 표현 범위를 벗어나는 정수값은 long 에 저장될 수 있지만 int 보다 큰지 작은지를 먼저 판단해 에러가 나므로 접미사 L 을 붙인다 . long num1 = 10000000000L ; float 에 입력할 수 있는 실수값이라고 해도 double 에 저장가능한지 먼저 판단하기 때문에 접미사 F 를 붙여야 에러가 나지 않는다 . float num2 = 12.45F ;
  9. 9. 자료형 변환 <ul><li>자료형 변환이 일어나는 경우 </li></ul>1. 연산할 때 각 자료형이 데이터를 표현하는 원리가 다르므로 동일한 자료형으로 일치시킨다 . byte -> short -> int -> long -> float -> double char -> int boolean 형변환 일어나지 않음 int num1 = 3, num2 = 4 ; double result = 1.5f + num1/num2 ; => 1.5f + (float) 3/4 => (double) (1.5f + (float) 3/4)
  10. 10. 자료형 변환 <ul><li>자료형 변환이 일어나는 경우 </li></ul>2. 자동 형 변환 규칙에 위배되지만 형 변환이 필요한 경우에 연산자 (type) 을 이용해 형 변환이 이루어지도록 문장을 구성한다 . - 데이터를 잃을 수도 있음 ex) (int)1.5 = 1 => 소숫점 이하 데이터를 잃음 ex) long->int => 상위 바이트가 잘림 - short->int => 상위에 추가로 바이트가 더해짐
  11. 11. 변수와 자료형 변환 문제 1. 모두 한 메소드 안에 들어있을 때 , 오류가 나는 문장은 ? ① int x = 34.5; ② boolean boo = x; ③ int g = 17; ④ int y = g; ⑤ y = y + 10; ⑥ short s; ⑦ s = y; ⑧ byte b = 3; ⑨ byte v = b; ⑩ short n = 12; ⑪ v = n; ⑫ byte k = 128; ⑬ int p = 3 * g + y; ① int x = 34.5; ② boolean boo = x; ③ int g = 17; ④ int y = g; ⑤ y = y + 10; ⑥ short s; ⑦ s = y; ⑧ byte b = 3; ⑨ byte v = b; ⑩ short n = 12; ⑪ v = n; ⑫ byte k = 128; ⑬ int p = 3 * g + y;
  12. 12. 변수와 자료형 변환 문제 2. 연산 중에 자료형이 표현할 수 있는 범위를 넘어서면 어떻게 될까 ? byte num1=127, num2=2; byte result = num1+num2; 3. short 과 char 은 동일한 2byte 에 입력되지만 , 아래 구문을 입력하면 에러가 난다 . 왜 에러가 일어날까 ? short a=65; char b=a; char 에는 음수값 저장방법이 없다 . char->short 에 입력하려 할 때도 char 의 값이 short 보다 클 수 있으므로 데이터 손실의 위험이 있어 자동 형변환이 일어나지 않는다 .
  13. 13. 연산자 <ul><li>연산자의 우선순위와 결합방향 </li></ul>( 1 + 2 ) + ( 3 + 4 ) (1 + 2) = 3 (3 + 4) = 7 3 + 7 = 10 1 + 2 + 3 + 4 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10
  14. 14. 연산자 <ul><li>연산자의 우선순위와 결합방향 </li></ul>int num3 = 1, num4 = 2, num5 = 5; num3 -= num4 + = num5; num4 += num5 => num4 = 2 + 5 = 7 num3 -= num4 => num3 = 1 – 7 = -6 num3 = -6
  15. 15. 연산자 <ul><li>연산자의 피연산자와 반환값 </li></ul>연산자 피연산자 반환값 대입 (=) 자료형에 따라 달라짐 산술 (+,-,*,/,%) 상수 상수값을 갖는 변수 문자열 상수 복합 (+=,-=,*=) 관계 (>,<,==,!=) 상수 상수값을 갖는 변수 문자열 true/false 논리 (&&,||,!) true/false
  16. 16. 연산자 1. = 는 대입연산자 , == 는 논리 연산자 A = 10; 10 을 A 에 넣어라 !! A == 10; A 랑 10 이 같니 ? 2. 정수에서 / 을 하면 소수점 아래 데이터를 잃고 몫만 구할 수 있다 . 소수점 아래의 값을 포함한 전체 몫과 나머지를 구하려면 실수형으로 변환 후 계산 int num = 3; System.out.println( (float)num/4 );
  17. 17. 연산자 3. SEC(Short-Circuit Evaluation) 빠르게 연산을 진행하기 위해서 일부 계산 과정을 무시하고 지나감 속도는 빠르지만 연산과정에서 값 저장이 되지 않을 수 있음 값 저장이 필요한 연산의 경우 변수에 미리 저장 후 연산 진행 num1+=10; num2+=10; result = num1<0 && num2<0 ; System.out.println(&quot;result=&quot;+result); num1+=10; num2+=10; result = num1>0 || num2<0 ; System.out.println(&quot;result=&quot;+result);
  18. 18. 연산자 4. 단항연산 Prefix int num1 = 10; num2 = ++num1; System.out.println(num2); Postfix int num3 = 10; num4 = num3++; System.out.println(num4); 11 10
  19. 19. 연산자 5. 비트 연산 사람이 인식하는 데이터 1 이 아니라 저장된 실제 값 00000001 로 연산 - 정수만 가능 , 실수는 의미가 없음 - 비트 쉬프트 (<<, >>, >>>) 연산은 2 의 배수 단위로 값 증가 , 감소 - 속도를 위해 비트 연산자를 사용한다 산술 연산자를 사용하는 것보다 비트 연산이 기계 친화적이기 때문
  20. 20. 연산자 문제 1. 다음 논리 연산에 대한 내용을 설명하면 ? ① (a >= 10) && (a < 50) ② (a == 1) || (a == 100) ③ ! (a == 100) ① a 는 10 이상이고 50 미만이다 . ② a 는 1 또는 100 이다 . ③ a 는 100 이 아니다 . 2. 다음 내용을 조건식으로 표현 하면 ? ① b=0 또는 b=1 이 아니다 . ② b=0 이 아니고 b=1 도 아니다 . ③ b≠ 0 이고 , b≠1 다 . ① !((b==0) || (b==1)) ② !(b==0) && !(b==1) ③ (b!=0) && (b!=1)
  21. 21. 연산자 문제 3. 놀이기구를 타기 위한 아래의 조건을 조건식으로 표현하면 ? ( 연령 age, 신장 height, 건강한 상태 health, 보호자 동반 pg) - 6 세 이상 ( 단 , 신장 130cm 이상 보호자 동반 ) - 신장 130cm 이상 - 심장이 약한 사람은 조심 ( (age >= 6 && height >= 130) || (height >= 130 && pg) ) && health
  22. 22. 생각해 볼 부분 1. postfix 어떤 용도로 쓰일까 ? 2. 비트 연산의 장점은 속도 이외에 또 무엇이 있을까 ?

×