2022_09_21 정리
변수에서
main안에서 만들어진 변수는 지역변수라고 부름
변수는 해당 중괄호 안에서만 사용가능
정수형 (디폴트는 Int)
byte = 1byte (-128~127)
short = 2byte (-32768 ~ 32767)
int = 4byte (+- 21억)
long = 8byte (int허용 범위를 넘어가는 숫자는 long으로 저장)
실수형 (디폴트는 double)
float = 4byte (소수점 최대 7자리까지 표현 가능 )
double = 8byte (소수점 최대 15자리까지 표현 가능 )
실수형은 연산작업(+)을 할때 오차범위가 존재함 (반올림을 사용해서 해결가능)
논리형
boolean = true/false = 1bit
문자형
char = ''를 이용한 1글자만 저장 가능 (ex. 'a' // 'b' // 'c')
2byte (16칸 모두 사용)
아스키코드 -> 유니코드의 등장으로 2byte로 확장 되고 부호없는 비트값 65536개의 문자를 표기
string = ""를 이용한 문자열을 저장 가능 (ex. "abc" // "hello")
공백도 문자로 인식함 // 문자열은 +로 연결하면 붙인 결과를 가져온다.
문자열에 다른 타입을 붙이면 결과는 문자열이다.
데이터크기
byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)
char(2)
실수를 정수에 넣을땐 무조건 캐스팅을 해야한다. 안할시 컴파일 오류. (캐스팅하면 소수점부분이 사라짐)
Casting은 크기가 큰 타입을 작은 타입으로 변환할때 사용 (Type)
값 앞에 (type)을 붙힘으로 원하는 형식으로 캐스팅함.
캐스팅을 할때 주의할 점
해당 값을 받을 수 없는 범위가 들어오면 잘려나간 값이 저장된다.
ex) int 1000는 이진법으로 0011 1110 1000
byte로 변경할때 1110 1000을 제외한 앞은 버리게 됨으로 -24가 나옴
서로 다른 타입을 연산할땐 둘 중 큰쪽에 자동으로 맞춰서 연산함
int보다 작은 데이터타입은 자동으로 int로 형 변환 후 연산함
연산의 기준은 항상 int기 때문에 int보다 작다면 int로 변환됨.
연산자
단항연산자
++/-- 숫자 하나를 +/-시키는 연산자
+/- 양수나 음수를 나타내는 부호 연산자
! 논리 반전 연산자 !false / !true
(type) 캐스트연산자
2항연산자 //결과는 항상 int형으로 자동형변환
산술연산자 (+,-,*,/,%)
비교연산자 (<, <=, >, >=, ==, !=)
비교연산자의 결과는 boolean형 (true/false)로 반환함.
System.out.println(k % 2 == 0);
홀짝 구분할때 자주쓰는 문장
논리 연산자(&, |, &&, ||)
& // and // 양쪽 항이 모두 true일 때만 true값을 반환함
| // or // 둘중 한쪽이 true일 때 true값을 반환함
&& // and // 왼쪽 항이 false면 오른쪽을 확인하지 않고 false를 반환함 (false 밖에 답이 없는 상황)
|| // or // 왼쪽 항이 true면 오른쪽을 확인하지 않고 true를 반환 (true 밖에 답이 없는 상황)
&& ||를 short circuit operator라고 부름
&&, ||는 앞 항을 검사해서 결과가 정해지면, 뒤를 실행하지 않는다.
대입 연산자
+=, -=, *=, /=, %=
a=a+3 -> a+=3
a=a-3 -> a-=3 //이런식으로 줄여쓰기가 가능함
3항 연산자
(조건식? 연산식1 : 연산식2)
조건식의 결과값이 참이면 연산1 거짓이면 연산2를 실행
조건식에는 boolean형 조건식이 들어감
Math.random() = 0이상 1.0 미만의 랜덤 실수를 가져옴
계산순서
소괄호 -> 단항 -> 이항 -> 삼항 -> 대입 -> (++ --은 맨 마지막에함)
입출력
입력된 데이터가 지나다니는 통로는 스트림이라 부름
Scanner scan = new Scanner(System.in);
//빨간줄 클릭해서 import scanner
Scan.next() : 공백없는 문자열 입력
Scan.nextLine() : 공백포함 문자열 입력
Scan.nextInt() : 정수를 입력
Scan.nextDouble() : 실수를 입력