멘토링 2 주차
3 장 프로그래밍을 위한 자바의 자료형 값이 변하지 않는 상수 메모리 기억공간인 변수
1. 값이 변하지 않는 상수 1.1 소수점을 가지지 않는 정수형 상수 ( 수치형 상수 ) 상수의 종류예의미 10 진수 4, 10, 80 8 진수 04, 012, 0100 맨 앞에 숫자 ‘0’ 을 덧붙이면 8 진수 상수로 인식 16 진수 0x4, 0xA, 0x6 맨 앞에 숫자 ‘0’ 과 영문자 ‘x', 즉 ’0x' 를 덧붙이면 16 진수 상수로 인식합니다. long 형 10L,034L,0x2AL 10 진, 8 진, 16 진 상수 뒤에 L 을 덧붙임
1. 값이 변하지 않는 상수 1.2 소수점을 갖는 실수형 상수 ( 수치형 상수 ) 상수의종류예의미 소수형 , 가장 일반적으로 사용하는 실수형 데이터 지수형 E3, 0.987E-5 영문자 E 를 기준으로 앞에는 가수부 뒤에는 지수 부를 기술함 float 형 f, f 실수형 상수 뒤에 f 를 덧붙임
1. 값이 변하지 않는 상수 1.3 단일 따옴표로 표현하는 문자형 상수 ▶ 예 ‘A', 'a', '2', '*', '\t'
1. 값이 변하지 않는 상수 ▶ 확장 특수 출력 문자 (escape sequence) 종 류종 류의 미의 미 ‘\a' ‘\n' '\t‘ '\b' '\r‘ '\f' 경고음이 난다. 엔터 키의 기능을 갖는다. 줄을 바꾼다 (new line). 수평 탭으로 일정한 간격을 띄운다 (tab). 백스페이스로 뒤로 한 칸 후진한다 (back space). 동일한 줄맨 앞칸으로 커서만 옮긴다 (carriage return). 출력 용지를 한 페이지 넘긴다 (form feed). '\\' '\'' '\"' '\0' \ 문자를 의미한다. ' 문자를 의미한다 (single quote). " 문자를 의미한다 (double quote). 널 문자를 의미한다 (null).
1. 값이 변하지 않는 상수 1.4 참 혹은 거짓을 갖는 논리형 상수 - 참 (true), 거짓 (false) 둘 중의 하나의 값만을 저장할 수 있는 자료형 - 다른 자료형으로 변환하지 못한다.
자바에서 사용되는 상수종류 [ 파일 이름 : Data01.java] 01:public class Data01 { 02: public static void main(String[] args) { 03: 04: //(1) 정수 : 소수점이 없는 수 05: System.out.println(1); 06: //(2) 실수 : 소수점이 있는 수 07: System.out.println(1.5); 08: //(3) 문자 : 단일 따옴표로 묶어줌 09: System.out.println('a'); 10: //(4) 논리값 : true, false 11: System.out.println(true); 12: } 13:}
더 다양한 상수 -[ 파일 이름 : Data02.java] 001:public class Data02 { 002: public static void main(String[] args) { 003: //(1) long 형 상수 : 숫자 끝에 L 혹은 l 을 붙임 004: System.out.println(1L); 005: //(2) float 형 상수 : 숫자 끝에 F 혹은 f 를 붙임 006: System.out.println(1.5f); 007: //(3) 문자열 : 이중 따옴표로 묶어줌 008: System.out.println("abc"); 009: } 010:}
2. 메모리 기억공간인 변수 살피기 프로그램 실행 중에 변하는 값을 저장할 수 있 는 메모리 기억공간 변수는 앞에 언급한 상수 ( 값 ) 를 저장하기 위한 공간을 의미 이러한 공간은 컴퓨터의 메모리 (RAM) 의 특정 위치 ( 스택 ) 에 만들어진다.
2.1 기억공간을 확보하는 변수 선언 변수는 상수처럼 그냥 사용하지 못하고 변수 선언 과정을 거친 후 사용할 수 있다. 자료형 변수 _ 이름 ;
2.2 기본 자료형 long
2.3 소수점이 없는 정수형 유 형유 형크 기크 기허 용 값허 용 값 byte1 Byte( 8 bit) -2 7 ~ ~127 short2 Byte(16 bit) ~ ~32767 int4 Byte(32 bit) ~ ~ long8 Byte(64 bit) ~ ~ 정수를 저장하기 위한 자료형을 4 가지로 나눈 이유는 저장할 데이터 ( 상수, 값 ) 에 따라 기 억공간의 크기를 다르게 할당하기 위한 것
변수의 이름을 명명하기 위한 규칙 ① 영문자 (A~Z, a~z) 와 숫자 (0~9) 와 밑줄문자 (_) 의 조합으로 만들어집니다. ② 첫 글자는 반드시 영문자나 ‘_’ 로 시작하여야 합니다. 숫자로 시작해서는 안 됩 니다. ③ 식별자는 철자 ( 스펠링 ) 가 같다고 해도 대소문자를 구분하기 때문에 조심해야 합 니다. ④ 자바에서 사용되는 예약어는 식별자로 사용할 수 없습니다. ⑤ 식별자는 가급적이면 자기 역할에 맞는 이름을 부여합니다.
- 예약어와 식별자 예약어란 ? 자바에서 미리 정의하고 의미를 부여한 단어. 이미 정해진 자신의 역할이 있기 때문 에 프로그래머는 예약어를 다른 용도로 사용할 수 없다. int, char, class, if, else, switch, for, while, break 식별자란 ? 프로그래머가 특별히 의미를 부여하는 단어 예를 들어 변수의 이름이나 메소드의 이름이나 클래스의 이름 등을 식별자라고 한 다.
정수 상수를 저장하는 정수형 변수 01:public class Data03{ 02: public static void main(String[] args) { 03: int a; // 변수 선언하고 04: a=1; // 변수에 값을 저장 05: System.out.println(a); 06: 07: a=2; // 변수는 값을 변경할 수 있다. 08: System.out.println(a); // 마지막에 대입한 값만 유지 09: } 10:}
2.4 자료형의 역할 저장되는 값의 형태를 결정 소수점이 없는 값을 정수형 상수를 저장하기 위해서는 int 형 으로 변수 선언 소수점이 있는 값을 실수형 상수를 저장하기 위해서는 double 형으로 변수 선언 참, 거짓 논리값을 저장하기 위해서는 boolean 형으로 변수 선언 int a=1; double m=2.4; boolean k=true;
2.4 자료형의 역할 2. 메모리의 사이즈를 결정 메모리 할당되는 사이즈에 따라 변수에 저장할 수 있 는 값의 허용 범위가 달라진다. byte a=1; a=128; // 컴파일 에러 short b=128; b=32768; // 컴파일 에러 int c=32768; int c=123456L; // 컴파일 에러 long d=123456L;
2.5 자료형 변환 long d=123456; int c=123456L; // 컴파일 에러 // 암시적인 형 변환
2.5.1 암시적인 형 변환 short b=128; int c=32768; c=b; // 암시적인 형 변환
2.5.2 명시적인 형 변환 short b=128; int c=32768; b=c; // 컴파일 에러 b=(short)c; // 명시적인 형 변환
암시적인 형 변환과 명시적인 형 변환 01:public class Data05 { 02: public static void main(String[] args) { 03: byte a=1; 04: short b=128; 05: int c=32768; 06: 07: b=a; // 암시적인 형 변환 08: System.out.println(b); 09: 10: b=(short)c; // 명시적인 형변환 11: // 오버플로우가 발생되어 엉뚱한 값 출력 12: System.out.println(b); 13: } 14: }
2.6 소수점이 있는 실수형 int a=23.7; // 컴파일 에러 종류유형크기 실수형 float4 Byte double8 Byte
2.6 소수점이 있는 실수형 float b=23.7; // 컴파일 에러 double c=23.7; // 올바른 표현 float b=23.7f; // 올바른 표현
실수 자료형 저장하기 01:public class Data06 { 02: public static void main(String[] args){ 03: double a=23.7; 04: float b=23.7f; 05: System.out.println(a); 06: System.out.println(b); 07: } 08:}
2.7 문자 한 개를 저장하는 문자형 종 종 류종 종 류유유 형유유 형크 기 크 기크 기 크 기허허 용 값허허 용 값 문자형 char 2 Byte (16 bit) 16 비트 유니 코드 0 ~ 대문자 ‘A’(65) 소문자 ‘a’(97) 정수형태의 문자 ‘0’(48)
문자 자료형 저장하기 01:public class Data07 { 02: public static void main(String[] args){ 03: char x; 04: x='A'; 05: System.out.printf("%c->%d\n",x,(int)x); 06: x='0'; 07: System.out.printf("%c->%d\n",x,(int)x); 08: x=0; //0 은 NULL 문자를 의미 09: System.out.printf("%c->%d\n",x,(int)x); 10: x='a'; 11: System.out.printf("%c->%d\n",x,(int)x); 12: } 13:}
-println, print, printf ① println - ln 은 라인의 약어로서 메소드 내에 기술한 내용을 출력한 후 자동으로 개행 ( 줄을 바꿈 ) 한다. ② print 메소드 - 메소드내에 기술한 내용만을 출력할뿐 줄 바꿈을 하지 않 는다. ③ printf 메소드 - 자바 5.0 에서 추가되었다. - printf 의 f 는 format 의 약어로서 형식 지정자를 기술하여 원하는 자료 형태로 출력할 수 있는 메소드. - 문자 데이터를 문자 형태로 출력하기 위해서는 %c 라는 형 식 지정자를 사용한다. - 형식 지정자는 % 기호 다음에 영문자를 기술하는데 형식 지정자 %d 는 정수형 10 진수 형태로 출력하게 된다. d 는 decimal 의 약어이다. 저장된 문자 데이터의 아스키 코드 값으로 출력하려면 %d 사용
문자여러개를 집합으로 관리하는 문자열형 (String) 'AB' // 잘못된 표현 "AB" char x="AB"; // 잘못된 표현 String y="AB"; String y=‘A'; // 잘못된 표현
문자열 저장하기 01:public class Data08 { 02: public static void main(String[] args){ 03: String y; 04: y="AB"; 05: System.out.println(y); 06: y="A"; 07: System.out.println(y); 08: } 09:}
1. 잘못된 문장을 골라내고 그 이유를 설명하시오. public class DataEx01 { public static void main(String[] args) { char a='a'; //A. char b="a"; //B. String c="a"; //C. String d='a'; //D. char e='ab'; //E. String f="ab"; //F. }
2. 잘못된 문장을 골라내고 그 이유를 설명하시오. public class DataEx02{ public static void main(String[] args) { byte var1=128; //A. short var2=128; //B. int var3=28L; //C. long var4=128L; //D. float var5= ; //E. double var6= ; //F. }
3. 잘못된 문장을 고쳐서 에러가 발생하지 않도록 수정하시오. 001:public class DataEx03{ 002: public static void main(String[] args) { 003: byte var1=127; 004: short var2=128; 005: int var3=128; 006: long var4=128L; 007: var4 = var1; 008: System.out.println(var1+ ", " + var2); 009: var1 = var3; 010: System.out.println(var1+ ", " + var3); 011: 012: float var5= ; 013: double var6= ; 014: var5 =var6; 015: System.out.println(var5+ ", " + var6); 016: var6 = var5; 017: System.out.println(var5+ ", " + var6); 018: } 019:}
4. char 형의 저장할 수 있는 데이터 값의 허용 범위는 얼마입니까 ? 5. 변수를 선언하기 위해서는 자료형과 변수의 이름 을 결정해야 합니다. 변수 이름으로 사용할 수 있는 것을 고르시오. A. false B. default C. _object D. a-class
6. 다음 프로그램을 컴파일 했을 때 결과를 추측해보시오. public class DataEx06 { public static void main (String[] args) { byte b = 127; byte c = 126; byte d = b + c; }
7. 다음 프로그램을 컴파일 했을 때 결과를 추측해보시오. public class DataEx07 { public static void main (String[] args) { float foo1 = -1; //A. float foo2 = 1.0; //B. float foo3 = 42e1; //C. float foo4 = 2.02f; //D. float foo5 = 3.03d; //E. float foo6 = 0x0123; //F. }
8. byte 형을 저장할 수 있는 데이터 값의 허용 범위는 얼마입니까 ? 9. float 형 변수 선언이 올바르게 된 것 두개만 고르시오. public class DataEx09 { public static void main (String[] args) { float f1 = 1F; //A. float f2 = 1.0; //B. float f3 = '1'; //C. float f4 = "1"; //D. float f5 = 1.0d; //E. }