일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 개발상식
- 카카오1차
- java method
- Java heap
- 공부정리
- 백준 1924번 java
- 힙정렬자바
- 객체프로그래밍이란
- 자료구조 트리
- heap정렬
- 카카오코딩테스트
- 알고리즘
- java
- 자바문자열
- 객체프로그래밍
- 백준 1924번
- 자바
- 프렌즈4블록
- 백준 1000번 java
- 자료구조힙
- heap
- 백준
- 카카오코테
- 문자열포맷
- 카카오기출
- 프로그래머스
- 프렌즈4블록java
- 백준 1000번
- 코딩테스트기출
- 코테준비
- Today
- Total
일단 시작해보는 블로그
[Java] 데이터 타입 본문
1. 기본 데이터 타입(primitive data types)
정수 : byte, short, int, long
부동 소수점 타입 (실수) : float, double
부울 데이터 타입 : boolean
문자 데이터 타입 : char
1 ) 정수와 부동 소수점
1byte = 8bit, 즉 byte는 0과 1을 표현하는 1비트의 8자리이다.
1byte는 128가지(2^8)의 다른 데이터를 가질 수 있다.
프로그램을 설계할 때 메모리 공간이 낭비되지 않도록 적절한 크기의 변수를 선택하는데 주의해야한다.
특정 변수의 값 범위가 확실하지 않을 경우에는 충분한 크기의 공간을 제공해야 한다.
2) 명시적 데이터 값 (literal)
java의 정수 리터럴은 int 타입이다. long 타입을 표현하기 위해서는 숫자 끝에 L이나 l을 붙여준다.
int age = 20;
long bigdata = 86127531235L;
부동 소수점 리터럴은 double형이다. float타입을 표현하기 위해서는 숫자 끝에 F나 f를 붙인다.
double delta = 453.523311903;
float ratio = 0.2363F;
3) 문자
char 리터럴은 단일 인용 부호(' ')로 표현된다.
String 리터럴은 이중 인용 부호(" ")로 구분된다. (String 타입은 Java의 기본 데이터 타입이 아니며, 한 클래스의 이름이다.)
char score = 'A'; //A는 char 타입.
String score_str = "A"; //여기서 A는 String타입.
4) 부울 (boolean)
boolean은 두가지 유효 값을 가진다. true or false
부울 값은 다른 데이터 타입으로 변환될 수 없고, 다른 데이터 타입도 부울 값으로 변환될 수 없다.
2. 데이터 변환
데이터 변환은 확정 변환(widening conversion)과 축소 변환(narrowing conversion)으로 구분된다.
1) 확장 변환
확장 변환은 정보가 손실되지 않기 때문에 안전하다. 이 변환은 한 데이터 타입보다 더 큰 타입으로 변환되기 때문에 확장 변환이다.
byte에서 short변환은 안전하다. 따라서 어떠한 정보 손실도 일어나지 않는다.
정수 -> 정수, 부동 소수점 -> 부동 소수점의 확장 변환은 그 값을 보존한다.
하지만 int나 long을 float, long, double로 변환시킬 때, 유효 숫자 중에서 몇 개가 손실될 수 있다.
2) 축소 변환
축소 변환은 정보가 손실될 가능성이 많다. 더 작은 공간을 사용하는 다른 타입으로 변환하면서 정보의 일부가 손실될 수 있기 때문이다.
따라서 축소 변환은 일반적으로 피해야 한다.
3) 데이터 변환 방법
배정 변환은 한 타입의 값이 다른 타입의 변수에 배정될 때 일어나며, 그 과정에서 값이 새로운 타입으로 변환한다.
캐스팅(casting)은 Java에서 가장 일반적인 형변환 형태이다.
예를 들어,
int score = (int)23.4
여기서 23.4를 int형 score에 배정하기 위해 (int)로 캐스팅 했다. 그 과정에서 데이터 손실이 일어나 score는 23이 된다.
8개의 기본형 중에서 boolean을 제외한 나머지 7개의 기본형 간에는 서로 형변환이 가능하다.
범위가 큰 자료형에서 범위가 작은 자료형으로의 변환인 축소변환은 데이터 손실이 일어날 수 있다.
원칙적으로 모든 형변환에 캐스트 연산자를 이용한 형변환이 이루어져야 하지만, 확장 변환은 값의 손실이 없으므로 캐스트 연산자를 생략하는 것을 허용한다.
[REFERENCE]
'개발 > Java' 카테고리의 다른 글
[Java] 자바의 정규표현식을 위한 Pattern, Matcher (0) | 2019.09.03 |
---|---|
[Java] 정규표현식, Regular Expression (0) | 2019.09.03 |
[Java] ArrayList, 참조값 복사와 값 복사 clone() (0) | 2019.08.22 |
[Java] indexOf(int ch), substring() (0) | 2019.08.22 |
[Java] String 다루기 - matches, regex (0) | 2019.08.22 |