자바에 관련된 내용은 이전에 한 번 정리했지만 수업 진도를 따라서 다시 복습겸 정리해보겠습니다!
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은 크롤링 등의 역할을 합니다. 자동 줄바꿈의 역할도 합니다.
자바의 변수에 대해서 다시 정리해 보았습니다!
한번 더 복습하니 더 이해하기 쉽네요!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > Java' 카테고리의 다른 글
[java] 이것이 자바다 ch2 변수 확인 문제 풀이 (0) | 2023.01.05 |
---|---|
[java] 이것이 자바다 ch2 자동 타입 변환 및 변수 범위 (0) | 2023.01.05 |
[java] 자바의 정석 ch6 연습문제 풀이 (0) | 2022.12.20 |
[java] 자바의 정석 ch5 연습문제 풀이 (0) | 2022.12.19 |
[java] 자바의 정석 ch4 연습문제 풀이 (0) | 2022.12.19 |