bit : 최소단위
-상수의 데이터 타입
float a = 2.2F;
2.2는 기본으로 double 자료형을 가짐. 2.2F로 명시적으로 표시해줘야함.
자바에서는 에러남.
long a = 2147483648L;
long도 명시적으로 L표시를 해줘야함.
short나 byte는 상관없음.
1: 기본 int 형
1.1 : 기본 double 형
상수도 기본데이터타입이 정해져있다.
정수 200의 bit값 != 실수 200.0의 bit값
(정수 int는 4바이트, 실수 double은 8바이트(float는 4바이트))
형변환(Type conversion)
자동 형변환(암시적 형변환) (implicit conversion)
명시적 형변환 (explicit conversion)
-자동 형변환
double a = 3.0F : float -> double (큰것이 작은것을 흡수)
float a = 3.0 -> 오류 (float < double)
☞ 좁은 데이터 타입-> 넓은 데이터 타입만
크기순서:
byte -> short, char -> int -> long -> float -> double
(1-> 2-> 4->8 / -> 4-> 8)
연산:
int a = 3;
float b = 1.0F;
double c = a + b;
a = int b = float
a + b = 3.0F + 1.0F = 4.0F (float형으로 자동형변환)
-명시적 형변환(explicit conversion)
-> 자동형변환이 일어나지 않는 경우
float a = (float)100.0 : double -> float
+, - , * , / , % (이항연산자)
형변환
system.out.println(10/3) = 3.3333.....이여야하는데 -> 3
정수/정수 = 정수 -> 누락
10.0F/3.0F = 3.3333.....
실수/실수 = 실수 -> 손실 x
10/3.0F = 3.33333.....
정수/실수 -> 실수(자동형변환) (10이)
실수/정수 -> 실수 (10.0f/3에선 3이)
단항연산자
+3 : 양수
-3 : 음수
++ : 증가연산자
-- : 감소연산자
-system.out.println(++i) : i는 +1한 결과를 println
-system.out.println(i++) : println을 수행후 i를 +1
우선순위표는 생략.
Boolean : true, false (참, 거짓)
비교연산자
-== : 동등연산자
예) 1 == 2 -> false
"one" == "two" -> false (이것은 예시이며, 문자열은 이렇게 비교하지않는다. a.equals(b) 메소드를 사용함.)
-a != b : 같지않다
-!a : 부정
-a > b, a >=b: 부등호 (크기비교)
-.equals(): 문자열 비교 메소드
예)
String a = "Hello world";
String b = "Hello world";
System.out.println(a == b);
System.out.println(a.equals(b));
결과:
true
true