원지의 개발
article thumbnail
728x90

변수 사용범위

{ 변수가 선언된 {  }(중괄호) 안에서만 사용가능 } - 범위 확인 중요

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
 ex) 문자 - 숫자 - 유니코드

        가  - 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 생성 -> 변수 저장과 메서드 호출 -> 출력 -> 종료

728x90
profile

원지의 개발

@원지다

250x250