티스토리 뷰
1. primitive type (기본형)
- boolean
- byte
- short
- char
- int
- long
- float
- double
2. reference type (참조형)
- 기본형에 해당하지 않는 경우는 모두 다 참조형에 해당
예) String[] args : 변수 args의 data type은 String = String[] 종류의 것을 담는 args라는 이름의 그릇
3. variable declaration & variable assignment
예) int variableIntTest = 73;
→ 변수 variableIntTest의 data type은 int
73이라는 숫자를 variableIntTest 변수에 담겠다
4. casting
예) 명시적인 형변환
byte b1 = 10; //b1의 data type은 byte (1byte짜리) byte b2 = 20; byte b3 = b1 + b2; //에러 발생 //자바에서 내부적으로 연산 시에는 정수형 기본 타입인 int형으로 변환하여 계산 //위 에러는 명시적인 형변환을 통해 해결할 수 있음 byte b4 = (byte)(b1 + b2); | cs |
예) 묵시적인 형변환
double d1 = 100 + 0.5; //d1변수를 data type double로 선언하고 100+0.5 값을 d1에 대입 //d1을 출력하면 100.5 (정수형과 실수형의 연산: double은 8byte, int는 4byte) //묵시적 형변환: 정수형, 실수형에서 data type이 큰 쪽으로 변환 | cs |
예) Casting2.java
public class Casting2{ //class 이름과 파일 이름은 동일해야함 public static void main(String[] args){ //자바는 main method로 시작 //1. b1의 데이터 타입은 byte로 선언 //2. 100을 b1에 대입 byte b1 = 100; //3. 20을 변수 b2에 대입 byte b2 = 20; // byte b3 = b1+b2; // b1, b2는 데이터 타입이 byte 지만 java 내부적으로 계산될 때 기본은 int값으로 이루어진다 따라서 데이터 타입이 다르기때문에 에러 발생 // byte b4 = (byte)b1+b2; // b1은 byte타입임을 명시했지만 b2는 int값으로 그대로 계산 따라서 byte + int는 int로 묵시적 형변환 = 결국 데이터 타입이 달라서 에러 발생 byte b5 = (byte)(b1+b2); System.out.println("b5: "+b5); byte b6 = (byte)(b1+b5); System.out.println("b6: "+b6); // b1+b5 = 220이므로 byte 타입이 표현할 수 있는 -128~127의 값에 해당이 되지 않으므로 쓰레기 값이 도출됨 System.out.println("==================================="); int i1 = b1+b2; System.out.println("i1: "+i1); //120 int i2 = b1+b5; System.out.println("i2: "+i2); //b1, b2, b5는 데이터 타입이 byte지만 자바 내부에서 계산은 int타입으로 이루어진다 - 그걸 int 타입으로 선언한 i1, i2에 대입하는 건 문제가 없다 - 묵시적 형변환 //220 int i3 = i1+b5; System.out.println("i3: "+i3); //int타입인 i1과 byte타입인 b5가 연산을 하면 묵시적 형변환의 특성상 데이터 타입이 큰 int 타입으로 자연스럽게 계산이 이루어짐(자바 내부 정수형 기본 타입이 int라는 것도 생각하자) //240 System.out.println("==================================="); double d1 = 133 + 0.3; System.out.println("d1: "+d1); // int타입인 133 + double타입(실수형 기본타입은 double) 0.3을 계산 - 데이터 타입이 더 큰 double로 계산 - 묵시적 형변환 // int i4 = 143.4; // 데이터 타입이 달라서 에러 발생 // System.out.println("i4: "+i4); int i5 = 200/3; System.out.println("i5: "+i5); // 200/3은 66.6666....이지만 자바 내부에서 계산하는 정수형은 int값으로 산출된다. (소숫점 이하 자리는 날아감) double d2 = 200/3; System.out.println("d2: "+d2); // 66을 double로 선언된 d2에 넣으면 원래 나와야 하는 소숫점 .666...이 되살아 나는 것이 아니라 실수형으로 표현될 뿐이다 (데이터 손실) double d3 = (double)200/3; System.out.println("d3: "+d3); double d4 = (double)(200/3); System.out.println("d4: "+d4); //200/3을 먼저 연산 - 66이 산출(int값이 기본형이므로) 그 후에 double로 데이터 타입을 표현해 봐야 소숫점 아래 값은 형식적으로 표현하게 됨 }// end of main }// end of class |
'Programming > JAVA' 카테고리의 다른 글
조건문 (0) | 2019.03.20 |
---|---|
연산자 (0) | 2019.03.20 |
몇 가지 기본 규칙 (0) | 2019.03.06 |
Compile (0) | 2019.03.06 |
개발 환경 구축 (0) | 2019.03.05 |
댓글