Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- nvidia docker
- elk stack
- MySQL
- c
- mysql docker
- 도커
- java
- 도커 시작하기
- 데이터베이스
- 백준
- 알고리즘
- ansible install
- python
- 데이트
- docker
- 파이썬
- mysql on docker
- streamsets 강의
- 클라우드
- 도커 mysql
- 스트림셋
- c++
- C언어
- 앤서블 설치
- 푸시푸시
- 정보처리기사
- 코딩
- 자바
- 도커 elk
- 스트림셋이란?
Archives
- Today
- Total
리그캣의 개발놀이터
[java] 프리미티브 타입 종류와 값의 범위 그리고 기본 값 본문
타이핑 하며 작성한 문서이기에 오타가 있을 수 있습니다. 오타나 잘못된것은 아래 댓글로 지적해주세요
타입이란?
타입
이란 프로그램 안에서 취급하는 데이터 형식을 정의한 것이다.
예를 들어 아래는 a라는 데이터 형식을 String으로 정의, b라는 데이터를 Int라고 정의할 수 있다.
그렇게 되면 String과 Int는 타입이 되는 것이다.
String a = 'leaguecat';
Int b = 3;
자바는 강타입 언어로 분류 되며 thpe을 지정하는데, 강제성을 가지고 있다.
나는 이직하기 직장에서 python, javascript를 다루었는데 java에 비에 타입에 대한 강제성이 없다보니,
변수를 선언한 사람의 의도를 아는데 시간이 소요되었다.
정적(강타입) 언어, 동적(약타입) 언어란?
- 정적 언어 : 컴파일러 검사 과정에서 형변환을 금지하고 컴파일을 중단하면 강타입
- 동적 언어 : 형이 서로 다르면 경고 표시를 하는데, 자동으로 형변환을 시킴
프리미티브(privitive) 타입이란?
프리미티브 타입은 기본형으로도 분리며 논리형과 숫자형 문자열형 등의 기본적인 데이터 타입이다.
타입 | 설명 | 사이즈 | 값의 범위 | 기본값 |
---|---|---|---|---|
byte | 부호 있는 정숫값 | 8bit | -128 ~ 127 | 0 |
short | 부호 있는 정숫값 | 16bit | -32768 ~ 32767 | 0 |
int | 부호 있는 정숫값 | 32bit | -2147483648~2147483647 | 0 |
long | 부호 있는 정숫값 | 64bit | 허허...-2의63승 ~ +2의63승-1 | 0L |
char | 유니코드 문자 | 16bit | '\u0000' ~ '\uffff'/ 0~65535 | '\u0000' |
float | IEEE754 부동소수점수 | 32bit | 2-149 ~ (2-2-23)*2127 | 0.0d |
double | IEEE754 부동소수점수 | 64bit | 2-1074 ~(2-2-52)*21023 | 0.0d |
boolean | 논리값 | 1bit | true / flase의 두 값 | false |
int 프리미티브 타입을 갖고있는 변수는 12147483647
의 데이터를 저장할 수 있다고 한다.
그렇다면 한번 볼까?? 내가 주로 사용하는 간편하게 자바를 돌릴 수 있는 웹사이트이다.
실행이 잘 된다.
그렇다면 값을 추가해보자.
// your code goes here
int a = 2147483647+1;
System.out.println(a);
아래와 같이 잘못된 값이 출력이 되는것을 확인 할 수 있다.
이는 , 프리미타입의 데이터 값의 범위를 잘 모르면 에러가 있는 코드를 짤 수 있다는 것을 나타낸다.
stdout copy
-2147483648
그렇다면 이번에 boolean 값을 선언 후 그 값을 int에 넣어볼까?
Main.java:14: error: incompatible types: boolean cannot be converted to int
int cat = league;
^
1 error
위와 같이 에러가 발생한다. 이렇게 서로 잘못된 타입을 사용하는 경우는 컴파일 시에 에러로 보고된다.
그렇다면 타입을 지정하면서 얻는 이점은 뭐지?
정적 타입언어의 장점
- 타입과 관련된 버그를 줄일 수 있다.
- IDE를 사용함으로써 변수나 메서드의 이름이 자동 보완되어 효유적으로 프로그래밍을 할 수 있다.
ref
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[java] 자바 literal 리터럴 이란? (1) | 2020.11.21 |
---|---|
[java] 프리미티브 타입과 레퍼런스 타입 (0) | 2020.11.21 |
[JAVA] 예외 처리 Exception (0) | 2018.03.08 |
[JAVA] continue 와 break 의 차이점 (0) | 2018.03.08 |
[JAVA] Scanner 클래스를 사용하여 입력받기 (0) | 2018.03.08 |
Comments