[자바의 정석 기초편] 변수

JEREGIM·2023년 1월 6일
0

📌변수의 타입

변수는 하나의 값을 저장하기 위한 메모리 공간

1. 변수의 타입은 저장할 값의 타입에 의해 결정된다.

int age = 25; //일치
int age = 3.14; //불일치

int는 정수타입이고 25는 정수기 때문에 일치, 3.14는 실수기 때문에 불일치

2. 저장할 값의 타입과 일치하는 타입으로 변수를 선언한다.

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

📌값의 타입

8개의 기본형 값의 타입

  • 문자 : char
  • 숫자
    - 정수 : byte, short, int, long
    - 실수 : float, double
  • 논리 : boolean(true, false)

📌변수, 상수, 리터럴

- 변수(variable) : 하나의 값을 저장하기 위한 공간(변경 가능)
- 상수(constant) : 한 번만 값을 저장 가능한 변수(변경 불가)
- 리터럴(literal) : 그 자체로 값을 의미하는 것(기존의 우리가 알고 있는 상수의 개념)

final int MAX = 100; //MAX는 상수
		  MAX = 200; //에러

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

1. 범위가 '변수 > 리터럴' 인 경우는 가능

int i = 'A'; //int > char, i에는 A의 문자코드인 65가 저장됨
long l = 123; //long > int
double d = 3.14f; //double > float

2. 범위가 '변수 < 리터럴' 인 경우는 에러

int i = 30_0000_0000; //30억은 int의 범위인 -20억 ~ +20억에 벗어남
ling l = 3.14f; // long < float
float f = 3.14; // float < double

📌문자와 문자열

char ch = 'A';
String s = "ABC"; // 문자열
String s = ""; // 빈 문자열(empty string)
char ch = ''; // 에러

숫자를 문자열로 바꾸는 방법

"" + 7 + 7 -> "7" + 7 -> "7" + "7" -> "77"
7 + 7 + "" -> 14 + "" -> "14" + "" -> "14"

문자열 + any type -> 문자열
any type + 문자열 -> 문자열


📌두 변수의 값 교환

int x = 10, y = 20;
int tmp; 

tmp = x; // x의 값을 tmp에 저장
x = y; // y의 값을 x에 저장
y = tmp; // tmp의 값을 y에 저장

📌기본형과 참조형

기본형(Primitive type)

  • 8개(boolean, char, byte, short, int, long, float, double)
  • 실제 값을 저장

참조형(Reference type)

  • 기본형을 제외한 나머지(String, System 등)
  • 메모리 주소를 저장(4byte 또는 8byte)

기본형(Primitive type)의 종류와 크기

종류/크기(byte)1248
논리형boolean
문자형char
정수형byteshortintlong
실수형floatdouble

기본형(Primitive type)의 표현 범위

  • n비트로 표현할 수 있는 값의 개수 : 2n2^n
  • n비트로 표현할 수 있는 부호 없는 정수의 범위 : 0 ~ 2n12^n-1
  • n비트로 표현할 수 있는 부호 있는 정수의 범위 : 2n1-2^{n-1} ~ 2n112^{n-1}-1

예시) 1byte의 범위

1byte = 8bit, n = 8
부호 있는 정수의 범위 : 27-2^{7} ~ 2712^{7}-1 = 128-128 ~ 127127
부호 없는 정수의 범위 : 0 ~ 2812^8-1 = 00 ~ 255255


📌println()의 단점

출력 형식 지정 불가

  • 실수의 자리수 조절 불가
  • 10진수로만 출력됨

📌printf()의 지시자

지시자설명
%b불리언(boolean) 형식으로 출력
%d10진(decimal) 정수의 형식으로 출력
%o8진(octal) 정수의 형식으로 출력
%x16진(hexa-decimal) 정수의 형식으로 출력
%f부동 소수점(floating-point) 의 형식으로 출력
%e지수(exponent) 표현식의 형식으로 출력
%c문자(character) 로 출력
%s문자열(string) 로 출력
%n개행(줄바꿈) 문자

정수를 2진수로 출력하는 법

System.out.printf("%s", Interger.toBinaryString(15)); 

"1111" 2진수 문자열로 표기됨

8진수와 16진수에 접두사 붙이기

System.out.printf("%#o", 15); // 017
System.out.printf("%#x", 15); // 0xf

📌타입 간의 변환 방법

1. 문자와 숫자 간의 변환

3 + '0' -> '3'
'3' - '0' -> 3

2. 문자열로의 변환

3 + ""(빈 문자열) -> "3"
'3' + "" -> "3"

3. 문자열을 숫자로 변환

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

4. 문자열을 문자로 변환

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

0개의 댓글