글
상수와 변수, 자료형
상수 : 항상 일정한 값을 유지하는 데이터
변수 : 특정 상황에 따라 변화하는 데이터
자료형 : 상수나 변수의 유동적인 데이터를 저장할 수 있는 크기를 규정하는 형태
@@ 하나하나 예를 들어주면서 설명하며 특히 정수형중 byte부분은 좀더 상세히 설명
- 1.논리형 자료형
1)boolean : 사용바이트 1byte, 입.출력범위 : true/false => 형변환이 안된다
예) boolean bool = false;("false",'false'는 안된다)
public class Exec_01{
public static void main(String[] args){
boolean bool = true;
System.out.println("bool의 값은 "+bool);
}
}
- 2.정수형 자료형
2)byte : 사용바이트 1byte, 입.출력범위 : -128 ~ 127
예) byte by = 123;(초기화를 꼭 시켜줘야 한다 - 스택영역에 저장)
127 + 1 프로그램 하나를 실행시켜 보자.
이프로그램의 원리를 설명해 주도록 하자(시계를 예로 들면서)
public class Exec_02{
public static void main(String[] args){
byte by = 127;
by++;
System.out.println("byte값 127 + 1 = "+by+"입니다");
}
}
3)char : 사용바이트 2byte, 입.출력범위 : 0 ~ 65,536(유일한 unsigned data)
유니코드를 도입해서 2Byte로 이루어져 있다
예) char ch = 65('A'의 아스키 코드 값)
char ch = 'A'(작은따움표는 ASCII코드 값을 의미한다)
char ch = '\u0041';(\u는 유니코드를 의미하는 표시이고
뒤의 4자리는 'A'를 16진수로 표현한 값이다
public class Exec_03{
public static void main(String[] args){
char ch1 = 65;
char ch2 = 'A';
char ch3 = '\u0041';
Sytem.out.println("ch1 = "+ch1+", ch2 = "+ch2+", ch3 = "+ch3+"입니다");
}
}
0 = \0 or NULL => NULL 문자
8 = \b back space => 백스페이스 문자
9 = \t tab => 탭 문자
10 = \n => 한줄개행(새로운 라인의 커서를 이동, 바로 아래쪽으로 이동)
13 = \r => 현재줄의 가장 첫 번째로 이동 (\r\n으로 사용한다)
27 = 'esc' => esc키 아스키 값
48-57 = '0' ~ '9' => 숫자 아스키 값
65-90 = 'A' ~ 'Z' => 대문자 아스키 값
97-122 = 'a' ~ 'z' => 소문자 아스키 값
4)short : 사용바이트 2byte, 입.출력범위 : -2^15~2^15-1(-32,768 ~ 32,767)
예) short sh = 12345;
정수형으로 잘 사용되지 않는다.
5)int : 사용바이트 4byte, 입.출력범위 : -2^31~2^31-1(-2,147,483,648~2,147,483,647)
예) int i = 100;
4byte 메모리를 기억, 모든 정수의 기본 자료구조가 int형이다.
정수 연산시에 발생하는 결과 값은 모두 int형으로 표현
byte a = 10; byte b = 20; a+b => byte형이라도 + 연산자를 사용하면 int형 30이 된다
6)long : 사용바이트 8byte
입.출력범위 : -2^63~2^63-1(-9,223,372,036,854,775,808~9,223,372,036,854,775,807)
초기화 할때 l이나 L을 붙혀야 한다.
예) long lo = 123356L;
- 실수형 자료형
7)float : 사용바이트 4byte, 입.출력범위 : 1.4E-45 ~ 3.402823E38
예) float f = 12.34f;
기본 자료형이 아니므로 초기화 할때 반드시 f나 F를 붙혀줘야 한다.
0으로 나누었을때 무한대의 값을 표기하는 Infinity라는 예약어를 이용
0을 0으로 나누었을때 수가 아닌 값을 표현하기 위해 NaN이라는 예약어를 이용
8)double : 사용바이트 8byte, 입.출력범위 : 4.9E-324 ~ 1.8E308
예) double du = 12345.789;
실수형 기본 자료형으로 8byte범위를 나타낸다
- 클래스형 자료형
9) String : 사용바이트 4byte(레퍼런스형), 입.출력범위 : 무한대
예) Sting str="김병철"
String의 S는 항상 대문자(클래스이므로)
클래스의 자료형은 초기화를 해 줄 필요가 없다(동적할당메모리영역에 저장)
클래스변수는 무조건 4byte이며, 문자열을 처리할수 있는 자료형처럼
사용할 수 있도록 만들어졌다.
Promosion 과 Casting을 이용한 자료형의 변환
- 형변환이란 위의 자료형들에 저장된 값을 다른 자료형에 집어 넣는 방식을 말한다.
- 자동형변환(Promosion) : 큰자료형에 작은 자료형을 넣을 경우
에러는 발생하지 않으나, 메모리 공간이 낭비된다.
- 강제형변환(Casting) : 작은 자료형에 큰 자료형의 값을 대입하는 경우
반드시 형변환이 이루어져야만 한다. 안하면 에러발생
- 기준
1) 자료형들의 공간 범위를 기준으로 한다.
- short a=10; char b=a; 라고 하면 오류가 발생
short형은 -32,768~32,767이고 char은 65,535까지 이므로 음수가 되었을 경우를
생각해서 casting되어야 한다. char b=(char)a;
예) byte a=12; char b=a;
byte a=12; short b=a;
char a=12; short b=a;
2) 실수형자료형은 정수형자료형보다 큰 자료형이다
- 실수는 무조건 정수보다 크다(무조건 외우자)
@@ 강제형변환과 자동형변환의 예를 들며 프로그램 작성등으로 설명
**초기화 에러
long a = 12; 이러면 int 12를 long형 a에 저장하는 자동 형변환이 일어난다.
l,L을 안붙혀서 나타나는 현상
float f = 12.5; 이러면 에러가 난다. double 12.5를 float형 f에 넣을때는 강제형변환을 해줘야한다
f,F를 안붙혀서 나타나는 현상
'자바' 카테고리의 다른 글
자바의 기본 입출력(9) (0) | 2012.12.11 |
---|---|
자바의 연산자(8) (0) | 2012.12.11 |
자바의 기초적인 개념1(6) (0) | 2012.12.11 |
eclipse를 사용 자바시작(5) (0) | 2012.12.05 |
자바를 쉽게 쓰기 위한 툴 다운로드(4) (0) | 2012.12.05 |
RECENT COMMENT