mjeongriver
article thumbnail
Published 2022. 9. 21. 18:50
day2-java TIL/Java

데이터 타입은 총 9가지( byte, short, int, long, float, double, true, false, char,  String).

 

* 정수형 데이터 타입(데이터 타입을 상자라고 생각해서, 각각 상자의 크기가 다르게 만들어짐.)
- 정수형에는 4가지 유형이 있습니다.
- 정수형 변수는 byte, short, int, long 키워드(예약어)를 사용하여 선언합니다.
                8bit → 1 byte / → Kb → Mb → Gb →
byte - 1 byte, 127 7칸 사용 <맨 앞이 부호 비트로 맨 왼쪽 1이면 음수(-128), 0이면 양수(127)>  
short 2 byte 
int 4  byte (정수는 4byte 까지 저장 가능) 대략 21억까지 저장 가능
long 8  byte
- 정수형의 디폴트는 int(기본형)이므로 long형을 지정하려면 할당할 숫자 뒤에 "L"을 붙여줍니다.

 

* 실수형 데이터 타입(3.14 소수점)
- 실수형에는 2가지 유형이 있습니다.
- 실수형 변수를 선언할 때 float, double 키워드를 사용합니다.
- 실수형은 디폴트형이 double(기본형)이므로 float형을 지정하려면 숫자 뒤에 "F"를 붙여줍니다.
float=4byte 32칸 정수, 실수 나눠서 사용, 실수 7자리까지가 신뢰성 표기
double=8byte 15자리 신뢰성 표기.
** 더했을 때 오차 있을 수 있음

 

* 논리형 데이터 타입(boolean=1bit)
- 논리형 값에는 true와 false가 있습니다.
- 논리형은 다른 데이터 타입과 서로 형 변환(type casting)할 수 없습니다.
- 또한 C언어에서처럼 숫자 값을 논리 값으로 해석하여, 0을 false로 다루고 0이 아닌 값을 true로 해석하는 것을 허용하지 않습니다.
- 논리형 데이터타입에서는 오직 true와 false만 허용합니다.

* 문자형 데이터 타입
- 단일 문자는 char형으로 표현합니다.
- char형은 0~ 2^16의 범위 내에서 부호가 없는 16비트(2byte) 숫자를 사용하여 유니코드 문자를 표현합니다.
- char형 값은 홑 따옴표 (' ')안에 넣어야 합니다. 'a'
- 부호가 없어서 16칸 모두 이용 2의 16승 개- 문자열(문자가 합쳐진 상태)을 표현할 때는 String을 사용합니다.


- String은 기본 데이터형이 아닙니다. 문자열을 좀 더 쉽게 다루기 위해 만들어 놓은 클래스입니다.
- String 클래스는 문자열을 표현하는데 사용됩니다.
- 문자열 값은 겹 따옴표(" ")안에 넣습니다. "abc"

 

** 형 변환(type casting) - 데이터타입의 형태를 변환 

** 데이터의 크기 
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
                char(2)

** 데이터의 크기 
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
                 char(2)
- float은 4바이트인데 long보다 큰 타입인 이유는 표현할 수 있는 값의 경우의 수가 float이 더 크기 때문입니다.
- 크기가 큰 데이터 타입을 크기가 작은 데이터 타입으로 변환할 때는 반드시 캐스트 연산자를 사용하여 변환할 데이터 타입을 명시해야 합니다.(강제 형 변환: Type Casting). 그렇지 않으면 컴파일시 오류가 발생합니다.
- int형보다 작은 데이터타입의 연산을 진행할 경우 자동으로 int형으로 형 변환이 이루어집니다.

* 연산자(Operator)
- 연산자는 변수의 값을 변경하거나 대입하는데 사용됩니다.
- 0으로 나눌 경우는 오류가 발생합니다. 10/0 X, 0/10 O

 

* 단항 연산자(Unary Operator)
int a = 10; 항이 하나일 때 붙을 수 있는 연산자
- 단항 연산자는 피 연산자가 하나인 연산자를 말합니다.
- 단항 연산자의 종류
1. 변수의 앞이나 뒤에 붙어서 변수 값을 하나 증가시키거나, 감소시키는 증/감 연산자(++(나 자신을 플러스 하나 하겠다), 

--,  ex) a++ = 11, a-- = 9
2. 양수와 음수를 나타내는 부호 연산자(+(굳이 붙이지 않음), -)
3. 비트의 값을 바꿔주는 비트 반전 연산자(~)  1010~ → 0101(거의 안씀)
4. 논리대수의 값을 반전시켜주는 논리 반전 연산자(!) <부정의 의미-true, false 앞에 붙음>
!true = false, !false = true
5. 데이터 타입을 바꿔주는 캐스트연산자 ( (type) ) 

* 2항 연산자(Binary Operator)
- 2항 연산자는 피 연산자(Operand)가 두 개인 연산자를 의미합니다.
- 연산자가 int형(4byte)보다 작은 크기의 데이터 타입인 경우에 boolean형을 제외하고 모두 int형으로 자동 형 변환되어 연산을 수행합니다.
- 2항 연산자의 종류

1. 산술 연산자 ( +, -, *, /, % )
- 나머지 연산은 결과가 항상 정수입니다.
a + b 
a - b
a * b
a / b<몫을 구해줌>, a % b<나머지 구해줌> - 나누기

2. 비교 연산자 ( <-초과, <=-이상, >, >=, ==-같다, !=-부정, 같지 않으면 true, 같으면 false ) 
- 비교 연산자의 결과 값은 크기 값을 비교하여 조건을 만족하면 true 그렇지 않으면 false를 반환합니다.
- 만약 비교되는 숫자의 데이터 타입이 다를 경우 기본적으로 크기가 큰 데이터 타입에 맞추어 비교 연산을 실행합니다.

int a = 10;
int b = 5;


a < b false
a > b true
a == b false

** 3. 논리 연산자 ( &, |, &&, || ) 
a. & : 연산을 수행하여 양쪽 항이 모두 true일 때만 true를 반환합니다. (and)
b. | : 연산을 수행하여 양쪽 항 중 한쪽만 true를 만족해도 true를 반환합니다. (or 또는)
c. && : 만일 왼쪽 항이 false일 경우에는 오른쪽 항을 수행하지 않고 무조건 false를 반환합니다.
d. || : 만일 왼쪽 항이 true일 경우에는 오른쪽 항을 수행하지 않고 무조건 true를 반환합니다.
- &&, ||을 short circuit operator라고 부릅니다.

* 대입 연산자(Assignment Operator)
- 대입 연산자의 기본형은 '=' 이고, 추가로 발전된 형태의 대입 연산자들이 있습니다.
- +=, -=, *=, /=, %=  
int a = 1
a = a + 3
a+=3(나 자신을 3 증가 시킨다)
a = a - 3
a--=3

** 3항 연산자 (암기)
- 피 연산자가 3개인 연산자를 말합니다.
- ( 조건식 ? 연산식1 : 연산식2 )
: 조건식의 결과값이 참이면 연산식1, 거짓이면 연산식2를 실행하라.
- 조건식에는 boolean형 조건식이 들어갑니다.

 

* 계산순서
- 소괄호 > 단항 > 이항 > 삼항 >대입 <a++은 대입보다 늦음.>

 

* Scanner API 사용법
1. 스캐너 객체 생성
ex) Scanner scan = new Scanner(System.in);
2. 입력 받을 데이터 타입에 따른 메서드 호출.
ex) 문자-scan.next(), 공백 포함 문자-scan.nextLine(), 숫자(정수)-scan.nextInt(), 숫자(실수)-scan.nextDouble() 등
- next(): 공백을 포함하지 않는 문자열을 입력 받을 때
- nextLine(): 공백을 포함한 문자열을 입력 받을 때
- nextInt(): 정수를 입력 받을 때
- nextDouble(): 실수를 입력 받을 때
3. 스캐너 객체 종료.
ex) scan.close();

 

 

'TIL > Java' 카테고리의 다른 글

day6-java  (0) 2022.09.27
day5-java  (2) 2022.09.26
day4-java  (0) 2022.09.23
day3-java  (0) 2022.09.22
day 1-java  (0) 2022.09.20
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그