변수와 기본형 타입

이동주·2025년 3월 1일

JAVA

목록 보기
3/30

변수

값을 저장하는 메모리 번지에 붙여진 논리적인 명칭

변수의 형태 및 선언 방법

-> 타입 변수명 = 값; 의 구조 (값을 꼭 넣지 않아도 됨)
-> 변수 선언 : ex) int age;
-> 타입과 변수명을 선언하여 age라는 변수를 선언함
-> 변수 선언 및 초기화 : ex) int age = 10;
-> 타입과 변수명을 선언하고 age라는 변수에 10이라는 값을 넣음
-> 변수끼리의 연산을 진행할 때는 변수 안에 초기값을 넣어줘야함!
(안그러면 컴파일 에러)
-> 변수는 중복 선언이 불가능
-> 변수의 이름은 영문, 영문과 숫자, 언더바 등!
ex) age, score, score1, score1_1 등
-> 변수명에 첫 글자는 무조건 영문자가 되어야함

public class VariableUseExample {
	public static void main(String[] args) {
		int hour = 3; // hour 변수에 정수값 3 대입
		int minute = 5; // minute 변수에 정수값 5 대입
		System.out.println(hour + "시간 " + minute + "분");
		
		int totalMinute = (hour*60) + minute; // 시간 * 60 + 분
		System.out.println("총 " + totalMinute + "분");
	}
}

위의 코드에서
int hour = 3;
int minute = 5; 에 대해 설명하자면

hour, minute라는 이름의 변수명을 정수 타입(int)로 선언하고
변수 안에 각각 3과 5라는 값을 넣은 것!

변수의 사용 범위

-> 변수가 선언된 해당 중괄호 안에서만 사용 가능
-> 변수가 선언되거나 변수 값이 바뀐 변수를 해당 중괄호 밖에서는 사용불가능
-> 변수가 선언된 해당 중괄호가 중괄호 밖에 있을 경우 안에 있는 중괄호에서도 사용 가능

package ch02.sec11;

public class VariableScopeExample {
	public static void main(String[] args) {
		int v1 = 15;
		if(v1>10) {
			int v2 = v1 - 10;
			int v3 = v1 + v2 + 5;
		}
		// int v4 = v1 + v2 + 5; -> int v2가 if 중괄호문 안에 선언 되어있기 때문에 v3처럼 if 중괄호문 안에서만 사용 가능
	} 

}

타입과 기본형 타입

타입

값에 대한 종류

-> 값이 명확하게 지정됨에 따라 기본형 타입과 참조형 타입으로 나눔

기본형 타입

값이 명확하게 지정되는 타입

기본형 타입은 크게 3가지로 나뉨

  1. 정수형 타입 : byte, short, char(문자형 타입), int, long
  2. 실수형 타입 : float, double
  3. 논리형 타입 : boolean

정수형 타입

1. byte

-> 메모리 크기 : 1byte (8 bit)
-> 값의 허용 범위 : -128 ~ 127
-> 용량이 작아 용량을 생각해야 할 때 사용함

public class ByteExample {
	public static void main(String[] args) {
		byte var1 = -128;
		byte var2 = -30;
		byte var3 = 0;
		byte var4 = 30;
		byte var5 = 127;
		//byte var6 = 128; 
        //byte타입은 -128~127까지만 표현 가능.
		
		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var3);
		System.out.println(var4);
		System.out.println(var5);
	}
}

-> 위의 코드에서 var6의 값은 128로, byte 타입이 허용 가능한 값을 벗어났기 때문에 오류가 난다.

2. short

-> 메모리 크기 : 2byte (16 bit)
-> 값의 허용 범위 : -32,768 ~ 32,767 (-2^15 ~ 2^15-1)
-> 변수 값을 저장할 수 있는 최소 단위

3. char

-> 메모리 크기 : 2byte (16 bit)
-> 값의 허용 범위 : 0 ~ 65535(2^16-1)
-> 문자형 변수로 문자 하나씩만 입력 가능
-> 값을 입력할 때 작은 따옴표 (' ') 안에 값을 감싸기
-> 숫자를 입력하면 유니코드/ASCII코드에 저장되어 있는 해당 숫자의 문자를 출력함
-> 유니코드에 저장되어 있는 문자를 표출하는 것이기 때문에 음수는 사용되지 않음

public class charExample {
	public static void main(String[] args) {
		char c1 = 'D'; // char은 문자열 하나만 입력 가능
		char c2 = 68; // ASCII 코드 68 = D
		
		char c3 = '가';
		char c4 = 44032; // 유니코드 44032
		
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);
		
	}
}

ASCII 코드
-> 7 bit로 이루어짐
-> 문자에 번호를 부여한 형태임
-> ascii 코드표 : https://www.ascii-code.com/

4. int

-> 메모리 크기 : 4byte (32 bit)
-> 값의 허용 범위 : -2^31 ~ 2^31-1
-> 데이터를 가장 빠른 형태로 주고 받을 수 있기 때문에 정수형 타입중에 가장 많이 사용됨!

  1. 양과 음의 정수
    1) 양의 정수
    -> bit 단위로 쪼갰을 때 0000 0000 의 형태를 취함
    -> 최상위 bit의 경우 부호를 뜻하는데 양의 정수는 0임

    2) 음의 정수
    -> bit 단위로 쪼갰을 때 1000 0000의 형태를 취함
    -> 최상위 bit는 (부호 비트) : 1

  2. 2진수, 8진수, 16진수의 표기 방법

    1) 2진수
    -> 0,1만 취급함
    -> 0b0000; 형태를 취함
    -> 수 앞에 0b를 붙임

    2) 8진수
    -> 0~7까지의 수만 취급함
    -> 0200; 형태를 취함
    -> 수 앞에 0을 붙임

    3) 16진수
    -> 0~F까지의 수를 취급함 (A~F = 10~16)
    -> 0xFF; 형태를 취함
    -> 수 앞에 0x를 붙임

public class IntegerLiteralExample {
	public static void main(String[] args) {
		int var1 = 0b1011; // 2진수 1011 -> 10진수 11
		int var2 = 0206; // 8진수 206 -> 10진수 134
		int var3 = 365; // 365
		int var4 = 0xB3; // 16진수 B3 -> 179
		
		System.out.println("var1= " + var1);
		System.out.println("var2= " + var2);
		System.out.println("var3= " + var3);
		System.out.println("var4= " + var4);
	}

}

5. long

-> 메모리 크기 : 8byte (64 bit)
-> 값의 허용 범위 : -2^63 ~ 2^63-1
-> int 타입 값의 허용 범위 밖의 값을 입력할 경우 값 맨 마지막에
L 또는 l을 붙여주기!
(허용 범위 내에서는 상관 없음)
ex) long a = 100000000000000000000000000L;

public class exam03 {
	public static void main(String[] args) {
		long var1 = 10;
		long var2 = 20L;
		//long var3 = 100000000000; 
     //int 값의 범위 초과로 컴파일 에러
     
		long var4 = 10000000000L; 
     //int 값의 범위를 초과할 경우 끝에 l을 붙여주기
		
		System.out.println(var1);
		System.out.println(var2);
		System.out.println(var4);
	}
}

실수형 타입

1. float

-> 메모리 크기 : 4 byte(32 bit)
-> 유효한 소수점 자리 : 7자리
-> 성능이 double에 비해 3배 빠름
-> 하지만 double에 비해 정밀도가 떨어져 오차가 더 큰 편
-> 값 마지막에 f나 F를 붙여줘야함!
ex) float f = 123.4567f;

2. double

-> 메모리 크기 : 8 byte(64 bit)
-> 유효한 소수점 자리 : 15자리
-> 정밀도가 float에 비해 더 좋아서 오차가 덜함.(없지는 앖음)

public class floatDouble {
	public static void main(String[] args) {
		float var1 = 0.1234567890123456789f; 
        // float 타입의 값은 끝에 f 넣어주기
		double var2 = 0.123456789123456789; 
        // double 타입의 값은 f를 넣어도 안넣어도 상관 x
		System.out.println(var1);
		System.out.println(var2);
		
		double var3 = 3e6; // 3 x 10의 6승
		float var4 = 3e6f; 
		double var5 = 2e-3; // 2 x 10의 -3승
		System.out.println(var3);
		System.out.println(var4);
		System.out.println(var5);
		
	}
}

논리형 타입

boolean

-> 연산식이나 값을 비교하여 참과 거짓을 나타내는 타입
-> 참일 때는 true, 거짓일 때는 false를 도출함

public class BooleanExample {
	public static void main(String[] args) {
		boolean stop = true; // stop 변수에 true 값을 넣어주기 (boolean)
		if(stop) { //  true이면 중지
			System.out.println("중지합니다");
		}
		else { //  false면 시작
			System.out.println("시작합니다");
		}
		
		int x = 10; 
		boolean result1 = (x==20); //false
		boolean result2 = (x!=20); //true
		System.out.println("result1: " + result1);
		System.out.println("result2: " + result2);
	}
}
profile
끄작끄작

0개의 댓글