혜야의 코딩스토리
변수 본문
변수란? 하나의 값을 저장할 수 있는 저장공간
[변수의 타입]
분류 | 변수의 타입 | 설명 |
숫자 | int | 정수를 저장하기 위한 타입(20억이 넘을 땐 long) |
long | ||
float | 실수를 저장하기 위한 타입 (float는 오차 없이 7자리, double는 15자리) |
|
double | ||
문자 | char | 문자를 저장하기 위한 타입 |
String | 여러 문자를 저장하기 위한 타입 |
변수 : 하나의 값을 저장하기 위한 공간
상수 : 값을 한번만 저장할 수 있는 공간
리터럴 : 그 자체로 값을 의미하는 것 (변경x)
[리터럴의 타입과 접미사]
-논리형 : false, true // 접미사x
-정수형 : 123, 0b0101, 077(8진수), 0xFF(10진수), 100L // 접미사 L
-실수형 : 3.14, 3.0e8, 1.4f, 0x1.0p-1 // 접미사 f,d
-문자형 : ‘A’, ‘1’, ‘|n’ // 접미사 x
-문자열 : “ABC”, “123”, “A”, “true” // 접미사x
[문자열 결합]
문자열 + any type -> 문자열 + 문자열 -> 문자열
any type + 문자열 -> 문자열 + 문자열 -> 문자열
[두 변수의 값 바꾸기]
int tmp; // 임시로 값을 저장하기 위한 변수(빈 컵 역할)
[기본형의 종류와 범위]
1byte | 2byte | 4byte | 8byte | |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
- boolean은 true와 false 두 가지 값만 표현할 수 있으면 되므로 가장 작은 크기인 1byte.
- char은 자바에서 유니코드(2byte문자체계)를 사용하므로 2byte.
- byte는 크기가 1byte라서 byte.
- int(4byte)를 기준으로 짧아서 short(2byte), 길어서 long(8byte).
- float는 실수 값을 부동소수점(floating-point)방식으로 저장하기 때문에 float.
- double은 float보다 두 배의 크기(8byte)를 갖기 때문에 double.
[기본형 표현범위]
1byte=8bit
-n비트로 표현할 수 있는 값의 개수 : 2^n개
-n비트로 표현할 수 있는 부호 없는 정수의 범위 : 0~2^n-1
-n비트로 표현할 수 있는 부호 있는 정수의 범위 : (-2^n-1) ~ (2^n-1) -1
[실수형float, double의 정밀도==오차 없는 자리 수]
float : 7자리 | double : 15자리 |
[println()의 단점 : 출력형식 지정불가]
1. 실수의 자리 수 조절불가 –> 소수점 n자리만 출력하려면?
System.out.println(10.0/3); // 3.333333333333….
2. 10진수로만 출력된다. -> 8진수, 16진수로 출력하려면?
System.out.println(0x1A); // 26(10진수)
↓
[printf( )로 출력형식 지정가능]
System.out.println( “%2.f” , 10.0/3 ); // 3.33
-> 지시자 %.f, 실수를 소수점 둘째자리까지 출력
System.out.println( “%d” , 0x1A ); // 26
-> 지시자 %d, 정수를 10진수로 출력
System.out.println( “%x” , 0x1A ); // 1A
-> 지시자 %x, 정수를 16진수로 출력
[prinf( )의 지시자]
%n : 줄바꿈 지시자
System.out.printf (“age : %d year : %d%n , 14, 2017);
// “age : 14 year : 2017%n”이 화면에 출력된다.
System.out.printf(“[%5d]%n”, 10); // [□□□10]
-> 5자리 정수 출력 / 7자리 수를 넣으면 7자리 다 출력됨(참고하기)
System.out.printf(“[%-5d]%n”, 10); // [10□□□]
-> 5자리 정수 왼쪽 정렬하여 출력
System.out.printf(“[%05d]%n”, 10); // [00010]
-> 5자리 정수 빈칸엔 0대입하여 출력
double d = 1.23456789;
System.out.printf(“%14.10n”, d); // □□1.2345678900
-> 전체 14자리 중 소수점 아래 10자리 출력
System.out.printf("[%s]%n","www.codechobo.com");
-> 문자열 출력 // [www.codechobo.com]
System.out.printf("[%20s]%n","www.codechobo.com");
-> 문자열 출력 자리를 20으로 설정 후 출력 // [ www.codechobo.com]
System.out.printf("[%-20s]%n","www.codechobo.com");
-> 왼쪽 정렬 // [www.codechobob.com ]
System.out.printf("[%.8s]","www.codechobo.com");
-> 앞에서부터 8자리만 출력 // [www.code]
[화면으로부터 입력받기]
1. import java.util.Scanner; // Scanner클래스를 사용하기 위해 import문 추가 (ctrl+shift+o)
2. Scanner scanner = new Scanner(System.in); // Scanner클래스의 객체를 생성
3.int num = scanner.nextInt( ); // 정수를 입력 받아서 변수num에 저장
[정수형의 오버플로우]
오버플로우 : 연산과정에서 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것
최대값 + 1 -> 최소값
최소값 – 1 -> 최대값
- n비트로 표현할 수 있는 값의 개수 : 2^n개
- n비트로 표현할 수 있는 부호 없는 정수의 범위 : 0~2^n-1
- n비트로 표현할 수 있는 부호 있는 정수의 범위 : (-2^n-1) ~ (2^n-1) -1
[타입 간의 변환방법]
- 숫자를 문자로 변환 – 숫자에 ‘0’을 더한다.
(char)(3 + ‘0’) -> ‘3’
- 문자를 숫자로 변환 – 문자에서 ‘0’을 뺀다.
‘3’ - ‘0’ -> 3
- 숫자를 문자열로 변환 – 숫자에 빈 문자열(“”)을 더한다.
3+ “” -> “3”
- 문자열을 숫자로 변환 – Integer.parseInt( ) 또는 Double.parseDouble( )을 사용한다.
Integer.parseInt(“3”) -> 3
Double.parseDouble(“3.14”) -> 3.14
- 문자열을 문자로 변환 – charAt(0)을 사용한다.
“3”.charAt(0) -> ‘3’
- 문자를 문자열로 변환 – 빈 문자열(“”)을 더한다.
‘3’ + “” -> “3”
'꿈 : 멋진 개발자 🧸 > 자바의 정석' 카테고리의 다른 글
객체지향 프로그래밍 I (0) | 2022.05.02 |
---|---|
Method 메서드 (0) | 2022.04.29 |
배열 (0) | 2022.04.29 |
연산자 (0) | 2022.04.28 |
조건문과 반복문 (=제어문) (0) | 2022.04.28 |