본문 바로가기

BackEnd/Java

[java] 이것이 자바다 ch2 변수와 타입

728x90
반응형

자바에 관련된 내용은 이전에 한 번 정리했지만 수업 진도를 따라서 다시 복습겸 정리해보겠습니다!

 

1. 변수 선언

 

◎ 변수란? 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름

   ▷ 자바는 하나의 변수에 다양한 타입(정수형, 실수형 등)의 값을 저장할 수 없습니다.

 

 

◎ 변수를 사용하려면 변수 선언이 필요합니다. 어떤 타입의 데이터를 저장할지, 변수 이름이 무엇인지 결정하는 것

   ▷ 변수에 최초로 값이 대입될 때 메모리에 할당되고 해당 메모리 값이 저장됩니다.

 

NO 타입 이름 설명
1 int age; 정수 값을 저장하는 변수 선언
2 double value; 실수 값을 저장하는 변수 선언

 

 

◎ 정수형 변수 종류

   ▷ 변수 선언시 타입에 따라 저장할 수 있는 값의 종류와 허용 범위가 달라집니다.

   ▷ 정수 타입은 5개로 메모리 할당 크기와 저장되는 값의 범위가 다릅니다.

 

NO 타입 메모리 크기 저장되는 값의 허용 범위 특징
1 byte 1byte 8bit
-128 ~ 127  
2 short 2byte 16bit
 
3 char 2byte 16bit
문자하나만 사용하지만 정수형이라고도 할 수 있음
4 int 4byte 32bit
 
5 long 8byte 32bit
 

* 1byte = 8bit, bit는 0과 1이 저장되는 단위

 

 

◎ 예시로 표현법 알아보기

public class IntergerLiteralExample {

	public static void main(String[] args) {
		int var1 = 0b1011; //0b   2진수     1011  =  11  (1*8 + 1*2 + 1*1)
		int var2 = 0206;   //0    8진수     206   =  134 (010 000 110)
		int var3 = 365;    //     10진수   365   =  365
		int var4 = 0xB3;   //0x   16진수   B3    =  179 (1011 0011)  
		
		System.out.println("var1: " + var1);
		System.out.println("var2: " + var2);
		System.out.println("var3: " + var3);
		System.out.println("var4: " + var4);
	}
}

// 출력
// var1: 11
// var2: 134
// var3: 365
// var4: 179

 

public class ByteExample {

	public static void main(String[] args) {
		// Byte 크기 : 1byte = 8bit : 0~255  =  -128 ~ 127
		byte var1 = -128;
		byte var2 = -30;
		byte var3 = 0;
		byte var4 = 30;
		byte var5 = 127;
//		byte var6 = 128;
		
		System.out.println("var1: " + var1);
		System.out.println("var2: " + var2);
		System.out.println("var3: " + var3);
		System.out.println("var4: " + var4);
		System.out.println("var5: " + var4);
	}
}

// 출력
// var1: -128
// var2: -30
// var3: 0
// var4: 30
// var5: 30
// var6는 범위를 벗어나서 대입이 되지 않습니다.

 

public class longExample {

	public static void main(String[] args) {
		// int : 4byte : -21억 ~ +21억
		long var1 = 10;               // int 10
		long var2 = 20L;              // L : long 타입 입력
//		long var3 = 100,000,000,000;  // int 1000억 
		long var4 = 100000000000L;    // long 1000억
	}
}

// long을 사용해도 숫자 뒤에 L을 따로 붙이지 않으면 정수로 인식하기 때문에 꼭 붙여야합니다.

 

   ▷ 메모리 크기를 n이라고 했을 때 정수 타입은 동일한 구조의 2진수로 저장됩니다.

 

 

◎ 문자 리터럴과 char 타입

   ▷ 리터럴 : 데이터의 값을 의미합니다.

   ▷ 문자 리터럴 : 하나의 문자를 작은 따옴표(')로 감싼 것

   ▷ 문자 리터럴을 유니코드로 저장할 수 있도록 char 타입 제공

 

char var1 = 'A';       // 유니코드 숫자 : 65로 대입
char var3 = '가';      // 유니코드 숫자 : 44032로 대입

char c = 65;            // 10진수 65와 매핑되는 문자 : 'A'
char c = 0x0041;     // 16진수 0x0041와 매핑되는 문자 : 'A'


◎ 예시로 표현법 알아보기
public class CharExample {

	public static void main(String[] args) {
		char c1 = 'A';    // 문자리터럴 대입
		char c2 = 65;     // 유니코드 대입  //영문자의 경우(ASCII)코드 입력
		
		char c3 = '가';    // 문자리터럴 대입
		char c4 = 44032;   // 유니코드 대입
		
		System.out.println(c1);
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);
	}
}

// 무조건 양수이기 때문에 -가 붙으면 안됩니다.
// 큰 따옴표를 사용해도 안되고 문자열도 작성하면 안됩니다.​

 

16진수는 4글자를 각각 4bit로 나타냅니다.

16진수의 0041 => 0000 0000 0100 0001 => 10진수의 65가 됩니다.

 

2진수 : 1bit (0, 1)
8진수 : 3bit (000, 001, 010, 011, 100, 101, 110, 111)
16진수 : 4bit (0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111)
   ▷ 16진수에서 10이상의 수는 10(A), 11(B), 12(C), 13(D), 14(E), 15(F)과 같이 나타납니다.

 

 

◎ 실수형 변수 종류

   ▷ double 타입이 float 타입보다 큰 실수를 저장할 수 있고 정밀도도 높습니다.

 

NO 타입 메모리 크기 저장되는 값의 허용 범위(양수 기준) 유효 소수 이하 자리
1 float 4 byte 32 bit
7자리
2 double 8 byte 64 bit
15자리

 

 

◎ 예시로 표현법 알아보기

public class FloatDoubleExample {

	public static void main(String[] args) {
		// 정밀도 확인
		float var1 = 0.1234567890123456789f;  // 숫자 뒤  F : float형
		double var2 = 0.1234567890123456789;  // double
		System.out.println("var1 : " + var1);
		System.out.println("var2 : " + var2);

		// 10의 거듭제곱 리터럴
		double var3 = 3e6;   // e6 : 10^6
		float var4 = 3e6F;   // e6 : 10^6
		double var5 = 2e-3;  // e-3 : 10^(-3)
		System.out.println("var3 : " + var3);
		System.out.println("var4 : " + var4);
		System.out.println("var5 : " + var5);
	}
}

// 출력
// var1 : 0.12345679
// var2 : 0.12345678901234568
// var3 : 3000000.0
// var4 : 3000000.0
// var5 : 0.002

 

 

◎ boolean 타입 변수

   ▷ 참(true)과 거짓(false)로 구성됩니다.

   ▷ 주로 두 가지 상태 값을 저장하는 경우에 사용, 조건문과 제어문의 실행 흐름을 변경하는데 사용됩니다.

 

 

◎ 예시로 표현법 알아보기

public class BooleanExample {
	public static void main(String[] args) {

		boolean stop = true;
		if(stop) {  // stop이 true라면 조건문을 실행합니다.
			System.out.println("중지합니다.");
		} else {
			System.out.println("시작합니다.");
		}
		
		int x = 10;
		boolean result1 = (x == 20);
		boolean result2 = (x != 20);
		
		System.out.println("result1 : " + result1);
		System.out.println("result2 : " + result2);
	}
}

 

 

◎ 문자열과 String 타입

   ▷ 문자열 : 큰따옴표("")로 감싼 문자들

   ▷ 문자열을 변수에 저장하려면 String 타입을 사용

 

String var1 = "A";
String var2 = "홍길동";

 

 

이스케이프 문자 : 문자열 내부에 역슬래쉬(\)가 붙은 문자

NO 이스케이프 문자 기능
1 \" " 문자 포함
2 \' ' 문자 포함
3 \\ \ 문자 포함
4 \u 16진수 16진수 유니코드에 해당하는 문자 포함
5 \t 출력시 탭만큼 띄움
6 \n 출력시 줄바꿈(라인피드)
7 \r 출력시 캐리지 리턴

 

 

◎ 예시로 표현법 알아보기

public class StringExample {

	public static void main(String[] args) {
		String name = "홍길동";
		String job = "프로그래머";
		System.out.println(name);
		System.out.println(job);
        
		String str = "나는 \"자바\"를 배웁니다.";
		System.out.println(str);
            //역슬래쉬(\)가 없으면 오류가 뜹니다.

		
		str = "번호\t이름\t직업";
		System.out.println(str);
		
		System.out.print("나는\n");
		System.out.print("자바를\n");
		System.out.print("배웁니다.");
        
        // \r : 캐리지 리턴 CR : 커서의 위치를 현재 줄의 맨 앞으로 이동
		
		str = "abcde\nfghi";
		System.out.print(str);
		
		System.out.print("\n");
		String str1 = "       abcd";
		String str2 = "       \rabcd";
		System.out.print(str1);
		System.out.print(str2);
	}
}

// 출력 : 
// 홍길동
// 프로그래머
// 나는 "자바"를 배웁니다.
// 번호	이름	직업
// 나는
// 자바를
// 배웁니다.abcde
// fghi
//         abcd       
// abcd


/r은 크롤링 등의 역할을 합니다. 자동 줄바꿈의 역할도 합니다.

 

자바의 변수에 대해서 다시 정리해 보았습니다!

 

한번 더 복습하니 더 이해하기 쉽네요!!

 

많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

 

728x90
반응형