자료들의 분류
효율적인 자료 처리
| 구분 | 종류 | 크기 | 설명 |
|---|---|---|---|
| 정수 | byte | 1바이트 | -128 ~ 127 |
| short | 2바이트 | +3만 정도 | |
| int | 4바이트 | ± 21억 정도 (리터럴 정수) | |
| long | 8바이트 | ± 21억 이상, 리터럴 뒤에 L/l | |
| 실수 | float | 4바이트 | 소수점 8자리, 리터럴 뒤 F/f |
| double | 8바이트 | 소수점 17자리(리터럴 실수) | |
| 논리 | boolean | 1바이트 | true / false |
| 문자 | char | 1바이트 | 유니코드, ''작은따옴표로 감싼 문자 |
| String | 클래스 | 클래스, ""큰따옴표로 감싼 긴 문자 |
Java는 다향성을 가짐
= 하나의 자료가 여러 개의 타입을 가질 수 있음
byte > short / char > int > long > float > double
byte byteValue = 10;
short shortValue = byteValue; // byte > short
int intValue = shortValue; // short > int
long longValue = intValue; // int > long
float floatValue = longValue; // long > float
double doubleValue = floatValue; // float > double, doubleValue = 10
double > float > long > int > short / char > byte
double dvalue = 3.14;
float fvalue = (float) dvalue; // double > float 으로 명시적 타입변환
long lvalue = (long) fvalue; // float > long `` // 손실발생 : 3.14 > 3
int ivalue = (int) lvalue; // long > int ``
short svalue = (short) ivalue; // int > short ``
byte bvalue = (byte) svalue; // short > byte ``
byte b1 = 10;
byte b2 = 20;
short s1 = 30;
int i1 = 40;
long l1 = 50;
float f1 = 3.14f;
double d1 = 41.25;
int result = b1 + b2; // byte + byte = int
int result2 = b1 + s1; // byte + short = int
int result3 = i1 + i1; // int + int = int
long result4 = i1 + l1; // int + long = long
float result5 = i1 + f1; // int + float = float
double result6 = i1 + d1; // int + double = double
| 연산자 | 설명 |
|---|---|
| 산술연산자 | +덧셈 -뺄셈 *곱셈 /나눗셈 %나머지 |
| 연결 연산자 | "문자열" + 10 = 문자열 10 피연산자 중에 문자열이 포함되면 산술이 아닌 문자열 연결 |
| 비교 연산자 | \< <= > >= == != 결과를 boolean 으로 반환 |
| 논리 연산자 | && and || or ! not |
| 증감 연상자 | 변수 값에 1 증가 or 감소 ++변수명 : 선위 증가 변수명++ : 후위 증가 --변수명 : 선위 감소 변수명-- : 후위 감소 |
| (복합)대입연산자 | = 오른쪽 값을 왼쪽에 대입 += -= *= /= %= 오른쪽 값을 왼쪽 값에 대해 연산한 후 대입 |
| 삼항연산자 | 조건 ? 참 : 거짓 조건1 ? 참1 : 조건2 ? : 참2 : 거짓 vs if문 |
| 문자열 비교 | "문자열A".equals("문자열B") |
public class Example {
public static void main(String[] args) {
int x = 10;
int y = -3;
// [1] 산술 연산자
System.out.println(x + y); // 7
System.out.println(x - y); // 13
System.out.println(x * y); // -30
System.out.println(x / y); // -3 : int/int >> 속성 int 이므로 소수점이 표시되지 않음
System.out.println(10.0 / 3.0); // double/double 이므로 소수점 표시
System.out.println(x % y); // 1
// [2] 연결 연산자
System.out.println(x + "개"); // 10개
// [3] 비교 연산자
System.out.println(x > y); // true
System.out.println(x < y); // false
System.out.println(x >= y); // true
System.out.println(x <= y); // false
System.out.println(x == y); // false
System.out.println(x != y); // true
// [4] 논리 연산자(관계 연산자)
System.out.println(x > 10 && x < 20); // and, false
System.out.println(y == 10 || y == 20); // or, false
System.out.println(!(x > 30)); // not(), true
// [5] 증감연산자
System.out.println(x++); // 10 출력 후 1 증가 : 11
System.out.println(++x); // 11에서 1 증가 후 출력
System.out.println(x--); // 12 출력 후 1 감소 : 11
System.out.println(--x); // 11에서 1 감소 후 출력
// [6] 복합 대입 연산자
int z = 30; // 30이라는 자료를 z에 대입
z += 10; // 40 // z + 10 후에 다시 z에 대입
z++; // 41
// [7] 삼항 연산자
System.out.println(x >= 60 ? "합격" : "불합격");
// [8] 문자열 비교와 리터럴 비교는 다르다.
// System.out.println( "10" == 10 ); // 에러발생!! 숫자 10과 리터럴 10은 서로 다름
//문자열 비교 : "문자열A".equals("문자열B")
System.out.println("10".equals("10"));
System.out.println("admin".equals("admin"));
}
}