변수 사용범위
{ 변수가 선언된 { }(중괄호) 안에서만 사용가능 } - 범위 확인 중요
public class Name {
Public static void main(String[ ] args) {
}
}
변수, 데이터 타입
정수형
bit : 0 또는 1 저장, 8bit = 1byte -> 1,024byte = 1kbyte
정수의 2진수 표현 방법은 "부호와 2의 보수" 표현방법을 사용
10진수뿐만 아니라 2진수, 8진수, 16진수 등의 형태도 표현 가능 (0b, 0, 0x 붙이면 됨)
2진수 - 0b
8진수 - 0
16진수 - 0x
- byte (1) : -128 ~ 127 = -2^7 ~ 2^7 -1,
byte의 일곱자리 중에 맨 앞자리가 0이면 +, 1이면 -를 나타냄 (추가 내용 필요) - short (2)
- int (4) : -2^31 ~ 2^31 -1 = 21억
- long (8) : 숫자L
실수형
실수는 연산이 일어날 때 오차 발생 가능
실수는 상황에 따라서 칸을 나눠서 사용
- float (4) : 숫자F, 32칸, 소수부 7자리까지
- double (8) : 숫자(d), 64칸, 소수부 15자리까지
e-2 왼쪽으로 두 칸 가라 / e2 오른쪽으로 두 칸 가라
논리형
다른 데이터 타입과 형변환 불가능
- boolean(1bit) : true = 1, false = 0
문자형
홑 따옴표 (' ')안에 넣어야 함
문자형은 정수나 실수형과 다르게 부호표기를 하지 않기 때문에 2^16까지 사용가능
= 16비트(2byte) 숫자를 사용하여 유니코드 문자를 표현
- char(2)
문자열 형 (가변형)
겹 따옴표(" ")안에 넣어야 함
공백도 문자로 인식됨
문자열과 다른 타입의 연산(+) => 통째로 문자열 ( but, 'A' + 10 = 75 처럼 문자+숫자 = 숫자 )
문자열의 길이 확인 : lenght() => System.out.println( name. lenght() ) ;
- String
아스키 코드 | 유니코드 (UTF-8) |
1byte | 1byte |
8bit | 8*2 = 16bit |
1^8 = 8 | 2^16 = 65536 |
가 - 44032 - \uAC00
Char | Hex | Oct | Dec | Char | Hex | Oct | Dec | Char | Hex | Oct | Dec | Char | Hex | Oct | Dec | |||
Ctrl-@ NUL |
00 | 000 | 0 | Space | 20 | 040 | 32 | @ | 40 | 100 | 64 | ` | 60 | 140 | 96 | |||
Ctrl-A SOH | 01 | 001 | 1 | ! | 21 | 041 | 33 | A | 41 | 101 | 65 | a | 61 | 141 | 97 | |||
Ctrl-B STX | 02 | 002 | 2 | " | 22 | 042 | 34 | B | 42 | 102 | 66 | b | 62 | 142 | 98 | |||
Ctrl-C ETX | 03 | 003 | 3 | # | 23 | 043 | 35 | C | 43 | 103 | 67 | c | 63 | 143 | 99 | |||
Ctrl-D EOT | 04 | 004 | 4 | $ | 24 | 044 | 36 | D | 44 | 104 | 68 | d | 64 | 144 | 100 | |||
Ctrl-E ENQ | 05 | 005 | 5 | % | 25 | 045 | 37 | E | 45 | 105 | 69 | e | 65 | 145 | 101 | |||
Ctrl-F ACK | 06 | 006 | 6 | & | 26 | 046 | 38 | F | 46 | 106 | 70 | f | 66 | 146 | 102 | |||
Ctrl-G BEL | 07 | 007 | 7 | ' | 27 | 047 | 39 | G | 47 | 107 | 71 | g | 67 | 147 | 103 | |||
Ctrl-H BS | 08 | 010 | 8 | ( | 28 | 050 | 40 | H | 48 | 110 | 72 | h | 68 | 150 | 104 | |||
Ctrl-I HT | 09 | 011 | 9 | ) | 29 | 051 | 41 | I | 49 | 111 | 73 | i | 69 | 151 | 105 | |||
Ctrl-J LF | 0A | 012 | 10 | * | 2A | 052 | 42 | J | 4A | 112 | 74 | j | 6A | 152 | 106 | |||
Ctrl-K VT | 0B | 013 | 11 | + | 2B | 053 | 43 | K | 4B | 113 | 75 | k | 6B | 153 | 107 | |||
Ctrl-L FF | 0C | 014 | 12 | , | 2C | 054 | 44 | L | 4C | 114 | 76 | l | 6C | 154 | 108 | |||
Ctrl-M CR | 0D | 015 | 13 | - | 2D | 055 | 45 | M | 4D | 115 | 77 | m | 6D | 155 | 109 | |||
Ctrl-N SO | 0E | 016 | 14 | . | 2E | 056 | 46 | N | 4E | 116 | 78 | n | 6E | 156 | 110 | |||
Ctrl-O SI | 0F | 017 | 15 | / | 2F | 057 | 47 | O | 4F | 117 | 79 | o | 6F | 157 | 111 | |||
Ctrl-P DLE | 10 | 020 | 16 | 0 | 30 | 060 | 48 | P | 50 | 120 | 80 | p | 70 | 160 | 112 | |||
Ctrl-Q DCI | 11 | 021 | 17 | 1 | 31 | 061 | 49 | Q | 51 | 121 | 81 | q | 71 | 161 | 113 | |||
Ctrl-R DC2 | 12 | 022 | 18 | 2 | 32 | 062 | 50 | R | 52 | 122 | 82 | r | 72 | 162 | 114 | |||
Ctrl-S DC3 | 13 | 023 | 19 | 3 | 33 | 063 | 51 | S | 53 | 123 | 83 | s | 73 | 163 | 115 | |||
Ctrl-T DC4 | 14 | 024 | 20 | 4 | 34 | 064 | 52 | T | 54 | 124 | 84 | t | 74 | 164 | 116 | |||
Ctrl-U NAK | 15 | 025 | 21 | 5 | 35 | 065 | 53 | U | 55 | 125 | 85 | u | 75 | 165 | 117 | |||
Ctrl-V SYN | 16 | 026 | 22 | 6 | 36 | 066 | 54 | V | 56 | 126 | 86 | v | 76 | 166 | 118 | |||
Ctrl-W ETB | 17 | 027 | 23 | 7 | 37 | 067 | 55 | W | 57 | 127 | 87 | w | 77 | 167 | 119 | |||
Ctrl-X CAN | 18 | 030 | 24 | 8 | 38 | 070 | 56 | X | 58 | 130 | 88 | x | 78 | 170 | 120 | |||
Ctrl-Y EM | 19 | 031 | 25 | 9 | 39 | 071 | 57 | Y | 59 | 131 | 89 | y | 79 | 171 | 121 | |||
Ctrl-Z SUB | 1A | 032 | 26 | : | 3A | 072 | 58 | Z | 5A | 132 | 90 | z | 7A | 172 | 122 | |||
Ctrl-[ ESC | 1B | 033 | 27 | ; | 3B | 073 | 59 | [ | 5B | 133 | 91 | { | 7B | 173 | 123 | |||
Ctrl- FS | 1C | 034 | 28 | < | 3C | 074 | 60 | ₩ | 5C | 134 | 92 | | | 7C | 174 | 124 | |||
Ctrl-] GS | 1D | 035 | 29 | = | 3D | 075 | 61 | ] | 5D | 135 | 93 | } | 7D | 175 | 125 | |||
Ctrl-^ RS | 1E | 036 | 30 | > | 3E | 076 | 62 | ^ | 5E | 136 | 94 | ~ | 7E | 176 | 126 | |||
Ctrl_ US | 1F | 037 | 31 | ? | 3F | 077 | 63 | _ | 5F | 137 | 95 | DEL | 7F | 177 | 127 |
아스키코드표 출처 : http://cafe.daum.net/flowlife
형변환 Type casting
타입은 데이터를 저장하는 상자라고 생각하면 되므로
큰 상자 -> 작은 상자 (쌉가능)
작은 상자 -> 큰 상자 (어려움)
그러므로 크기가 큰 오른쪽의 상자를 작은 오른쪽의 상자에 맞게 깎아버림. ( a -> b로 맞춤)
Int a = 1;
byte b = (byte) a;
데이터의 크기 및 특징
byte | short | int | long | float | double |
1 | 2 | 4 | 8 | 4 | 8 |
boolean | char | long은 정수형 < float는 실수형으로 더 많이 표현 가능 | |||
크기는 같지만 문자형과 숫자형이기 때문에 형변환 필요 |
- 데이터의 크기가 작은 -> 큰 : 자동 형변환
- 데이터의 크기가 큰 -> 작은 : 캐스트 연산자 ( ) 사용
- 서로 다른 타입의 연산을 진행할 때는 큰 쪽으로 : 자동 형변환 -> 연산 진행
- int보다 작은 데이터 타입(byte,short,char)의 연산 : int형으로 형변환 (boolean 제외)
- 주의! 캐스트를 하면서 해당 값을 받을 수 없는 범위가 들어가면 잘려나간 값(쓰레기값)이 저장됨
다시 한 번 주의!
- 서로 다른 타입의 데이터 연산 -> 큰 타입 따라감
- byte, short, char (int보다 작은값)의 연산 -> 무조건 int (boolean 제외)
ex1)
byte b1 = 1oo;
byte b2 = 10;
byte b3 = (byte)(b1 + b2); // b1 + b2는 int이기 때문에 byte로 캐스팅
ex2)
system.out.print((char)('A' + 10)); //K
// char로 캐스팅 하지 않으면 문자'A' = int 65 이므로 65+10 = 75
// 75 == 'K'
연산자
- 변수의 값 변경, 대입에 사용
- 연산자에 따라 연산 대상이 될 수 있는 데이터 타입이 정해짐 ex) boolean 등
- 0으로 나눌 경우 오류 발생
단항 연산자
- ++, -- : 나 자신을 +1 시키겠다. (변수의 앞, 뒤) [증,감 연산자]
- ! : 반대의 의미 (boolean 앞) [논리 반대 연산자]
- type : 데이터 타입 변경 [캐스트 연산자]
- +, - : 양수와 음수 [부호 연산자]
- ~ : 비트의 값을 바꿔줌 [비트 반전 연산자]
2항 연산자
항이 2개
1. 산술 연산자
- +, -, * : 더하기, 빼기, 곱하기
- / : 나눈 몫
- % : 나눈 나머지 (항상 정수)
k % 2 == 0; // 2의 배수
k % 7 == 0; // 7의 배수
k % 2 == 0; // 짝수
k % 2 == 1; // 홀수
2. (boolean) 비교 연산자 -> true, false 반환
- <, <=, >, >= : 미만, 이하, 초과, 이상
- == : 같다
- != : 같지 않다
3. 비트 연산자 (잘 안씀)
두 수를 각각 2진수로 변환하여 두 수의 각 비트 연산을 수행
- & (비트곱): 두 비트가 1일 때 1, 나머지는 0.
- | (비트합): 두 비트 중 하나 이상이 1이면 1, 두 비트 모두 0이면 0.
- ^ (xor 배타적 논리합): 두 비트가 다르면 1, 같으면 0
4. 비트 이동 연산자
왼쪽 항의 값을 2진수로 변환 -> 오른쪽 항의 값만큼 비트를 왼쪽(<<), 오른쪽(>>)으로 이동
ex) int a = 192;
00000000 00000000 00000000 11000000
a << 3
00000000 00000000 00000110 00000000 //1536
5. (boolean) 논리 연산자 -> true, false 반환
- & : and, T + T = T, 나머지 F
- | : or, 한쪽이 T = T
- && : 왼쪽 항이 F, 오른쪽 항을 수행x = 무조건 F
- || : 왼쪽 항이 T, 오른쪽 항을 수행x = 무조건 T
- &&, ||을 short circuit operator
- &&, || 같이 있으면 && 먼저 연산
+ 대입 연산자
- 기본형은 =
- +=, -=, *=, /=, %=
int a = 1;
a = a + 3;
a += 3; // 나 자신을 3증가
a = a - 3;
a -= 3; // 나 자신을 3감소
3항 연산자
- 피 연산자가 3개인 연산자를 말합니다.
- ( 조건식 ? 연산식1 : 연산식2 )
: 조건식의 결과값이 참이면 연산식1, 거짓이면 연산식2를 실행하라.
- 조건식에는 boolean형 조건식이 들어갑니다.
연산자 순서
소괄호 -> 단항(앞에 붙은 ++,--,!) -> 이항(*,/,+,-) -> 삼항 -> 대입 -> a++(무조건 맨 마지막)
Scanner API
- 입력: System.in
- 출력: System.out
- 데이터들을 입력했다가
스트림이라는 통로를 통해서
콘솔에 출력함.
1. 스캐너 객체 생성
Scanner scan = new Scanner(System.in);
2. 입력 받을 데이터 타입에 따른 메서드 호출.
int a = scan.nextLine();
입력받고 변수 저장 scan.next(), scan.nextInt(), scan.nextDouble() 등
- next(): 문자열
- nextLine(): 공백 + 문자열
- nextInt(): 정수
- nextDouble(): 실수
3. 스캐너 객체 종료. - 닫으면 이후에 스캐너 이용X
scan.close();
+ Scanner 생성했을 때 느낌표 나오면 우클릭 후 import scanner 클릭
오늘 하루
기억에 남는 부분
- { } 범위 확인이 중요. 변수 설정시 { } 안에서만 사용 가능
- 산술연산자를 이용 짝수, 홀수, 배수 등 범위 지정
어려운 부분
- byte의 최소, 최대 크기를 이진법으로 나타내는 부분
- 연산자의 타입에 따라 나올 수 있는 형태가 다름 ex) 비교, 논리 연산자 => True, False
- 3항 연산자 조건식은 boolean형
문제해결 부분
- Scanner 생성 -> 변수 저장과 메서드 호출 -> 출력 -> 종료
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] for, 중복 for, 향상된 for(배열 담기) (0) | 2022.09.27 |
---|---|
[Java] 반복문(while, do~while, for) 02 + array (0) | 2022.09.26 |
[Java] 반복문(while) 01 (0) | 2022.09.23 |
[Java] 랜덤생성, array, 조건문(if, switch~case) (0) | 2022.09.23 |
[Java] Java언어, 이클립스 설치 및 변수 개념 (0) | 2022.09.20 |