CH 2) 변수의 타입

sim·2023년 1월 10일

자바의 정석

목록 보기
4/20

➰ 변수

1. 변수의 타입

1) 변수의 타입은 저장할 값의 타입에 의해 결정된다.
2) 저장할 값의 타입과 일치하는 타입으로 변수를 선언

char ch = '가'; //char는 문자타입
double pi = 3.14; //double은 실수 타입

2. 값의 타입 (기본형 8개 타입)

1) 문자 char
2) 숫자
-정수(byte, short, int, long) : int가 20억이 넘을 땐 long / byte의 범위 : -128~127
-실수(float, double) : float는 오차없이 7자리, double은 15자리
3) 논리 boolean (true, false)

3. 변수, 상수, 리터럴

  • 변수(variable) : 하나의 값을 저장 --> 변경가능
  • 상수(constant) : 한 번만 값을 저장 가능한 변수 (다른 값으로 변경불가/ 앞에 final 붙이기/ 상수의 이름은 대문자로)
  • 리터럴(literal) : 그 자체로 값을 의미하는 것(기존의 상수)
int score = 100; //변수
score = 200;
final int MAX = 100; //MAX는 상수. 상수에 저장된 값은 변경불가.
          MAX = 200; --> 에러

4. 리터럴의 타입과 접미사

  • 논리형 : false, true
  • 문자형 : 'a' '1' '\n'
  • 문자열 : "ABC" "123" "A" "true"
  • 정수형 : 123, 0b0101(2진수), 077(8진수), 0xFF(16진수), 100L(long타입)

** 10진수 외>> 16진수 - 리터럴 앞에 접두사 '0x' / 8진수 - 접두사 '0' / 2진수 - 접두사 '0b'
** 정수형 리터럴에 구분자'_' 삽입 가능>> long l = 10_000_000_000L; 100억은 접미사 L 생략불가 *
** 실수형 : 3.14, 3.0e8, 1.4f, 0x1.0p-1 ==> 접미사 f(float/생략불가), d(double/생략가능)

5. 변수/값

1) 기본형(primitive type) : 8개 (boolean, char, byte, short, int, long, float, double)/ 실제 값을 저장
2) 참조형(reference type) : 기본형 제외한 나머지(String, System 등) / 메모리 주소를 저장(4byte or 8byte)

<논리형(boolean)> true/ false, 조건식과 논리적 계산에 사용
<문자형(char)> 문자 저장, 변수 당 하나의 문자만 저장 가능
<정수형(int, long, byte, short)> 정수 값 저장/ int, long 주로 사용, byte는 이전 데이터 다루는데 사용, short는 c언어와의 호환
<실수형(float, double)> 실수 값 저장/ float는 부동소수점, double은 float보다 두배의 크기(8byte)

6. 변수와 리터럴의 타입 불일치

1) 범위가 '변수 > 리터럴'인 경우 OK
ex) int i = 'A'; // int> char
long l = 123; // long > int
double d = 3.14f; // double > float

2) 범위가 '변수 < 리터럴'인 경우, 에러
ex) int i = 300000_0000; // int의 범위(+_20억) 벗어남
long l = 3.14f ; // long < float

float f = 3.14 ; // float < double_

3) byte, short 변수에 int 리터럴 저장가능 (단, 변수의 타입의 범위 이내여야함)
ex) byte b = 100; //OK (byte의 범위 -128~127)
byte b = 128; //에러

7. 문자와 문자열

  • 문자리터럴 : 'a'문자하나!
  • 문자열 리터럴 : 두 문자 이상! "ABC" ""(빈문자열 가능)/ 문자열 결합도 가능

* 문자열 결합

7+" "; //"7 "
" "+7; //" 7"
7+"7"; // "77"
7+7+""; //"14"
""+7+7; //"77"

8. 두 변수의 값 교환하기

int x = 10;
int y = 20; 

//빈 저장공간 변수 tmp
int tmp;
tmp = x; //x의 값을 tmp에 저장 
x= y; //y의 값을 x에 저장
y= tmp; // tmp의 값을 y에 저장

➰ 오버플로우

9. 정수형의 오버플로우(overflow)

: 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것.

  • 정수형 타입이 표현할 수 있는 최대값에 1을 더하면 최소값이 되고, 최소값에서 1을 빼면 최대값이 된다.

    최대값 + 1 => 최소값
    최소값 - 1 => 최대값

10. 부호있는 정수의 오버플로우

: 부호없는 정수는 2진수로 '0000'이 될 때 오버플로우 발생
부호있는 정수는 부호비트가 0에서 1이 될 때 오버플로우 발생 (1111(최대값) -> 0000(최소값))

ex. 부호없는 정수(4bit) : 0~15
부호있는 정수(4bit) : -8~7

➰ 타입 변환

11. 타입 간의 변환방법

  1. 숫자를 문자로 변환 - 숫자에 '0'을 더함

    3+'0' --> '3'

  2. 문자를 숫자로 - 문자에서 '0'을 뺌

    '3' - '0' --> 3

  3. 숫자를 문자열로 변환 - 숫자에 빈 문자열 ""을 더함

    3 + "" --> "3"

  4. 문자를 문자열로 변환 - 빈 문자열 ""을 더함

    '3'+ "" --> "3"

  5. 문자열을 숫자로 변환 - Integer.parseInt() 또는 Double.parseDouble() 사용

    Integer.parseInt("3") --> 3
    Double.parseDouble("3.14") --> 3.14

  6. 문자열을 문자로 변환 - charAt(0)을 사용

    "3".charAt(0) --> '3'

profile
sim

0개의 댓글