Practice JAVA - 변수

최정환·2022년 12월 6일
0

Practice JAVA

목록 보기
3/10

JAVA에서 변수

변수는 값을 저장할 수 있는 메모리의 특정 주소에 붙이는 이름이다.

자바의 변수는 다양한 타입의 값을 저장할 수 없다.
정수타입 변수에는 정수값만 저장, 실수 타입 변수에는 실수값만 저장 할 수 있다.

변수 선언

값을 아직 가지지 않고 변수를 선언

int age;
double value;

int x,y,z

변수가 값을 가지고 있게 초기화

int score;
score = 90;

변수가 초기화되면 메모리 주소 정보를 갖게 되고 해당 메모리 주소에 값이 저장된다.

ex)

public class variable {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a;

        int sum = a + b;
        
      String printResultAB = String.format("a+b is %d", sum);
      String printResultAC = String.format("a+c is %d", a+c);
      System.out.println(printResultAB); // a+b is 30
      System.out.println(printResultAC); // a+c is 20
    }
}

타입

변수를 선언할 때 타입을 같이 선언해야한다.

구분분류종류
정수 타입byte, char, short, int, long
기본 타입실수 타입float, double
논리 타입boolean

정수 타입

type메모리 사용 크기허용 크기
byte1byte, 8bit-128 ~ 127
short2byte, 16bit-2^15 ~ 2^15-1
char2byte, 16bit0 ~ 65535(유니코드)
int4byte, 32bit-2^31 ~ 2^31-1
long8byte, 64bit-2^63 ~ 2^63-1

만약 타입에서 메모리 허용 크기를 벗어난다면 컴파일 에러가 발생한다.

ex)

int a = 130 // compile error
int a = 123 // good

정수 리터럴을 사용해서 2진수,8진수,10진수 같은 수도 인식이 가능하다.

// 2진수 0b or 0B 시작
0b1011 => 11
0B0011 => 3

// 8진수 0 시작
013 => 11
0206 => 134

// 10 진수
123 => 123

// 16진수 0x or 0X 시작
0xB3 => 179

그 외 실수, 논리 타입이 존재한다.

타입 변환

두 변수의 타입이 동일할 경우 한쪽 변수값을 다른 쪽 변수에 복사해서 저장할 수 있다.
만약 두 변수의 타입이 다르다면 어떻게 될까

byte a =10; 
int b = a; // byte 타입 변수 a에 저장된 값을 b에 복사 저장

자동 타입 변환

자동으로 타입 변환이 일어나는 것이다.
작은 허용 범위(byte) => 큰 허용 범위(int) 만 허용된다.

char 같은 경우 int 로 변환시 유니코드 값으로 변경된다.

char a = "A"
int b = a // 65

강제 타입 변환

자동 타입 변환가 다르게 강제로 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장하는 것

캐스팅 연상자 괄호()를 사용해 안에 들어가는 타입을 나누는 단위로 사용한다.

int intValue = 10;
byte byteValue = (byte) intValue; // 10

double doubleValue = 3.14;
int intValue = (int) doubleValue; // 3

연산에서의 자동 타입 변환

정수

정수 타입 변수가 산술 연산에서 피연산자로 사용되면 int 보다 작은 byte, short는 int로 변환되어 연산을 수행한다.

자동으로 변환되기 때문의 연산의 결과값의 변수는 int여야 한다.

실수

실수도 마찬가지다.

피연산자 중 하나가 double 이라면 다른 피연산자도 double 타입으로 자동 변환되어 연산을 수행한다.

따라서 연산 결과는 double 이어야한다.

0개의 댓글