자바 프로그래밍 (변수, 형변환)

최주영·2023년 3월 8일
0

자바

목록 보기
2/30
post-thumbnail

변수

메모리(RAM)에 값을 기록하기 위한 공간

변수사용 목적
✅ 가독성이 좋아짐
✅ 재사용성 증가로 코드량 감소
✅ 유지보수 용이

변수의 선언 : 메모리 공간에 데이터를 저장할 수 있는 공간을 할당하는 것
사용방법 : 자료형 변수명;
선언 예시 : int inum;



자료형


데이터 저장단위
비트 (bit) : 컴퓨터가 나타내는 최소 단위 = 2진수 값 (0 or 1)
바이트 (byte) : 데이터 처리 또는 문자의 최소 단위로 8개 비트가 모여 하나의 바이트가 됨


자료형 저장 가능 범위

자료형범위크기(bit)기본값
booleantrue, false8false
char0~65,535(유니코드문자)16'\u0000'
byte-128 ~ 12780
short-32,768 ~ 32,767160
int-2,147,483,648 ~ 2,147,483,647320
long-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807640L
float±1.4E-45 ~ 3.4E38320.0f
double±4.9E-324 ~ 1.8E308640.0 또는 0.0d

변수 명명 규칙

✅ 대소문자가 구분되며 길이 제한이 없다.

✅ 예약어를 사용 하면 안됨

ex) true, false

✅ 숫자로 시작하면 안됨

ex) age1 [O]
    1age [X]

✅ 특수문자는 _$ 만 사용 가능


리터럴

변수에 대입되는 값 자체를 의미함
변수와 값 양쪽 둘다 타입이 같아야함!

long I = 100000L; (양쪽이 타입이 같아야해서 마지막에 L붙임)
float f = 0.123f; (양쪽이 타입이 같아야해서 마지막에 f붙임
double d = 3.14; (소수점 뒤에 안붙이면 디폴트 값이 double 형임)
char c = 'A';
String str = "A";


상수

한 번만 저장할 수 있는 메모리
  • final 자료형 변수이름;
    ex) final int NUM = 100;
    단! 초기화 이후 다른 데이터 값을 변경 ❌

오버플로우

 밑에 사진에서 설명한 자료형의 범위를 초과한 경우를 오버플로우라고 한다.


📌 byte의 자료형이 127까지만 출력되기 때문에 그 이후부터는 거꾸로 출력되는 것을 볼 수 있다!


형변환

값의 자료형의 바꾸는 것! (boolean 제외)
  
형변환의 (자동형변환, 강제 형변환) 으로 나뉨 

자동 형변환 : 컴파일러가 자동으로 값의 범위가 작은 자료형을 값의 범위가 범위가 큰 자료형으로 변환

// 예시
int a = 12;
double d = 3.3;
double result = a + d;  // 정수형 12가 12.0으로 변환 (자동현변환)
// 12.0 + 3.3 = 15.3

강제 형변환 : 값의 범위가 큰 자료형을 값의 범위가 작은 자료형으로 변환 (데이터 손실 발생할 수 있음)

double tmp;
int name= (int)tmp; // double이였던 tmp가 int로 강제 형변환 시킴

변수와 메모리 구조

RAM 구조하는 일
Staticstatic예약어로 선정된 필드, 메소드가 저장되는 공간 클래스 변수
Heapnew연산자에 의해 동적으로 할당하고 저장되는 공간, 객체 , 배열
Stack메소드를 호출하면 자동생성 메소드가 끝나면 자동소멸 지역변수, 매개변수, 메소드 호출 스택

출력 메소드
정렬 방법
ex) - %5d : 5칸을 확보하고 오른쪽 정렬
     - %-5d : 5칸을 확보하고 왼쪽 정렬
     - %.2f : 소수점 아래 2자리까지만 표시


escape 문자

특수문자문자리터럴비고
tab\t정해진 공간만큼 띄어쓰기
new line\n출력하고 다음라인으로 옮김
역슬래쉬\\특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함
작은 따옴표\'특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함
큰 따옴표\"특수문자 사용시 백슬러시(\) 넣고 특수문자를 넣어야함
유니코드\u유니코드 표시할 때 사용

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글