package operator;
public class Operator01 {
public static void main(String[] args) {
/*
* 연산자
* 1. 산술 연산자
* +
* -
* * 곱셈
* / 나눗셈, 몫
* % 나눗셈, 나머지
*
* 자바는 정수 / 정수는 결과가 정수
* 3 / 2 => 1 소수 이하는 버림
* 실수 / 정수는 결과가 실수
* 3.0 / 2 => 1.5
* 정수 / 실수는 결과가 실수
* 3 / 2.0 => 1.5
*
* 2. 단항 연산자(+,-)
*
* 3. 증감 연산자
* ++ ++a a++ => a=a+1
* -- --a, a-- => a=a-1
* ++, -- 앞에 붙으면 나먼저 증/감 하고 계산식 참여
* ++, -- 뒤에 붙으면 계산식에 참여한 후 증/감
*
* 4. 문자열 결합(연결) 연산자
* 문자열 + 변수 => 문자열
* 문자열 + 숫자 => 문자열
* 숫자 + 문자열 => 문자열
* 변수 + 문자열 => 문자열
*
* String name = "홍길동";
* int num = 8;
*
* num + "3" => 83
* 45 + name => 45홍길동
*
* 5. 비교연산자 (결과가 true/false)
* >
* >=
* <
* <=
* ==
* !=
*
* 6. 논리연산자
* && : and, 그리고
* || : or, 또는
* & : and, 그리고
* || : or, 또는
* ^ : 배타적
* ! : 논리 부정(not)
* 7. 대입 연산자
* =
* += a+=3; => a=a+3
* -=
* *=
* /=
* %=
* 8. 삼항연산자
* 조건식? 조건식의 결과가 참일때 실행할 값 : 조건식의 결과가 거짓일 때 실행할 문장;
*
* */
/* 자바에서 자료형
* 1) 기본자료형(=타입, 형) : 메모리의 스택에 저장
* 정수 : byte : -128 ~ 127, 1byte 크기
* short : 2byte, -32768 ~ 32767
* char : 문자, 2byte, 음수 표현이 안됨, 0~65535
* 'A' 유니코드 65
* int : 4byte, 약 -21억 ~ +21억 사이
* 기본적으로 정수는 int
* long : 8byte, 숫자 l이나 L => 은행에서 쓰임
* ex) int a=4; long b=4L;
*
* 실수 : float : 4byte
* double : 8byte
* 자바는 기본 실수값은 double
* double d = 5.6;
* float f = 5.6f, 실수 뒤에 f, F를 붙여서 표현
*
* byte < short < int < long < float < double
*
* 논리형 : boolean => true, false
*
* 2) 자동 타입변환(혼자하는자바p.95)
* byte byte => 결과가 무조건 int
* short 연산자(+, -, *, /, %) short
* int int
*
* 정수자료형 연산자(+, -, *, /, %) 정수자료형 => 무조건 결과는 int
* 정수자료형 연산자(+, -, *, /, %) int => 무조건 결과는 int
* 정수자료형 연산자(+, -, *, /, %) long => 무조건 결과는 long
*
* jvm 은 기본적으로 4byte 단위로 연산을 처리
*
* 작은 자료형이 큰 자료형과 연산을 하면 큰 자료형으로 형변환(=타입변환, 자료형변환)
*
* 3) 강제 타입변환(casting 연산)
* - 타입 변환(=형변환) 연산자를 사용해 데이터 타입을 강제로 변환하는 연산
* - 타입 변환(=형변환) 연산자 : (타입)
* double avg = (double)sum/2;
* double avg = sum/(double)2;
*
* int num = 50;
* double doub = 40.7;
* num = doub + num; //컴파일 에러, 더블형 + 정수 => 더블형
* // 정수형 = 더블형 이기에 컴파일 에러
* num = (int)doub + num;
* num = (int)(doub + num);
* - 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개서 저장하는 것은
* 데이터 손실이 발생할 수 있음
* 작은 크기 타입 = (작은크기타입)큰크기타입
*
* - 주의사항
* 사용자로부터 입력받은 값을 변환할 때 값의 손실이 발생하면 안됨
* 강제 타입 변환을 하기 전에 우선 안전하게 값이 보존될 수 있는지 검사할 필요 있음
* 정수 타입을 실수 타입으로 변환할 때도 정밀도 손실을 피해야 함
*
* 2. 참조 자료형(=타입, 형) : 메모리의 힙 영역 저장
*
* 개념 정리
* - 문자 : ''
* '가', '1'
* - 문자열 : ""
* "abc", "A", "가", "1"
* - 변수(variable) : 하나의 값을 저장하기 위한 공간(가장 마지막에 들어온 값 하나만 저장)
* - 상수(constant) : 처음 값을 한번 저장하면 바꿀 수 없음
* 한번만 저장할 수 있는 그릇, 코드 중간에 값을 변수처럼 변경할 수 없음
* 선언하는 곳에서만 변경 가능
* 자바에서는 상수에는 final을 붙이고 상수명을 대문자 표현
* final 상수타입 상수명 = 값;
* final double PI = 3.141592;
*
* final int HEIGHT;
* HEIGHT = 20;
* - 리터럴(literal) : 그 자체로 값을 의미하는 것
* 10, 홍길동, ....
*
* 2. 참조 자료형(=타입, 형) : 메모리의 힙 영역 저장
*
*
* */
int score = 85;
char grade = (score > 90) ? 'A' : ((score>80) ? 'B' : 'C');
System.out.println(score);
}
}